我正在尝试使用GAMS建模问题。我有两个问题:
1)如何初始化decesion值P?它应该采用以下形式
P(I)/
i1 25
i2 33 /
2)我正在尝试计算SINR,如
SINR(I)= e = hh(I)* P(I)/ sqr(sigma)+ sum(I,H(J,I)* P(I));
然而,我总是犯了一个错误,要么该集合已经是控制器或域名。我该如何解决这个问题?
部分代码
组
我的用户数量/ i1,i2 /
J用户干扰/ j1,j2 /
迭代迭代次数/ 1 /;
参数
CP(I) circuit power per user / i1 10 i2 10 / hh(I) channel quality / i1 48 i2 106 / Sigma Noise /0.0057/ tol tolerence value /0.01/ minRate minimum rate /0.1/ maxiter max number of iterations /3/ ;
Table H(J,I) interference value
> i1 i2
>
> j1 0 18.8030
>
> j2 8.9555 0
>
变量
P(I) F lambda SINR(I) b(I) a(I)
方程式Objectivefun,SINRFUN,lambdaFUN,RateFUN,afun,bfun, nonlconfun;
SINRFUN(I).. SINR(I)= e = hh(I)* P(I)/ SQR(SIGMA)+ SUM(I,H(J,I)* P(I));
提前谢谢你。
答案 0 :(得分:0)
声明
SINRFUN(I).. SINR(I) =e= hh(I)*P(I) / sqr(sigma)+sum(I,H(J,I)*P(I));
有一个问题,我们有i
的隐式循环,然后在同一个i
的总和内。这在数学上没有很好地定义。所以你可以这样做:
alias(i,ii);
SINRFUN(I).. SINR(I) =e= hh(I)*P(I) / sqr(sigma)+sum(ii,H(J,ii)*P(ii));
您可以使用赋值语句初始化P(i)
:
parameter initp(i) /i1 25, i2 33/;
p.L(i) = initp(i);
.L
表示我们分配了变量的级别值(其他可能性包括.lo
,.up
,.m
:有关详细信息,请参阅文档 - - 阅读一些文档可能在任何情况下都是有益的)。