当使用多个终止参数,Gurobi优化器将当它到达第一个停止。例如,如果你想停止时,达到10%MIP间隙或时60秒已经过去,则设置MIPGap = 0.1和时限= 60。
如果需要更复杂的停止准则,一个可能性是使用热启动。例如,假设你需要1%的MIP间隙,而较小的间隙MIP优选如果花费少于300秒。为了实现这个规则集,先从时限= 300。如果MIPGap属性的值是达到时间限制时大于0.01,则增加了时限参数,所述参数MIPGap设定为0.01,并继续解决MIP。
要设置是否至少有一个可行的解决方案已经发现,只考虑一个时间限制,你可以使用:
的timeLimit = 20
尝试:
米=读( 'b1c1s1.mps.gz')
oldSolutionLimit = m.Params.SolutionLimit
m.Params.SolutionLimit = 1
m.optimize()
m.Params.TimeLimit =的timeLimit - m.getAttr(GRB.Attr.Runtime)
m.Params.SolutionLimit = oldSolutionLimit - m.Params.SolutionLimit
m.optimize()
除外(GurobiError,AttributeError的,例外)为e:
打印( '陷入:' + e.message)
对于更复杂的终止条件,则可能要考虑使用的回调。请参见如何使用回调终止求解?手机万博登录想要查询更多的信息。