#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 /… ).