GAMS- неконтролируемый набор, введенный как константа

#gams-math

#gams-математика

Вопрос:

Рассмотрим следующую проблему в GAMS. У меня есть два непересекающихся набора: i и j . Это правильные подмножества подмножества k , где объединение i и j в точности равно элементам k . Я хочу создать новую переменную X ( k ) (для соответствующего подмножества), то есть объединение A ( i ) и B ( j ). Интуитивно я хочу объявить:

 parameter 
X(k);

X(k)=A(i) B(j);
  

Конечно, эта операция не является законной, поскольку i и j не соответствуют. Но идея состоит в том, чтобы взять значения из A (i) для i элементов X (k), а остальные должны быть взяты из B (j). Любая помощь по этому вопросу очень ценится!!

Ответ №1:

Это звучит как идеальный пример для определения неявного набора. Итак, вы можете сделать следующее:

 Set
   k
   i(k<)    / i1*i3  /
$onMulti
   j(k<)    / j1*j3  /;
   
parameter X(k);
  

Проверьте это для получения дополнительной информации:

https://www.gams.com/32/docs/UG_SetDefinition.html#UG_SetDefinition_ImplicitSetDefinition

Комментарии:

1. Большое вам спасибо! То, что я сделал до вашего ответа, заключалось в том, чтобы объявить first X(*). По-видимому, это позволило мне объявить X как находящийся в неопределенном измерении. Затем я устанавливаю X (i)= A (i) и X (j)= B (j). Похоже, что операция, обратная той, которую вы опубликовали?

2. Я думаю, то, что вы сделали, каким-то образом сработало, но вы потеряли возможность проверки домена (см. gams.com/32/docs /… ).