以集合+方程的形式初始化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
:更多信息请参阅文档信息——阅读一些文档在任何情况下都可能是有益的)。
我正在尝试使用 GAMS 对问题建模。我有 2 个问题:
1) 如何初始化decesion值P?它应该是以下形式
P(I)/
i1 25
i2 33 /
2) 我正在尝试按照
中的方式计算 SINRSINR(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
:更多信息请参阅文档信息——阅读一些文档在任何情况下都可能是有益的)。