更改参数在Gurobi回调是不可能的。
相反,可以更新参数:
- 终止回调的优化过程,
- 改变参数值,然后
- 继续优化从中断。
一个改变了的例子MIPGap4秒后:
进口gurobipy全科医生
从gurobipy进口伽马线暴
def my_callback(模型):
如果在哪里= = GRB.Callback.MIP:
run_time = model.cbGet (GRB.Callback.RUNTIME)
mip_gap = model.params.MIPGap
如果run_time > time_of_change mip_gap ! = new_gap:
模型。_changeParam = True
model.terminate ()
time_of_change = 4
new_gap = 0.2
m = gp.read (“glass4.mps”)
m。_changeParam = False
m.optimize (my_callback)
如果m._changeParam:
m.params。MIPGap= new_gap
m.optimize ()
注意:Gurobi v8不会产生一个错误当你试图设置一个参数在一个回调。然而,这样做可能导致未定义的行为强烈气馁。
评论
0评论
请登录留下你的评论。