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

我已经在 python3 中编写了我的代码并使用 Gekko 求解器解决了它。

在 10000 次迭代后,我得到了最大迭代次数的错误并且找不到解决方案。那么我可以在第 10000 次迭代后得到决策变量的值吗?我的意思是即使达到最大迭代,求解器在最后一次迭代中也必须有一个决策变量的值。所以我想访问该值。我怎样才能做到这一点?


哈士奇WWW
浏览 121回答 2
2回答

蓝山帝景

您可以通过设置debug=0何时调用来访问解决方案solve:m.solve(debug=0)默认是debug=1在出现错误(例如达到最大迭代次数)时抛出异常。这是一个通常在 5 次迭代中求解的示例。,它在m.options.max_iter=4达到成功解决方案之前达到最大迭代次数。from gekko import GEKKOm = GEKKO(remote=False) # create GEKKO modelx = m.Var(value=0)      # define new variable, initial value=0y = m.Var(value=1)      # define new variable, initial value=1m.Equations([x + 2*y==0, x**2+y**2==1]) # equationsm.options.MAX_ITER=4m.solve(debug=0)        # solveprint([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。

富国沪深

问题: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 教授的及时回复。壁虎
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python