GEKKO:未找到 options.json 和并行化问题

Posted

技术标签:

【中文标题】GEKKO:未找到 options.json 和并行化问题【英文标题】:GEKKO: options.json not found and parallelization of a problem 【发布时间】:2022-01-12 15:36:51 【问题描述】:

我正在构建一个 GEKKO 模型,并尝试将函数最小化。这是通过二维傅里叶扩展函数并显式计算所述函数的黎曼和来完成的。在增加傅立叶系数的数量和网格点的数量后,我遇到了一个问题:

我的代码看起来像这样(我忽略了一些总和和复杂的部分):

m = GEKKO(remote=false)
ur_x_t =[m.Var(value=param[i][2],lb=-0.01,ub=0.01) for i in range(nG)]
ur_y_t =[m.Var(value=param[i][3],lb=-0.01,ub=0.01) for i in range(nG)]


for i in range(nG):
  m.Minimize(b*ur_x_t[i]*g(i)[0] + ... )

def G_u(point):
  return m.sum( (G_x * ur_x_t[i] + G_y*ur_y_t[i])*m.cos(np.dot(g(i),point) )  for i in range(nG) ) 


for point in gridpoints:
  m.Minimize(a*m.cos( np.dot(g(0),point) + G_u(point) )

这里的a, b, G_xG_y 只是一些数字。 g(i) 是用于傅立叶扩展函数的向量,但可以仅将其视为一些 2D 向量。 param 是一组很好的初始猜测,可以加快模拟速度。如果我将网格点数增加到 10000,将傅立叶系数/m.Var 数增加到大约 50,我就会遇到问题:

Error: 'results.json' not found. Check above for additional error details
Traceback (most recent call last):
  File "/import/homes/user/Documents/reconstruction2.py", line 168, in <module>
    m.solve()
  File "/import/homes/user/.local/lib/python3.6/site-packages/gekko/gekko.py", line 2227, in solve
    self.load_JSON()
  File "/import/homes/user/.local/lib/python3.6/site-packages/gekko/gk_post_solve.py", line 13, in load_JSON
    f = open(os.path.join(self._path,'options.json'))
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpn_uao1d8gk_model0/options.json'

问题源于第二个 for 循环,因为第一个循环可以使用更多的傅立叶系数运行。 我可以在这里做什么?

我还有另一个关于我的问题并行化的问题: 我可以设置我的程序的并行化吗?如果可以,我将如何继续这样做?可悲的是,我不是计算机科学家,也不太熟悉 python,所以我很难阅读有关此的文档。我想多线程我的黎曼和,所以第二个 for 循环。壁虎可以做到这一点吗?

【问题讨论】:

【参考方案1】:

当求解器找不到解决方案时,找不到results.json 文件。尝试设置m.solve(disp=True) 以查看特定的求解器错误消息。如果迭代次数不足,则使用m.options.MAX_ITER=1000 将其设置为更高的值,或使用m.options.SOLVER=1 更改求解器。如果它报告了一个不可行的解决方案,则检查infeasbilities.txt 文件以查找可能导致问题的方程或约束:How to retrieve the 'infeasibilities.txt' from the gekko

【讨论】:

以上是关于GEKKO:未找到 options.json 和并行化问题的主要内容,如果未能解决你的问题,请参考以下文章

Gekko(python) 用于单圈时间优化

GEKKO - 如何修复 Python Gekko Max Equation 错误 - 元素数

如何将 gekko 对象插入/附加到现有列表/数组?

如何使用 R reticulate 安装 gekko 包?

如何使用 gekko 变量作为数组的组件?

GEKKO:数组大小作为模型变量