5

属性を取得することができません:私はことを読んgurobi - エラーコード= 10004 'X' 私のC++/gurobiファイルで、私はエラーを取得しています

'X' 属性を取得することができません

エラーコード= 10004をこれはラベルと関係がありますか?しかし、どのように問題があるのか​​分かりません。 一部の入力ファイルでは動作しますが、他の入力ファイルでは動作しません。だから私は付属品のおもちゃファイル、t5.txtを作成しました。このファイルは機能しませんが、最後の列を削除して8〜7に設定すると修正されます。私は困惑しています...

以下はmodel.writeの出力です。すべてが理にかなっているように見えますが、私の考えは間違っていますか? 私はmodel.write(test.sol)を行い、プログラムが停止し、そう>

添付ファイルソリューションに何か問題があるように思われるたび: main.cppに - >https://dl.dropboxusercontent.com/u/13564139/main.cpp

INPUT.TXT - >https://dl.dropboxusercontent.com/u/13564139/t5.txt

Maximize 
    15 student_has_projects4.1 
Subject To 
R0: student_has_projects0.0 + student_has_projects1.0 
    + student_has_projects2.0 + student_has_projects3.0 
    + student_has_projects4.0 + student_has_projects5.0 
    + student_has_projects6.0 + student_has_projects7.0 <= 4 
R1: student_has_projects1.0 + student_has_projects2.0 >= 1 
R2: student_has_projects2.0 + 2 student_has_projects5.0 <= 2 
R3: student_has_projects2.0 + 2 student_has_projects5.0 >= 1 
R4: student_has_projects0.0 + student_has_projects3.0 
    + student_has_projects4.0 + student_has_projects6.0 
    + student_has_projects7.0 >= 1 
R5: student_has_projects2.0 + student_has_projects5.0 <= 1 
R6: student_has_projects0.1 + student_has_projects1.1 
    + student_has_projects2.1 + student_has_projects3.1 
    + student_has_projects4.1 + student_has_projects5.1 
    + student_has_projects6.1 + student_has_projects7.1 <= 4 
R7: student_has_projects1.1 + student_has_projects2.1 >= 1 
R8: student_has_projects2.1 + 2 student_has_projects5.1 <= 2 
R9: student_has_projects2.1 + 2 student_has_projects5.1 >= 1 
R10: student_has_projects0.1 + student_has_projects3.1 
    + student_has_projects4.1 + student_has_projects6.1 
    + student_has_projects7.1 >= 1 
R11: student_has_projects2.1 + student_has_projects5.1 <= 1 
R12: student_has_projects0.2 + student_has_projects1.2 
    + student_has_projects2.2 + student_has_projects3.2 
    + student_has_projects4.2 + student_has_projects5.2 
    + student_has_projects6.2 + student_has_projects7.2 <= 4 
R13: student_has_projects1.2 + student_has_projects2.2 >= 1 
R14: student_has_projects2.2 + 2 student_has_projects5.2 <= 2 
R15: student_has_projects2.2 + 2 student_has_projects5.2 >= 1 
R16: student_has_projects0.2 + student_has_projects3.2 
    + student_has_projects4.2 + student_has_projects6.2 
    + student_has_projects7.2 >= 1 
R17: student_has_projects2.2 + student_has_projects5.2 <= 1 
R18: student_has_projects0.0 + student_has_projects0.1 
    + student_has_projects0.2 = 1 
R19: student_has_projects1.0 + student_has_projects1.1 
    + student_has_projects1.2 = 1 
R20: student_has_projects2.0 + student_has_projects2.1 
    + student_has_projects2.2 = 1 
R21: student_has_projects3.0 + student_has_projects3.1 
    + student_has_projects3.2 = 1 
R22: student_has_projects4.0 + student_has_projects4.1 
    + student_has_projects4.2 = 1 
R23: student_has_projects5.0 + student_has_projects5.1 
    + student_has_projects5.2 = 1 
R24: student_has_projects6.0 + student_has_projects6.1 
    + student_has_projects6.2 = 1 
R25: student_has_projects7.0 + student_has_projects7.1 
    + student_has_projects7.2 = 1 
Bounds 
Binaries 
student_has_projects0.0 student_has_projects0.1 student_has_projects0.2 
student_has_projects1.0 student_has_projects1.1 student_has_projects1.2 
student_has_projects2.0 student_has_projects2.1 student_has_projects2.2 
student_has_projects3.0 student_has_projects3.1 student_has_projects3.2 
student_has_projects4.0 student_has_projects4.1 student_has_projects4.2 
student_has_projects5.0 student_has_projects5.1 student_has_projects5.2 
student_has_projects6.0 student_has_projects6.1 student_has_projects6.2 
student_has_projects7.0 student_has_projects7.1 student_has_projects7.2 
End 

答えて

6

問題は、コールが実行不可能状態にある()の結果を.optimizeするので、あなたのLPのインスタンスが実行不可能であるということです。あなたのコードから

model.write("test2.lp"); 
model.optimize(); 
model.write("forum2.sol"); 

if(model.get(GRB_IntAttr_Status) != GRB_OPTIMAL){ 
    cout << "niet optimaal " << endl; 
} 

成功を確認する前に、.solファイルを作成しています。 Gurobiは.solファイルを書き込むときに変数から 'X'属性を取得します。最適化が失敗した場合、 'X'属性は使用できず、例外がスローされます。 .solファイルを作成する前に、または 'X'、 'Pi'、 'ObjVal'などの多くの属性を取得する前に、gurobiに解決策があることを確認する必要があります。 OPTIMAL status codesは利用可能な解決策があることを保証しますが、SUBOPTIMALのようなコードは利用可能な解決策があり、TIME_LIMIT、NODE_LIMITなどの解決策がある可能性があることを示しています。利用可能な解決策があることを明確に示すために、属性SolCountを得ることができます。

制約(R1、R7、R13は学生1と2に少なくとも3つのプロジェクトが必要であることを意味するので、問題インスタンスは実行不可能ですが、制約(R19、R20)はそれぞれ1つのプロジェクトを正確に持つことができます。 IISのソルバーを使用します。インタラクティブgurobiであなたは、私はちょうど私は、彼らが実行不可能なところことがわかった書き込みについてだった。それが実現可能にするために、いくつかの修正(すなわちダミーインスタンス)を追加しました。未Irreducible Inconsistent Subsystem

m = read("test2.lp") 
m.optimize() 
m.computeIIS() 
m.write("test2.ilp") 
+0

をゲットすることができます本当に明確なエラーメッセージ。 – dorien

関連する問題