简单的模型修改

简单的模型修改

现在,我们将演示一个简单的模型修改。想象一下,你只想考虑至少能赚10便士的解决方案(例如,在哪里便士变量的下界为10.0)。可以通过设置属性设置为适当的变量(列表中的第一个变量v在我们的示例中)…

gurobi> v = m.getVars()磅= 10

Gurobi优化器会跟踪模型的状态,因此它知道当前加载的解决方案对于修改后的模型不一定是最优的。当您调用优化()方法,对修正后的模型进行了新的优化。

gurobi> m.optimize() optimization a model with 4 rows, 9 columns and 16 non0变量类型:4 continuous, 5 integer (0 binary)系数统计量:Matrix range [6e-02, 5 integer (0 binary)] Objective range [1e-02, 1e+00] Bounds range [1e+01, 1e+03] RHS range [0e+00, 0e+00] preolve removed 2 row and 5 columns preolve time: 0.00s preolve:变量类型:0连续,4整数(0二进制)发现启发式解:目标25.9500000根松弛:目标7.190000e+01, 2次迭代,0.00秒节点当前节点| |客观界限|工作Expl Unexpl | Obj深度IntInf | |现任BestBd差距/节点时间0 0 0 1 25.95000 71.90000 71.90000 177%,0 H 0 0 71.8500000 71.90000 0.07% - 0 H 0 0 71.9000000 71.90000 0.00% - 0年代探索节点0(2单纯形迭代)在0.01秒内线程数是8(8可用处理器)Solution count 3: 71.9 71.85 25.95 Optimal solution found (tolerance 1.00e-04) Best objective 7.190000000000e+01, best bound 7.190000000000e+01, gap 0.0000%

结果表明,如果您强制解决方案包含至少10便士,模型的最大可能客观值将从113.45降低到71.9。一个简单的检查确认了新的下界是被尊重的:

gurobi >打印(10.0 v[0]。x)