2016-05-23 9 views
0

GAMSを使用して問題をモデル化しようとしています。私は2つの質問があります:GAMSの決定変数をセットの形で初期化する+誤差が誤差を与える

1)デシジョン値Pを初期化するには?それは私が

SINRとSINRを計算しようとしている次のような形式

P(I)/

I1 25

I2 33 /

2)であることがsupose I(I)= e = hh(I)* P(I)/ sqr(sigma)+ sum(I、H(J、I)* P(I));

しかし、私はいつもセットが既にコントローラかドメイン発行のいずれかのエラーを持っています。どうすればこの問題を解決できますか?ユーザー/ I1、I2の

I番号/ /のJ1、J2と干渉しする

Jユーザ/反復の

反復回数を設定

CODEの

パート/ 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)= e = hh(I)* P(I)/ sqr(sigma)+ sum(I、H(J、I)* P(I));

ありがとうございます。

答えて

0

声明

SINRFUN(I).. SINR(I) =e= hh(I)*P(I)/sqr(sigma)+sum(I,H(J,I)*P(I)); 

我々は同じi上の和の内側に、その後i以上の暗黙のループを持っているし、問題を抱えています。これは数学的にあまりよく定義されていません。あなたは代入文でP(i)を初期化することができます

alias(i,ii); 
SINRFUN(I).. SINR(I) =e= hh(I)*P(I)/sqr(sigma)+sum(ii,H(J,ii)*P(ii)); 

parameter initp(i) /i1 25, i2 33/; 
p.L(i) = initp(i); 

.Lたちは、変数のレベル値に割り当てること(他の可能性は、.loのようなものですので、あなたのような何かを行うことができます.up.m:詳細については、ドキュメントを参照してください - いくつかのドキュメントを読むことはどんな場合でも有益かもしれません)。

+0

私は非常に感謝します。残念ながら、2番目の部分は機能しませんでしたが、ヒントは私にそれを解決する方法を見つけるのを助けました。ありがとうございました :) – Meriame