我想用COIN-CBC(或任何其他免费的MIP解算器,可从纸浆中获得)解决一个小的ish混合整数程序,但时间限制为,比如说,10秒。但是,maxSeconds参数似乎对我不起作用
例如,我以这种方式调用无时间限制的解算器:
prob.solve(pulp.PULP_CBC_CMD())
我这样称呼它有时间限制:
prob.solve(pulp.PULP_CBC_CMD(maxSeconds=10))
前者终止于50.89秒,解决方案值为15.65287864835175。 后者终止于53.53秒,解决方案值为15.65287864835175。我本以为它会在(大约)10秒钟内终止,可能会有更高的解决方案值
(我知道这篇帖子:Time limit for mixed integer programming with Python PuLP。但是它的答案是指CPLEX和GUROBI,我不能使用它们;我需要一个免费的解算器。)
我做错什么了吗
谢谢你的建议。我想我的问题得到了回答
我查看了日志文件。(为了完整性:我升级到了2.3版,这意味着我现在使用的是timeLimit而不是maxSeconds。)我想我明白发生了什么:也就是说,我认为预解决这个问题大约需要67秒,而时间限制并没有取消预解
这是没有时间限制的日志:
以下是有时间限制的日志:
从第二个日志中,我们可以看到时间限制确实已经通过并得到承认,CBC在没有找到可行解决方案的情况下尽快退出。我们还从第一个日志中看到,根本没有进行任何分支:显然,问题已经得到了解决,这花了大约67秒
这回答了我的问题:maxSeconds(或timeLimit)正在注册中。显然,时间限制并没有切断预解,但我想如果预解时间超过10秒,我会遇到更大的问题
相关问题 更多 >
编程相关推荐