更改参数
更改参数
而不是继续优化困难的模型玻璃4.
,有时尝试不同的参数设置是有用的。当下界移动缓慢时,就像在这个模型中一样,一个潜在的有用参数是mipfocus.
,调整高级MIP解决方案策略。现在让我们将这个参数设置为值1,这将把MIP搜索的重点改变为寻找良好的可行解决方案。有两种方法可以更改参数值。你可以使用方法m.setParam ():
Gurobi> M.SetParam('mipfocus',1)将参数mipfocus的值更改为1 prev:0 min:0 max:3默认值:0...或者你可以用
m.Params
类……gurobi> m.params.mipfocus = 1更改的参数mipfocus值为1 prev:0 min:0 max:3默认值:0一旦参数被更改,我们调用m.reset()重置模型的优化,然后m.optimize ()要启动一个新的优化运行:
gurobi> m.reset()gurobi> m.optimize()优化396行,322列和1815型非系统变量类型的型号:20连续,302整数(0二进制)系数统计:矩阵范围[1e + 00,8e +06]物镜范围[1E + 00,1E + 06]界限范围[1E + 00,8E + 02] RHS范围[1E + 00,8E + 06]发现启发式解决方案:目标2.40002E + 09预定删除4行和5柱子预定时间:0.00s预定:392行,317列,1815非安利斯变量类型:19连续,298整数(298二进制)根放松:目标8.000024E + 08,72迭代,0.00秒节点|当前节点|目标界限|.工作解释概述|OBJ深度Intinf |现任者最畅销的差距|IT / Node Time 0 0 8.0000E + 08 0 72 2.4000E + 09 8.0000E + 08 66.7% - 0s H 0 0 2.283353E + 09 8.0000E + 08 65.0% - 0s H 0 0 2.283353E + 09 8.0000E + 0865.0% - 0 0 0 0 8.0000E + 08 0 72 2.2834E + 09 8.0000E + 08 65.0% - 0 0 0 8.0000E + 08 0 72 2.2834E + 09 8.0000E + 08 65.0% - 0s 0 0 8.0000E + 080 72 2.2834E + 09 8.0000E + 08 65.0% - 0s 0 0 8.0000E + 08 0 72 2.2834E + 09 8.0000E + 08 65.0% - 0s 0 0 8.0000E + 08 0 72 2.2834E + 09 8.0000E + 08 65.0% - 0s 0 0 8.0000e+08 0 88 2.2834e+09 8.0000e+08 65.0% - 0s 0 0 8.0000e+08 0 71 2.2834e+09 8.0000e+08 65.0% - 0s H 0 0 2.100018e+09 8.0000e+08 61.9% - 0s H 0 2 2.075016e+09 8.0000e+08 61.4% - 0s 0 2 8.0000e+08 0 70 2.0750e+09 8.0000e+08 61.4% - 0s H 3 8 1.950016e+09 8.0000e+08 59.0% 47.3 0s H 148 134 1.933349e+09 8.0000e+08 58.6% 4.2 0s H 285 288 1.900014e+09 8.0000e+08 57.9% 4.2 0s H 286 288 1.825015e+09 8.0000e+08 56.2% 4.2 0s H 286 286 1.733347e+09 8.0000e+08 53.8% 4.2 0s H 300 282 1.733347e+09 8.0000e+08 53.8% 4.2 1s H 312 295 1.700014e+09 8.0000e+08 52.9% 4.4 1s H 340 315 1.700014e+09 8.0000e+08 52.9% 4.7 1s H 356 324 1.666680e+09 8.0000e+08 52.0% 4.6 1s H 396 383 1.666680e+09 8.0000e+08 52.0% 4.6 1s H 615 524 1.633347e+09 8.0000e+08 51.0% 4.4 1s 1936 1388 1.2500e+09 58 42 1.6333e+09 9.0000e+08 44.9% 8.6 5s H 3651 2060 1.540012e+09 9.0001e+08 41.6% 9.4 7s H 4900 2566 1.480013e+09 9.0001e+08 39.2% 10.1 9s 4985 2616 1.0295e+09 65 52 1.4800e+09 9.0001e+08 39.2% 10.3 11s Interrupt request received Cutting planes: Gomory: 51 Cover: 1 Implied bound: 69 MIR: 11 Flow cover: 221 Explored 5508 nodes (62529 simplex iterations) in 11.39 seconds Thread count was 8 (of 8 available processors) Solution count 10: 1.48001e+09 1.54001e+09 1.63335e+09 ... 1.82501e+09 Solve interrupted Best objective 1.480012800002e+09, best bound 9.000054375256e+08, gap 39.1893%
结果与我们的预期一致。通过将焦点转向寻找可行的解决方案(客观价值),我们可以更快地找到更好的解决方案1.525 e9
相对1.6 e9
).
的setParam ()方法设计得相当灵活和宽容。它接受通配符作为参数,并且忽略大小写。因此,以下命令都是等价的:
gurobi> m.s tparam ('NODELIMIT', 100) gurobi> m.s tparam ('NODELIMIT', 100) gurobi> m.s tparam('节点*',100)gurobi> m.s tparam ('N??限制,100)您可以使用通配符获取匹配参数列表:
gurobi> m.setParam('*Cuts', 2)匹配参数:['Cuts', 'CliqueCuts', 'CoverCuts', 'FlowCoverCuts', 'FlowPathCuts', 'GUBCoverCuts', 'ImpliedCuts', 'MIPSepCuts', 'MIRCuts', 'ModKCuts', 'NetworkCuts', 'SubMIPCuts', 'ZeroHalfCuts']
注意模型。参数个数
比宽容不那么宽容setParam ().特别是,这种方法不允许使用通配符。不过,在这两种方法中,您都不必担心参数名称的大小写m.Params.Heuristics
和m.Params.heuristics
是等同的。
方法可浏览全部可用参数集paramHelp ()命令。您可以获得有关特定参数的进一步信息(例如:MIPGap
)通过输入paramHelp(“MIPGap”)
.