GAMS - 整数变量作为索引

GAMS - Integer variable as index

让我们考虑一个采用非负索引和 returns 整数的参数 A。我想在优化过程中使用A的值,所以我创建了一个整型变量B。我的目标是使用 B 作为 A 参数 ,以便优化器可以选择 最佳索引 优化模型。

以下代码是我尝试做的示例:

parameter A(*)  "Parameter A"   /
    0 0,
    1 10,
    2 30,
    3 45,
    4 82
    /;

display A;

integer variable B  "Integer B, used as an index for parameter A";
free variable z     "Variable to maximize";

equations profit    "Profit";

profit..    z =e= A(B);

model m / all /;
solve m using MIP maximizing z;

当我尝试编译它时,GAMS returns 在我定义方程 profit:

的行中出现以下错误
Set expected

有没有办法实现我想做的事情?

您可以使用 n 个二进制变量而不是整数变量(在解决方案中只有一个可以是 1)并将它们与 A 耦合。可能看起来像这样:

Set i /0*4/;

parameter A(i)  "Parameter A"   /
    0 0,
    1 10,
    2 30,
    3 45,
    4 82
    /;

display A;

binary variable B(i);
free variable z     "Variable to maximize";

equations profit    "Profit"
          oneB;


profit..    z =e= sum(i,A(i)*B(i));
oneB..      sum(i,B(i)) =l= 1;

model m / all /;
solve m using MIP maximizing z;