2017-06-21 10 views
0

私はノードiのセットを持っていて、エイリアス(i、j)を作成しました。今私はi要素をjにマップする必要があるパラメータc(i、j)を持っています。たとえば、 set i /a,b,c/ ; alias (i,j) ; c(i,j) /#i.#j/ ;GAMSの条件を設定する

ドット演算子は、含まれたくないa.a、b.b、c.cなどのすべての要素をマップします。 a.b、a.c、b.cだけが考慮されるような条件を書くにはどうすればよいですか?

おかげ

答えて

1

私はあなたが何をしたいのか、正確にわからなかったが、次のコードに2つの割り当ての一つは、あなたが必要なものを行う必要があります。

set i /a,b,c/ ; 
alias (i,j) ; 
set c(i,j); 

c(i,j) = not sameas(i,j); 
display c; 
$ontext 
Results in: 
----  6 SET c 

      a   b   c 

a      YES   YES 
b   YES      YES 
c   YES   YES 
$offtext 

c(i,j) = ord(i) < ord(j); 
display c; 
$ontext 
Results in: 
----  27 SET c 

      b   c 

a   YES   YES 
b      YES 
$offtext 

ベスト、 ルッツ

+0

働いていただきありがとうございます。また、変数の1つに同じような問題があります。同じ代入を入力しようとすると、_a missing suffix_というエラーがポップアップします。とにかくそれを回避するには? –

+0

セットとパラメータとは対照的に、変数(と方程式)には異なる属性が割り当てられるため、接尾辞を使用してアドレス指定するフィールドを指定する必要があります(https://www.gams.com/latest/を参照)。 docs/userguides/userguide/_u_g__variables.html#UG_Variables_VariableAttributes)。 したがって、変数xの上限をiとjに依存して設定したいとします。次に、あなたはすることができます:x.up(i、j)= 50; – Lutz

+0

私のプログラムは、_x(i、j)_と_z(u、v、i、j)_の_i、a、b、c、d、e/_と3つのエイリアスセット_j、バイナリ変数。どのような時点でも、変数への代入は、たとえば_z(u、v、i、j)_の場合のように常にユニークであるように解決しようとしています。 d、b、c)_または_(b、d、a、b)_を入力します。私は_iをj_と等しくなく、_uがv_と等しくないようにしたい。 –

関連する問題