モデル ファイルに次の問題があります。CPLEX ソルバーが最初に括弧内のアクションを実行してから乗算したいと考えています。通常の数学と同様に....しかし、この制約でモデルファイルを実行すると:
subject to c4a {e in E, k in K, o in O}:
f[k,o] = 0
==>
delta[e,k,o] - p[k,e] * (sum{l in K}(b[l,e]*(1-f[l,o]))) = 0
else
delta[e,k,o] = 0;
ここで、E、K、O はセットです。delta、f はバイナリ変数です。そして残りはパラメータです。この括弧で前に説明した問題があります: "(1-f[l,o])"。サンプル データ ファイルを解決しようとすると、次のバグが発生します。
CPLEX 11.2.0: logical constraint _slogcon[1] is not an indicator constraint.
expand _slogcon[1];
subject to c4a['1_2',2,'o1']:f[2,'o1'] == 0 ==> delta['1_2',2,'o1'] - (3 - f[2,'o1'] - f[3,'o1'] -
f[4,'o1']) == 0 else delta['1_2',2,'o1'] == 0;
ここでは、最初の CPLEX ソルバーがブラケットの要素を b[l,e] で乗算し、それらを追加しようとしていることがわかります。私の質問は次のとおりです。この状況を回避するにはどうすればよいですか?