1

いくつかの時間的制約といくつかの「これらのルートを満たさなければならない」制約を受けるシステム内のフローの量を最大化したい最適化を行うつもりです。最初の時間制約は、各車両が 24 時間の作業負荷 (分単位) を超えてはならないことを示しています。2 番目の時間制約は、サブツアー削除制約であり、車両が移動する時間がある前に「訪問」ノードでの開始時刻をアクティブにすることはできないなどとも述べています。回、いずれかの車両を使用 k. 最後の制約は、特定のノードからのすべての車両が 1 日の終わりに戻る必要があることを示しています。

 maximize maxamount: sum{i in V, j in V, k in K} x[i,j,k];

 subject to TimeConstraint {k in K}: 
     sum{i in V, j in V} traveltime[i,j]*x[i,j,k] <= 1440; 

 subject to StartTime{i in V,j in V, k in K}:
     starttime[i] + servicetime[i] +traveltime[i,j] - 1300 * (1 - x[i,j,k]) <= starttime[j];

 subject to Constraint3:
     sum{k in K} x["K1","N1",k] <= 9;

 subject to EndNode{k in K}: 
     sum{i in V}x[i,"K1",k] - sum{j in V} x["K1",j,k]= 0;

Constraint3 と EndNode には、同じタイプの制約がさらにいくつかあります (たとえば、K1 と N2 の間の道路は 4 回の訪問を超えることができないなど、他の「事前定義された場所」を使用するだけです)。

私の問題は、Impossible deduced bounds x[K1,K1,1] has lower bound = 0 and upper bound = -76 というエラーが発生することです。これは、競合する制約に起因すると理解しています。ただし、私の質問は次のとおりです。ほとんどバイナリ変数のみを使用しているため、上記のコードが機能しない理由がわかりません。モデルで実際に行っていることを誤解していませんか?

i=j の場合にのみコンパイラが文句を言うことに気付いたので、.dat ファイルを調べたところ、i=j の場合の i と j の間の移動時間が非常に長いことに気付きました (そのため、プログラムはこれらのルートを選択しません)。ただし、その .dat ファイルを編集して TimeConstraints の制限を超えないようにすると、同じエラーが自動的に発生します (ただし、上限は -76 ではなく -1 になりました)。

誰かがこれに光を当ててくれることを願っています

前もって感謝します

4

1 に答える 1