python 提高GEKKO求解器的精度

dldeef67  于 2023-06-04  发布在  Python
关注(0)|答案(1)|浏览(239)

我正在处理一个优化问题,我正在使用APOPT来解决这样的问题,但是优化器没有返回最优解,特别是当变量的数量有点高(超过500)时。

vaj7vani

vaj7vani1#

正如Erwin Kalvelagen正确观察到的那样,这个问题可能是非凸的。可能需要multi-start method或全局优化器来找到全局解决方案。如果求解器指示成功的解决方案,则满足局部最优的Karush Kuhn Tucker条件。
如果需要多几位小数的精度,可以调整目标和方程的默认精度1e-6

m.options.RTOL=1e-8
m.options.OTOL=1e-8

OTOL是用于报告成功解决方案的相对目标函数容差。较低的OTOL值(如1 e-8)将给予更精确的答案,但代价是更多的迭代。默认值1 e-6通常足以解决大多数问题。然而,有时存在多个目标,并且需要更高的精度来完全解决次要目标。OTOL和RTOL(方程残差的公差)通常应一起调整。

相关问题