为了账号安全,请及时绑定邮箱和手机立即绑定

如何在gekko的最大迭代限制后获取决策变量的值

如何在gekko的最大迭代限制后获取决策变量的值

哈士奇WWW 2022-10-06 18:51:30
我已经在 python3 中编写了我的代码并使用 Gekko 求解器解决了它。在 10000 次迭代后,我得到了最大迭代次数的错误并且找不到解决方案。那么我可以在第 10000 次迭代后得到决策变量的值吗?我的意思是即使达到最大迭代,求解器在最后一次迭代中也必须有一个决策变量的值。所以我想访问该值。我怎样才能做到这一点?
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以通过设置debug=0何时调用来访问解决方案solve:


m.solve(debug=0)

默认是debug=1在出现错误(例如达到最大迭代次数)时抛出异常。这是一个通常在 5 次迭代中求解的示例。,它在m.options.max_iter=4达到成功解决方案之前达到最大迭代次数。


from gekko import GEKKO

m = GEKKO(remote=False) # create GEKKO model

x = m.Var(value=0)      # define new variable, initial value=0

y = m.Var(value=1)      # define new variable, initial value=1

m.Equations([x + 2*y==0, x**2+y**2==1]) # equations


m.options.MAX_ITER=4

m.solve(debug=0)        # solve


print([x.value[0],y.value[0]]) # print solution

使用debug=0时,在求解器几乎完成求解的情况下,返回第 4 次迭代时的错误答案。


[-0.89473125735, 0.44736562868]

如果您需要有关初始化问题的建议以帮助您找到成功的解决方案,我推荐这篇文章:

  • Safdarnejad, SM, Hedengren, JD, Lewis, NR, Haseltine, E.,动态系统优化的初始化策略,计算机和化学工程,2015 年,卷。78,第 39-50 页,DOI:10.1016/j.compchemeng.2015.04.016。



查看完整回答
反对 回复 2022-10-06
?
富国沪深

TA贡献1790条经验 获得超9个赞

问题:1) 我正在用 APPT Solver 解决一个 MINLP 问题。我的决策变量被定义为整数。我已经按照您的建议检索了第 10,000 次迭代的结果。但决策变量值是非整数。那么为什么 APPT Solver 计算的是非整数解呢?

回答:有一个关于什么被归类为整数的选项。默认容差是整数值的 0.05 范围内的任何数字。您可以通过以下方式更改: m.solver_options = ['minlp_integer_tol 1']

2)我正在运行“m.options.MAX_ITER = 100”的代码并使用m = GEKKO(),即使用远程服务器。但我的代码仍在运行第 10000 次迭代。

答案:也可以这样做:m.solver_options = ['minlp_maximum_iterations 100']

非常感谢John Hedengren 教授的及时回复。

壁虎


查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号