python - Pyomo:从 Gurobi 保存次电位解决方案(SolCount,X,Xn,SolutionNumber)
问题描述
我需要在指定的时间限制内访问并保存 Gurobi 找到的最佳次优解决方案。
大家好,
我一直在使用 Pyomo 和求解器 gurobi 来求解某个模型。达到最佳状态的时间非常长,因此我通过访问 TimeLimit 选项为求解器指定了时间限制:
optsolver = SolverFactory('gurobi',solver_io='python')
optsolver.options['TimeLimit'] = 30
results = optsolver.solve(instance1, tee=True)
在此之后,我建立了一个条件,因此如果解决方案以最优解结束,那么它作为参数传递给某个 pyomo_postprocess 函数,该函数以一种方便的方式为我的应用程序组织变量的值。
现在,我想要的是利用 gurobi SolCount, X, Xn, SolutionNumber 的属性来保存在时间限制之前达到的最佳可行解决方案。
这是我的第一次尝试:
if (results.solver.status == SolverStatus.ok) and (
results.solver.termination_condition == TerminationCondition.optimal):
registro = open('registro'+data_name+'.txt', 'w+')
registro.write('optimal and feasible\n')
registro.close()
pyomo_postprocess(instance1, results,data_name)
elif (results.solver.status == SolverStatus.aborted):
registro = open('registro' + data_name + '.txt', 'w+')
registro.write('TimeLimit\n')
registro.write(str(results.solver.status))
registro.close()
pyomo_postprocess(instance1, results, data_name)
但:
警告:加载具有“中止”状态但包含解决方案的 SolverResults 对象。ValueError:无法加载状态不佳的 SolverResults 对象:已中止
你能告诉我如何访问这些次优的 Gurobi 解决方案以便对它们进行后处理吗?非常感谢哥伦比亚的问候!
解决方案
推荐阅读
- opencv - 阈值化后温度为黑色
- python - 如何在 Keras 中手动编辑渐变?
- java - Java类文件的执行
- r - 执行自定义预测的绘图以将其保存在 R 中的 pdf 文件中
- excel - vba中的组合框下拉方法一次又一次调用更改方法
- amazon-sagemaker - NoSuchEntityException: 调用 GetRole 操作时发生错误 (NoSuchEntity): The user with name
找不到 - botframework - Microsoft.Bot.Sample.AadV2Bot 示例的 AAD 图权限异常
- javascript - HTML Canvas measureText 已经很遥远了
- android - 如何从活动的警报对话框中检索多项检查选择
- angularjs - ui-router 更改 URL 但不加载模板 angular-ui router + ionic 1 +