有(remote=false)和不带该参数时gekko的工作差值



我使用GEKKO是为了适合的目的。在探索GEKKO的过程中,我发现如果我使用:

model = GEKKO(remote=False)

不是

model = GEKKO() 

它工作得快多了:)

但是在这种情况下我不能使用IPOPT求解器?我提供了一个带有选项

的GEKKO
model.options.SOLVER = 3

然后我在解决方案中得到了消息:

solver            3  not supported
using default solver: APOPT
----------------------------------------------
Model Parameter Estimation with APOPT Solver
----------------------------------------------

在日志的底部写着:

---------------------------------------------------
Solver         :  IPOPT (v3.12)
Solution time  :   0.736799999998766      sec
Objective      :   0.148853103506686     
Successful solution
---------------------------------------------------

那么在这种模式下使用什么求解器呢?

注:如果我使用

model = GEKKO() 

对于相同的数据,我有另一个解决方案和关于使用时间的消息:

---------------------------------------------------
Solver         :  IPOPT (v3.12)
Solution time  :    37.1334000000061      sec
Objective      :   0.147929143743533     
Successful solution
---------------------------------------------------

我使用model = GEKKO()得到的解决方案要好得多,但它很耗时。那么这两种情况之间的区别是什么,是否有任何信息可以用于更好的参数调优?

例如,我准备给APOPT同样的时间来找到解决方案,但我不知道如何调整它。

P.P.S.这个函数是非凸的,我知道在可观察的区域有很多局部最小值,所以提供了大量的迭代,例如10000次迭代(我不知道这是不是一个很大的数字-为了我的目的,它需要很多时间)。

本地求解器选项受许可或可执行文件大小的限制。在Linux/MacOS上,包括本地解决方案的IPOPT将库分发大小增加到50 MB以上。IPOPT在Windows上是本地可用的,因为基于库静态链接的方式,它只增加了大约3 MB。下面是来自Readme的附加信息。Gekko的bin文件夹中的md文件。在创建Gekko模型时,当选项remote=False时使用本地可执行文件。

m = GEKKO(remote=False)

本地可执行文件版本包括:

  • Windows(32或64位):apm.exe
  • Linux(64位):apm
  • MacOS(64位):apm_mac
  • Linux ARM(树莓派):apm_arm(暂时删除,直到新版本可用)

求解器的不正确报告有GitHub问题报告,将在未来的版本中修复。如果您需要使用IPOPT,我建议您切换到Windows版本的本地解决方案,或者使用公共服务器。

如果您想调优APOPT,这里有关于APMonitor文档和APOPT网站中求解器选项的附加信息。

相关内容

  • 没有找到相关文章

最新更新