В 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.

Другие вопросы по тегам