【发布时间】:2022-01-03 00:36:30
【问题描述】:
我正在使用 GEKKO 来查找一些未知函数的二维傅立叶系数 u 根据二维向量 g 扩展。为此设置了字典,我需要计算表单的许多术语:
u{ u_fourier_i_j: [m.Var(),m.Var()] ....}
g{ g_i_j : [gx_i_j, gy_i_j].....}
m.Minimize(m.cos(sup.function()))
其中 sup.function 定义为:
dummy = 0
for i in fourier_x:
for j in fourier_y:
dummy += u_fourier_i_j * np.cos(np.dot(g_i_j,[x,y]))
return dummy
现在我想使用许多傅立叶系数,但 Gekko 给了我错误:
APM 模型错误:字符串 > 15000 个字符 考虑将这条线分成多个方程
这也可能是由于只使用换行符 CR 而不是 CR LF(适用于 Windows)或 LF(适用于 MacOS/Linux) 要解决此问题,请使用适当的换行符保存 APM 文件
有没有办法增加 APM 模型中的最大字符串大小,或者通过不同的程序结构来规避这个错误? 计算资源应该不是问题。
【问题讨论】:
-
您是否尝试过按照错误消息的提示“将线分解为多个方程”?
-
嗯,sup.function 的整个表达式是余弦的参数,所以这不能合理地分解成多个表达式。我猜可以使用加法定理,但这是不可扩展的,因为它分解为 30 个傅立叶系数,我想使用数百个。