我有一个确定性模型,我希望每次更改两个参数Var1
和Var2
时多次运行我的模型,以便了解它们如何影响结果。
我可以这样总结一下我的模型:
...
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个不同的值,并得到结果。
请告诉我这样做的最佳方式是什么?
答案 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会找到一个可行的解决方案,该解决方案在您的模型中不是唯一的。