更改参数

更改参数

而不是继续优化一个困难的模型glass4,有时尝试不同的参数设置是有用的。当下界移动缓慢时,就像在这个模型中那样,一个可能有用的参数是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 ()
Gurobi Optimizer version 9.1.2 build v9.1.2rc0 (win64)
优化396行322列1815非零模型指纹:0x541d0ad3变量类型:20 continuous, 302 integer (0 binary)系数统计:Matrix range [1e+00, 8e+06] Objective range [1e+00, 8e+06] Bounds range [1e+00, 8e+02] RHS range [1e+00, 8e+06] preolve removed 4行5列preolve time:0.00s预解:392行,317列,1815个非零变量类型:19个连续,298个整数(298个二进制)找到启发式解:目标3.133356e+09根松弛:目标8.000024e+08, 72次迭代,0.00秒节点当前节点| |客观界限|工作Expl Unexpl | Obj深度IntInf | |现任BestBd差距/节点时间0 0 8.0000 3.1334 e + e + 08年0 72 09年8.0000 e + 08年74.5% - 2.400019 0 0 0 H e + 09年8.0000 e + 08年66.7% - 0 H 0 0 2.220019 e + 09年8.0000 e + 08年64.0% - 0 0 0 8.0000 2.2200 e + e + 08年0 72 09年8.0000 e + 08年64.0% - 2.166685 0 0 0 H e + e + 08年09年8.000063.1% - 0 0 0 8.0000 2.1667 e + e + 08年0 72 09年8.0000 e + 08年63.1% - 0 0 0 8.0000 2.1667 e + e + 08年0 77 09年8.0000 e + 08年63.1% - 0 H 0 0 2.133351 e + 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 80 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 80 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 83 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 78 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 83 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 83 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 88 09年8.0000 e + 08年62.5% - 0 0 0 8.0000 2.1334 e + e + 08年0 66 09年8.0000 e + 08年62.5% - 0 H 0 0 2.050017 e + 09年8.0000 e + 08年61.0% 2 - 0 0 8.0000 2.0500 e + e + 08年0 65 09年8.0000 e + 08年61.0% 2.050017 - 0 H 1 4 e + 09年8.0000 e + 08年61.0% 2.000016 74.0 0 H 6 8 e + 09年8.0000 e + 08年60.0% 41.8 0 H 130 128 1.700015 e + 09年8.0000 e + 08年12.7 0 H 199 52.9% 203 1.644459 e + 09年8.0000 e + 08年10.8 0 H 213 51.4% 213 1.644459 e + 09年8.0000 e + 08年51.4% 10.8 - 1 s H 244 269 1.633347 e + 09年8.0001 e + 08年51.0% 1428 11.0 1027 1.5333 e + 09年40 44 1.6333 e + 09年8.0001 e + 08年51.0% 15.5 5 s 3138 1602 1.3750 e + 09年58 221.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 4457 2226 1.1000e+09 36 65 1.5000e+09 8.0001e+08 46.7% 22.6 15s H 4809 2136 1.450016e+09 8.0001e+08 44.8% 23.4 16s H 4908 2043 1.400013e+09 8.0001e+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 Interrupt request received Cutting planes: Gomory: 37 Cover: 9 Implied bound: 41 MIR: 51 Flow cover: 266 RLT: 107 Relax-and-lift: 99 Explored 5332 nodes (140122 simplex iterations) in 19.00 seconds Thread count was 8 (of 8 available processors) Solution count 10: 1.20001e+09 1.35001e+09 1.40001e+09 ... 1.64446e+09 Solve interrupted Best objective 1.200012600000e+09, best bound 8.000066838804e+08, gap 33.3335%

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

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

gurobi> m.setParam('NODELIMIT', 100) gurobi> m.setParam('NODELIMIT', 100) gurobi> m.setParam('N??限制,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”)