减小Gekko中的方程式大小或增加APMonitor中的最大字符串长度



我正在使用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内部,因此不可能拆分方程。有可能增加字符串的最大长度吗?这似乎是可能的,但我不清楚如何做到。运行时和计算资源在这里不是问题。

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

在PythonGekko中,中间体是用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模型的可读性。

相关内容

  • 没有找到相关文章

最新更新