【问题标题】:Gekko unreachable server, local solving json file errorGekko 无法访问服务器,本地解决 json 文件错误
【发布时间】:2020-05-07 10:05:51
【问题描述】:

我认为我遇到了与此堆栈溢出相同的问题。

Unreachable server working with GEKKO. What is going on?

昨天我能够解决我的 Gekko 模型,而今天我什至无法解决 Apmonitor 网站上的示例。解决需要很长时间,我收到以下错误:

ImportError: No solution or server unreachable.
  Show errors with m.solve(disp=True).
  Try local solve with m=GEKKO(remote=False).

我尝试按照上面提到的堆栈溢出帖子中的建议在本地解决它:

m = GEKKO(remote=False)

但是,我收到以下错误:

Error: 'results.json' not found. Check above for additional error details
Traceback (most recent call last):

FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/mr/kgzm2xln40dcc10zkq06drhc0000gn/T/tmpzqxlyw7_gk_model0/options.json'

服务器宕机了,谁能帮我在本地解决?

编辑,添加代码:

from gekko import GEKKO
m = GEKKO(remote=False)           # create GEKKO model
y = m.Var(value=2)    # define new variable, initial value=2
m.Equation(y**2==1)   # define new equation
m.options.SOLVER=1    # change solver (1=APOPT,3=IPOPT)
m.solve(disp=True)
print('y: ' + str(y.value)) # print variable value

【问题讨论】:

  • 能否发布您的代码以便我们提供本地解决方案?由于 IPOPT 中线性求解器的许可限制,本地求解有时与远程服务器求解不同。您也可以尝试将m.options.SOLVER=1 用于 APOPT 或将m.options.SOLVER=2 用于 BPOPT 作为不同的求解器。
  • 感谢您的回答!我在原始问题中添加了代码。我尝试了一个非常基本的问题,以确保这不是问题所在/

标签: python server gekko


【解决方案1】:

remote=False 的本地求解错误 您引用的错误是因为求解器未能找到解决方案,或者因为您在 MacOS 上并且需要一些与 gcc 共享的库。如果您使用的是 MacOS,请尝试安装 gcc 以获取所需的共享库,如 GitHub issue discussion for local solution on MacOS. 中所述

brew install gcc

如果是求解器问题,您可以在显示求解器输出时看到错误消息:

m.solve(disp=True)

由于 IPOPT 中线性求解器的许可限制或您的本地可执行文件没有求解器之一,本地求解有时与远程服务器求解不同(例如,IPOPT 尚不适用于 local solve on MacOS, ARM Linux, or x86-64 Linux) .如果请求的求解器选项不可用,则处理本地请求的 apm 可执行文件会自动恢复到下一个可用的求解器选项。您可以尝试将m.options.SOLVER=1 用于 APOPT 或将m.options.SOLVER=2 用于 BPOPT 作为不同的求解器。

此外,如果您想在求解器未成功找到解决方案时引发异常,则应将调试级别保留为 1。否则,设置debug=0 并使用m.options.APPSTATUS 来确定求解器是否成功。

m.solve(disp=True,debug=0)
if m.options.APPSTATUS==0:
    print('Solver failed to find a solution')
else:
    print('Successful solution')

如果您可以发帖minimal example that shows the issue,我们可以就如何让您的程序在本地运行提供更具体的建议。

云计算remote=True

公共服务器今天有几个小时不可用,但现在已备份。由于 Gekko 的流行,服务器有时会因偶尔的维护活动而超载或不可用。如果您想在云中托管自己的系统或作为专用服务器,可以使用compute server for Linuxcompute server for Windows 的专用 APMonitor 服务器。如果您确实创建了自己的服务器,请使用:

m = GEKKO(server='http://10.0.0.10',remote=True)

但用10.0.0.10 代替服务器的IP 地址。

【讨论】:

  • 感谢您的回答。我在原始问题中添加了一个最小示例。反正有没有为mac获得IPOPT求解器?可以使用 brew install gcc 安装 gcc 吗?我在你的另一篇文章中读到了这一点。
  • 我确实需要 brew install gcc。本地求解现在有效。
猜你喜欢
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2021-09-17
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多