Presolve

Gurobi presolve算法设计模型更少,更容易解决。然而,在某些情况下,presolve有助于数值问题。下面的Python代码可以帮助您确定这是发生。首先,读取模型文件和打印汇总统计数据presolved模型:

m =阅读(gurobi.rew) p = m.presolve () p.printStats ()
如果数值范围看起来比原来的模型,尝试参数总= 0:
m.Params m.reset ()。总= 0 p = m.presolve () p.printStats ()
如果由此产生的数值模型仍然是有问题的,你可能需要禁用presolve完全使用参数Presolve = 0;尝试使用上面的步骤
m.Params m.reset ()。Presolve= 0 p = m.presolve() p.printStats()

如果统计更好看总= 0Presolve = 0,你应该进一步测试这些参数。对于连续(LP)模型,可以直接进行测试。MIP,你应该比较LP放松和没有这些参数。下面的Python命令创建三个LP放松方式:该模型没有presolve,与presolve模型,该模型总= 0:

m =阅读(gurobi.rew) r = m.relax () r.write (gurobi.relax-nopre.rew) p = m.presolve () r = p.relax () r.write (gurobi.relax-pre.rew) m.reset m.Params ()。总= 0 p = m.presolve () r = p.relax () r.write (“gurobi.relax-agg0.rew”)
这三个文件,使用前面提到的技术来确定Presolve = 0总= 0提高了数值的LP放松。

最后,如果总= 0有助于数字但太慢使得模型,试一试AggFill = 0代替。