GAMS-整数变量作为索引

时间:2018-10-18 18:22:11

标签: gams-math

让我们考虑一个参数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在定义方程式profit的那一行返回以下错误:

Set expected

有没有办法实现我的目标?

1 个答案:

答案 0 :(得分:1)

您可以使用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;