我用 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 模型生成的模型来比较它们?简单地遍历所有我可能搞砸的地方将是一些解决方案,但非常无效。