次のように定義された Rest という変数があります。
var Rest{I,J,T} >= 0;
ここで、T は期間のセットで、I と J はアークです。T = 0 の場合、I と J のすべての値が 0 でなければならないことを定義する必要があります。I は供給ノードのセットであり、J は需要ノードのセットです。
私はもう試した:
let Rest[*,*,0] default 0;
しかし、構文エラーが発生しました。:= と : の両方を使用して、.dat ファイルと .mod ファイルの両方でこれを試しました。
これも.datファイルに入れようとしました
var Rest default 0:=
[*,*,0] 1 City1 0;
しかし、それは私にエラーを与えました
Error at _cmdno 3 executing "solve" command
(file amplin, line 286, offset 11443):
error processing constraint Constraint1[1,'Leveaniemi',1]:
invalid subscript Rest[1,'City1',0]
前もって感謝します!
編集:私は今使用します:
var Rest default 0 :=
[*,*,0] 1 Leveaniemi 0;
私にエラーを与える
Error at _cmdno 3 executing "solve" command
(file amplin, line 286, offset 11438):
error processing constraint Constprocessing commands.
Executing on neos-3.neos-server.org
Error (2) in /opt/ampl/ampl -R amplin
(NEOS サーバー、Gurobi ソルバーを使用しています)。これはどういう意味ですか?また、変数 Rest をそのように宣言すると、すべての Rest ソリューションが 0 になりますか? それとも、コンパイラはそれを開始値として解釈しますか?
編集: vitaut が提供するソリューションを実装しようとしました。ただし、その返信の下のコメントに示されているように、機能しませんでした。T を次のように定義したので、私はそれを考えました:
set T := 1 2 3 ... 15;
t = 0 で let ステートメントを実行したかったので、それを考慮して、Rest を次のように定義する必要があります。
var Rest{I,J,TimeT};
ここで、TimeU は T であり、要素が 0 のみのセットです。つまり、TimeU は次のように解釈されます。
TimeU := 0 1 2 3 ... 15;
ただし、これらを修正すると、コンパイラは、すべての変数とパラメーターが既に定義されていると不平を言います。