数理最適化セミナーのご案内

12.9 定数および式の漸化式の禁止

 C++SIMPLE では定数(Parameter)および式(Expression)の漸化式を記述することはできません.具体的には,代入時に左辺と右辺で同じ添字を使う記述ができません.

 例えば,以下のような関係式を持つ定数を考えます.

\[a_{i+1} = a_{i} + 2\]

 定数 $a_0 = 1$ であれば,$a_1 = 3, a_2 = 5$ となります.これを C++SIMPLE で以下のように記述することはできません.

// これは NG
Parameter a(index=i);
a[i+1] = a[i];

 このような定数を実現する場合は,モデルファイルの外で実現させる必要があります.

 式についても同様に,以下のように記述することはできません.

\[e_{i+1} = e_{i} + 2\]

 この場合,変数(Variable)を用いて記述することは可能です.以下は変数を用いて上記の記述を代替する場合のイメージです.

x[i] == e[i];
x[i+1] == x[i] + 2;

 ただし,このような場合は,制約式(上記の例では x[i+1] == x[i] + 2;)が生じることになりますのでご注意ください.


 

 

上に戻る