GEKKO优化陷入困境(APM.exe)

问题描述 投票:1回答:1

[我正在尝试通过Python 3(通过Jupyter笔记本)使用GEKKO运行微分方程系统求解器。

对于错误的初始参数,它当然会立即停止并说未找到解决方案。或立即结束,而无需更改参数/功能。

对于其他初始参数,CPU(taskmanager中的APM.exe)正忙30秒(取决于问题大小),然后又降为0%使用率。但是某些计算仍在运行,并且不会产生输出。停止它的唯一方法(而不是完全杀死python)是停止APM.exe。我没有解决办法。

[这样做时,我得到disp=True输出,它已经进行了一定数量的迭代(对于相同的初始参数来说是相同的:]

No such file or directory: 'C:\\Users\\MYUSERNAME\\AppData\\Local\\Temp\\tmpfetrvwwwgk_model7\\options.json'

代码很长,取决于从文件中加载数据。因此,我无法真正提供MWE。

有什么想法吗?

python ode pde gekko
1个回答
0
投票

这里有一些有关对应用程序进行故障排除的建议:

  • 顺序模拟:如果您要使用IMODE=4模拟系统,那么我建议您切换到m.options.IMODE=7并离开m.solve(disp=True)以查看模型出现故障的地方。
  • [Change Solver:有时它也有助于通过m.options.SOLVER=1切换求解器。
  • 短时间步解决方案:您也可以尝试在最初使用m.time=[0,0.0001]使用较短的时间范围,以查看模型是否可以在短时间步内收敛。
  • Coldstart:对于优化问题,可以尝试使用m.options.COLDSTART=2来帮助识别导致不可行解的方程式或约束。它将问题分解为可以解决的连续问题,并尝试查找导致收敛问题的位置。

有使用Gekko模拟的additional tutorials和一个troubleshooting guide(请参阅#18),可帮助您进一步深入研究该应用程序。当收敛有问题时,通常是以下问题之一:

  • 除以零:如果有方程式,例如m.Equation(x.dt()==(x+1)/y),则将其替换为m.Equation(y*x.dt()==x+1)
  • 非连续微分函数:m.abs(x)或没有问题的m.abs2(x)m.abs3(x)替换x=0
  • 不可行:删除变量的任何上限或下限。
  • 太多时间点:最初尝试使用较少的时间点或较短的地平线来验证模型。

让我们知道这是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.