如何在GAMS的循环中编写循环

时间:2012-03-05 20:40:09

标签: loops gams-math

我有一个确定性模型,我希望每次更改两个参数Var1Var2时多次运行我的模型,以便了解它们如何影响结果。 我可以这样总结一下我的模型:

...
equations obj,a,b;

obj...  Ax+By=e=cost;
a...    x+y=l=var1 * z1;
b...    x+y=l=var2 * z2;

solve;
dispaly cost.l;
dispaly y.l;
dispaly x.l;

其中x,y是变量,var1,z1,var2和z2是参数。我想为var1尝试10个不同的值,为var2尝试10个不同的值,并得到结果。

请告诉我这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您可以查看here如何使用循环语句。

在你的情况下,你必须定义一个10个值的集合i和两个参数var1_values(i),var2_values(i)。

在你的循环中你必须包括

var1 = var1_values(i);
var2 = var2_values(i);
solve;
*you can also store values to new parameters
display cost.l;
display y.l;
display x.l;

但不是等式。您可能有意地从solve语句中省略了信息,但您必须指定要解决的模型以及是否要最小化或最大化变量(在本例中可能是obj)。如果您不指定此项,GAMS会找到一个可行的解决方案,该解决方案在您的模型中不是唯一的。