我如何为一组使用 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];