首页 > 解决方案 > Gekko 无法访问服务器,本地解决 json 文件错误

问题描述

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

使用 GEKKO 的服务器无法访问。到底是怎么回事?

昨天我能够解决我的 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

标签: pythonservergekko

解决方案


Local Solve Error withremote=False 您引用的错误是因为求解器未能找到解决方案,或者因为您在 MacOS 上并且需要一些带有gcc. 如果您使用的是 MacOS,请尝试安装gcc以获取所需的共享库,如MacOS 上本地解决方案的 GitHub 问题讨论中所述。

brew install gcc

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

m.solve(disp=True)

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

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')

如果您可以发布一个显示问题的最小示例,我们可以提供有关让您的程序在本地运行的更具体的建议。

云计算与remote=True

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

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

但替换10.0.0.10为服务器的 IP 地址。


推荐阅读