【问题标题】:GAMS - Integer variable as indexGAMS - 整数变量作为索引
【发布时间】:2018-10-18 18:22:11
【问题描述】:

让我们考虑一个参数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

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

【问题讨论】:

  • 可以注意到A的索引和它的值之间的关系不是线性,这意味着我们不能迭代A并将值乘以B.

标签: gams-math


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多