2015-11-01 3 views
0

Может ли кто-нибудь помочь мне с этой проблемой, пожалуйста. Я хочу добавить к I по одному и поставить количество х (I), равная 1 в каждом шаге, поэтому я написал его, как показано ниже, но это не работаетКак написать цикл while в GAMS

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; 
    ); 
); 

И кстати м переменная который вычисляется до этого, в уравнении.

ответ

0

Посмотрите на это page, чтобы лучше понять, как сделать во время цикла в GAMS. Также обратите внимание на этот код, потому что это может помочь вам:

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; 
); 
+0

Спасибо, но мой проблема - это M, которая является переменной –

+0

Невозможно ли написать цикл while на основе переменной? –

0

Если m является переменной от модели, которая была решена до того, вы должны проверить его уровень с помощью .l атрибута:

... 
while(t>m.l, 
...