【问题标题】:Reducing my equation size in Gekko or increasing max string length in APMonitor在 Gekko 中减少我的方程式大小或在 APMonitor 中增加最大字符串长度
【发布时间】:2022-01-03 21:28:38
【问题描述】:

我正在使用 gekko 优化具有数百个变量 u_i 和数百个方程的模型。这种类型的方程有很多

m.Minimze(m.cos(m.sum(a_i*u_i)))

其中 a_i 只是一些不依赖于 gekko 模型的浮点数。然而,这些类型的方程式会产生错误:

APM 模型错误:字符串 > 15000 个字符 考虑将这条线分解成多个方程

这也可能是由于只使用换行符 CR 而不是 CR LF(适用于 Windows)或 LF(适用于 MacOS/Linux) 要解决此问题,请使用适当的换行符保存 APM 文件

由于整个和需要在 cos 内,因此无法拆分等式。是否可以增加最大字符串长度? This seems to be possible somehow,但是我不清楚该怎么做。运行时和计算资源在这里不会成为问题。

另一个想法是使用中间变量,但我不清楚这些是如何在内部处理的。这里的文档给我带来了麻烦。如果有人能用比文档更简单的语言向我解释这一点,甚至可以告诉我,这是否是一种明智的做法,那就太好了。

【问题讨论】:

    标签: python optimization nonlinear-optimization gekko


    【解决方案1】:

    在 Python Gekko 中,中间体是用 Intermediate 函数定义的。

    y = m.Intermediate(x)
    

    中间体的一个例子是方程z=sqrt(x+y)w=(x+y)**2,它们共享一个共同的x+y 术语。

    i = m.Intermediate(x+y)
    m.Equations([z==m.sqrt(i),
                 w==i**2])
    

    要识别长方程,请在运行文件夹 m.path 中使用文本编辑器打开 gk0_model.apm 文件,或使用 m.open_folder() 打开文件夹。使用name='x' 命名变量,例如x = m.Var(value=1,name='x'),有助于提高APMonitor 模型的可读性。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2020-10-03
      • 1970-01-01
      • 2014-12-26
      • 2013-04-14
      • 2017-11-15
      相关资源
      最近更新 更多