0

谁能帮我解决这个问题。我想一个一个地添加到 i 并在每个步骤中使 x(i) 的数量等于 1,所以我写如下但它不起作用

loop(i,
    x('0')=1;
    t('0')=1;
while(t>m,
      ord(i)=ord(i)+1;
      display i;
      x(i)=1;
      display x;
      t(i)=t(i-1) +1;
   );
 );

顺便说一下,m 是一个在此之前计算的变量,在一个方程中。

4

2 回答 2

1

如果m是之前求解的模型中的变量,则应使用.l属性检查其级别:

...
while(t>m.l,
...
于 2016-01-07T11:13:58.867 回答
0

查看此页面以更好地了解如何在 GAMS中创建while 循环。另请查看此代码,因为它可能对您有所帮助:

root=minroot;
*find a sign switch
while(signswitch=0 and root le maxroot,
   root=root+inc;
   function_value2= a-b*root+c*sqr(root);
   if((sign(function_value1) ne sign(function_value2)
      and abs(function_value1) gt 0
      and abs(function_value2) gt tolerance),
         maxroot=root;
         signswitch=1
   else
      if(abs(function_value2) gt tolerance,
         function_value1=function_value2;
         minroot=root;);
      );
*  display 'inside',minroot,maxroot,function_value1,function_value2;
);
于 2015-11-01T21:09:27.910 回答