混合整数問題に対する私の理解が正しいかどうかを確認するために、MathProg 言語を使用して問題を作成しました。しばらくして私はそれを理解することができたので、この解決策は正しいと推測できます.
GLPK Simplex Optimizer, v4.45
37 rows, 30 columns, 97 non-zeros
0: obj = -1.300000000e+01 infeas = 1.300e+01 (0)
* 10: obj = 7.677248677e+00 infeas = 0.000e+00 (0)
* 14: obj = 5.925925926e-01 infeas = 7.889e-31 (0)
OPTIMAL SOLUTION FOUND
Integer optimization begins...
+ 14: mip = not found yet >= -inf (1; 0)
+ 15: >>>>> 5.925925926e-01 >= 5.925925926e-01 0.0% (2; 0)
+ 15: mip = 5.925925926e-01 >= tree is empty 0.0% (0; 3)
INTEGER OPTIMAL SOLUTION FOUND
Time used: 0.0 secs
Memory used: 0.2 Mb (204010 bytes)
...
Model has been successfully processed
しかし、実際に必要なのは、C++ コードで実装されたまったく同じルーチンです。GLPK C API に関して問題を書き直すのにしばらく時間がかかりましたが、単体テスト中に、実行可能なソリューションがないため、その C++ バージョンではソリューションが返されないことがわかりました。
GLPK Simplex Optimizer, v4.45
37 rows, 30 columns, 10 non-zeros
0: obj = 0.000000000e+00 infeas = 2.000e+00 (16)
PROBLEM HAS NO FEASIBLE SOLUTION
明らかに、私はいくつかの間違いを犯したので、どこを見つける必要があります。
たとえば、C++ コードによって生成されたモデルと MathProg モデルによって生成されたモデルを比較するために使用できるデバッグまたはプレビューの方法はありますか? 何かを台無しにする可能性のあるすべての場所を単純に通過することは、何らかの解決策になりますが、まったく効果がありません.