以集合+方程的形式初始化GAMS中的决策变量会产生错误

initialize decision variables in GAMS in form of a set + equation gives errors

我正在尝试使用 GAMS 对问题建模。我有 2 个问题:

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

但是,我总是得到一个错误,要么是集合已经是控制器,要么是域问题。我该如何解决这个问题?

代码的一部分

set

I number of users /i1,i2/

J users to interfer with /j1,j2/

iteration number of iterations /1/ ;

Parameters

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 

; >

Variables

P(I)

F

lambda

SINR(I)

b(I)

a(I)

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

提前谢谢你。

声明

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:更多信息请参阅文档信息——阅读一些文档在任何情况下都可能是有益的)。