1

私はMathProgで一見単純なモデルに苦労しています。モデルは次のとおりです。

set W;
set V;

param b {W, V} binary;
param p;

var w {j in W} <= 0, >= 1;

minimize obj: 0;

subject to within_radius_of {i in V}:
    sum {j in W} b[i,j] * w[j] >= 1;

subject to p_limit:
    sum {j in W} w[j] <= p;

end;

実行するとエラーが発生しますfeasibility.glp:11: b[v1,w1] out of domain。何が悪いのかわかりません。さらに奇妙なことに、関連する行を変更するとb[j,i]、まったく同じエラーが発生し続けます(b[w1,v1]予想どおりではありません)。

私はAMPLダイエットの例を注意深く調べましたが、モデルの関連部分に違いは見られませんでしたが、それでも機能しません。なにが問題ですか?

4

1 に答える 1

0

パラメーターbは次のように宣言されてbinaryいるため、値 0 または 1 のみを取ることができます。データ ファイルを指定していませんが、エラー メッセージは、データbがドメイン外 (0 または 1 ではない) であることを示しています。次に例を示します。

data;
set W := w1;
set V := v1;
param b := w1 v1 0.5;

この場合、AMPL はより詳細なエラー メッセージを表示します。

error processing param b['w1','v1']:
    failed check: param b['w1','v1'] = 0.5
        is not binary (0 or 1);

この場合、インデックスの順序が問題にならない理由はb、モデルが実際にインスタンス化される前にデータが完全にチェックされるためです。そのため、データファイルでw1v1が交換されている可能性があります。

于 2012-07-05T00:22:15.863 に答える