как я могу использовать 2 разных индекса для одного набора? - PullRequest
0 голосов
/ 09 июля 2019

Предположим, у меня есть следующие наборы и параметр:

 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;

param 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 и добавить их с 3 * данными от двух других членов первой семьи. то есть:

   3+3*(2+8) 
 same for another family.

как я могу это закодировать?

1 Ответ

1 голос
/ 10 июля 2019

Как на счет этого?

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];
...