更改参数

更改参数

而不是像这样在困难的模型上继续优化玻璃4,有时尝试不同的参数设置是有用的。当下界移动缓慢时,就像在这个模型中那样,一个可能有用的参数是MIPFocus,它调整高级MIP解决方案策略。现在,让我们将此参数设置为值1,这会将MIP搜索的重点更改为找到好的可行解决方案。有两种方法可以更改参数值。您可以使用m.setParam ()

gurobi>m.setParam('MIPFocus',1)将参数MIPFocus的值更改为1上一个值:0最小值:0最大值:3默认值:0
...或者你可以用m.Params
gurobi>m.Params.MIPFocus=1将参数MIPFocus的值更改为1 Prev:0 Min:0 Max:3默认值:0
参数更改后,我们调用m、 重置()重新优化我们的模型,然后m.optimize ()要启动一个新的优化运行:
gurobi > m.reset ()
丢弃的解决方案信息
gurobi > m.optimize ()
Gurobi优化器版本9.1.2版本v9.1.2rc0(mac64)
优化具有396行、322列和1815个非零模型指纹的模型:0x541d0ad3变量类型:20个连续、302个整数(0二进制)系数统计:矩阵范围[1e+00,8e+06]目标范围[1e+00,1e+06]边界范围[1e+00,8e+02]RHS范围[1e+00,8e+06]预解删除4行5列预解时间:0.00s预解:392行317列1815个非零变量类型:19个连续298个整数(298个二进制)找到启发式解决方案:目标3.133356e+09根松弛:目标8.000024e+08,72次迭代,0.00秒节点|当前节点|目标边界|工作解释| Obj深度IntInf |现任最佳BD缺口| It/节点时间0.08.0000e+08.0000e+08.1334e+09 8.0000e+08 74.5%-0H 0.400019e+09 8.7%-0H 0.220019e+09 8.0000e+08 64.0%-0s 0 0 0 0.08.0000e+08.2200e+08.0000e+08.858.0863.1%-0S0 8.0000e+08 0 72 2.1667e+09 8.0000e+08 63.1%-0S0 8.0000e+08 0 77 2.1667e+09 8.0000e+08 63.1%-0SH 0 2.133351e+09 8.0000e+08 62.5%-0S0 8.0000e+08 0 80 2.1334e+09 8.0000e+08 62.5%-008 0 8.0000e+08 80 2.1334e+08 8.00008+08 62.5%-0 0 8.00008+13308.8.08+13308.808.08+13308.808+088.0000e+08 62.5%-0S0 8.0000e+08 0 83 2.1334e+09 8.0000e+08 62.5%-0S0 8.0000e+08 0 83 2.1334e+09 8.0000e+08 62.5%-0S0 8.0000e+08 0 88 2.1334e+08 62.5%-0S0 8.0000e+08 0 66 2.1334e+09 8.0000e+08 62.5%-0H 0 0 0 0 2.050017e+08 61.0%-0 0 0 0 8.00008+0508 0 0 0 0 0 0 0 0 8.0508+0 0 0 0 8.07E+01.0508.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 022 1.6333e+09 8.0001e+08 51.0%20.5 10s*4233 2185 66 1.600017e+09 8.0001e+08 50.0%21.5 12s*4238 2082 67 1.550017e+09 8.0001e+08 48.4%21.5 12s H 4308 2026 1.500016e+09 8.0001e+08 46.7%21.6 14s 4457226 1.1000e+09 36 65 1.5000e+09 8.0001e+09 8.0001e+08 46.7%22.6 15s H 4809 2136 1.45008 16E+2048.000018 13E+08%42.9%23.9 17s H 5098 2027 1.350013e+09 8.0001e+08 40.7%24.8 18s H 5282 1752 1.200013e+09 8.0001e+08 33.3%25.7 18s中断请求收到切割平面:Gomory:37覆盖:9隐含边界:41 MIR:51流覆盖:266 RLT:107松弛和提升:99探索5332个节点(140122次迭代)在19.00秒内单工线程计数为8(8个可用处理器)解决方案计数10:1.20001e+09 1.35001e+09 1.40001e+09…1.64446e+09解决中断的最佳目标1.200012600000e+09,最佳界限8.000066804E+08,差距33.3335%

结果与我们的预期一致。我们将注意力转向寻找可行的解决方案(客观价值),从而更快地找到更好的解决方案1.2 e91.5e9).

setParam ()方法的设计相当灵活和宽容。它接受通配符作为参数,并且忽略字符大小写。因此,下面的命令都是等效的:

gurobi>m.setParam('NODELIMIT',100)gurobi>m.setParam('NODELIMIT',100)gurobi>m.setParam('Node*',100)gurobi>m.setParam('N???Limit 100)
您可以使用通配符获取匹配参数的列表:
gurobi> m.setParam('*Cuts', 2)匹配参数:['Cuts', 'CliqueCuts', 'CoverCuts', 'FlowCoverCuts', 'FlowPathCuts', 'GUBCoverCuts', 'ImpliedCuts', 'MIPSepCuts', 'MIRCuts', 'ModKCuts', 'NetworkCuts', 'SubMIPCuts', 'ZeroHalfCuts']

注意模型。参数个数有点不那么宽容setParam ().特别是,这种方法不允许使用通配符。不过,在这两种方法中,您都不必担心参数名称的大小写问题m.Params.Heuristicsm.Params.heuristics它们是等价的。

可以使用paramHelp()命令。您可以获得有关特定参数的进一步信息(例如:MIPGap)通过输入paramHelp(“MIPGap”)