В GAMS, как заменить индекс параметром?
Sets
i / 1, 2 /;
Parameters
j(i) / 2, 1 /;
Variables
x(i);
Итак, здесь у меня есть индекс i, параметр, который зависит от i, который дает те же значения, что и i, и переменная, которая зависит от x.
Если я хочу получить x(2), я, конечно, мог бы написать x(2), но что, если бы я хотел написать x(j(1)). Поскольку j(1) = 2, это должно быть то же самое, но GAMS это не нравится, и он говорит, что ожидал множество.
Как я могу это сделать?
2 ответа
Вы можете использовать отображение: см. Пример ниже, который отображает x(1) в P(2) и x(2) в P(1), используя отображение j, которое отображает 1 в 2 и 2 в 1.
Set i / 1, 2 /;
alias(k,i);
set j(i,k) /
1.2
2.1
/;
parameter P(i);
P("1") = 10;
P("2") = 20;
Variables
x(i);
loop(j(i,k), x.l(k) =P(i));
execute_unload "test.gdx";
Не уверен, правильно ли я понимаю вопрос, но, может быть, вы просто имеете в виду x(i) = j(i)? Тогда для всех заданных элементов i x будет принято одинаковое значение j. Если вы хотите только первый элемент набора: x("1") = j("1"). j("1") = 2, поэтому x ("1") тоже будет равно 2.