我如何为一组使用 2 个不同的索引?
how I can use 2 different indices for one set?
假设我有以下集合和参数:
param n; #number of individual
param f; #number of household
set N, default{1..n}; #set of individuals
set F, default{1..f}; #set of family
set E, within F cross N;
param H{E};
param G{E};
var O;
参数 L{E};
F是家庭指数,N是每个家庭的人数指数。我想为每个家庭做一些计算,我将用以下数据解释它:
set E:=
1 1 # first family first person
1 2 # first family second person
1 3 # first family third person
2 1 # second family first person
2 2 ; # second family second person
param G :=
1 1 3
1 2 4
1 3 5
2 1 6
2 2 7;
param H:=
1 1 10
1 2 2
1 3 8
2 1 3
2 2 9;
在第一个家庭中,我想添加来自 G 的第一个人的数据,并将其与来自第一家庭中其他 2 个成员的数据相加 3*。即:
3+3*(2+8)
same for another family.
我该如何编码?
这样的怎么样?
G[1,1] + 3 * sum {i in N: (1,i) in E and i <> 1} H[1,i];
或者,假设您要为一般家庭 fam
和个人 ind
(不仅仅是家庭 1 和个人 1)执行此操作:
G[fam,ind] + 3 * sum {i in N: (fam,i) in E and i <> ind} H[fam,i];
假设我有以下集合和参数:
param n; #number of individual
param f; #number of household
set N, default{1..n}; #set of individuals
set F, default{1..f}; #set of family
set E, within F cross N;
param H{E};
param G{E};
var O;
参数 L{E};
F是家庭指数,N是每个家庭的人数指数。我想为每个家庭做一些计算,我将用以下数据解释它:
set E:=
1 1 # first family first person
1 2 # first family second person
1 3 # first family third person
2 1 # second family first person
2 2 ; # second family second person
param G :=
1 1 3
1 2 4
1 3 5
2 1 6
2 2 7;
param H:=
1 1 10
1 2 2
1 3 8
2 1 3
2 2 9;
在第一个家庭中,我想添加来自 G 的第一个人的数据,并将其与来自第一家庭中其他 2 个成员的数据相加 3*。即:
3+3*(2+8)
same for another family.
我该如何编码?
这样的怎么样?
G[1,1] + 3 * sum {i in N: (1,i) in E and i <> 1} H[1,i];
或者,假设您要为一般家庭 fam
和个人 ind
(不仅仅是家庭 1 和个人 1)执行此操作:
G[fam,ind] + 3 * sum {i in N: (fam,i) in E and i <> ind} H[fam,i];