Loops 循环优化

Loops 循环优化,loops,gams-math,Loops,Gams Math,我一直在尝试循环一个优化问题,每次只改变一个参数,以执行灵敏度分析。然而,每次我执行循环时,它只使用其中一个参数。所以我会得到同样的结果30次 这就是需要更改参数的地方 Set n /i1*i30/ Parameter X0(i) household consumption of the i-th good F0(h,j) the h-th

我一直在尝试循环一个优化问题,每次只改变一个参数,以执行灵敏度分析。然而,每次我执行循环时,它只使用其中一个参数。所以我会得到同样的结果30次

这就是需要更改参数的地方

Set n   /i1*i30/

Parameter                         
                X0(i)           household consumption of the i-th good
                F0(h,j)         the h-th factor input by the j-th firm
                Z0(j)           output of the j-th good
                FF(h)           factor endowment of the h-th factor
                RT0(j)          Monopoly rents
                gamma           Price elasticity of demand
                gamma_l(n)      Different gamma /i1 1.1, i2 2,i3 3, i4 4, i5 5, i6 6, i7 7,i8 8, i9 9,i10 10, i11 11,i12 12, i13 13, i14 14, i15 15, i16 16, i17 17, i18 18,
                                                i19 19, i20 20, i21 21, i22 22, i23 23, i24 24, i25 25, i26 26, i27 27, i28 28, i29 29, i30 30/
                results_UU(n)
                results_px(i,n) Prices for goods
                results_x(i,n)  Quantities of goods
eta             Elasticity of substitution
                ;

X0(i)   =SAM(i,"HOH");

gamma= 1.1;
eta=(gamma-1)/gamma;
这是优化的循环

loop(n,
gamma=gamma_l(n);
Solve splcge maximizing UU using nlp;
results_UU(n)=UU.l;
results_px(i,n)=px.l(i);
results_x(i,n)=X.l(i)
;);

你忘了更新这篇文章了吗:eta=(gamma-1)/gamma;?你是说循环本身<代码>循环(n,gamma=gamma_l(n);eta=(gamma-1)/gamma;使用nlp求解splcge最大化UU;结果_UU(n)=UU.l;结果_px(i,n)=px.l(i);结果_x(i,n)=x.l(i)它不会自动更改,因为它不是模型中的方程式,而是一次性数据分配。如果你想在改变gamma时更新它,你需要这样做,或者把eta作为一个变量,加上eta=E=(gamma-1)/gamma作为一个等式。是的,这很有效。我只需要在循环中插入初始化方程,如so
loop(n,gamma=gamma_l(n);eta=(gamma-1)/gamma;RT0(j)=(1-eta)*X0(j);F0(h,j)=SAM(h,j)-SAM(h,j)/sum(k,SAM(k,j))*RT0(j);Z0(j)=sum(h)(j,F0)(h)(h,F0(h,j));使用nlp求解最大化UU的SPLE;结果_-UU(n,j)=UU(n.l);结果(I),px(I),结果)=X.l(i);)非常感谢您的快速帮助!