在NEOS服务器上运行AMPL时出现BadStatusLine错误

时间:2017-01-19 01:19:54

标签: ampl neos-server

我试图在本地机器上通过Kestrel在NEOS服务器上运行AMPL代码,如AMPL网站上所述:run ampl on neos。我使用了一个简单的模型文件,其中包含以下选项:

option solver "/home/arthur/amplide.linux64/kestrel";
option kestrel_options 'solver=loqo';
option loqo_options 'minlocfil sigfig=8 outlev=2';
option neos_server 'www.neos-server.org:3333';

最后一行来自NEOS网站上的教程:https://neos-server.org/neos/kestrel.html

我收到以下错误,似乎没有工作排队:

File "/home/arthur/amplide.linux64/kestrel", line 217, in <module>
    kestrel = kestrelAMPL()
File "/home/arthur/amplide.linux64/kestrel", line 19, in __init__
    result = self.neos.ping()
...
File "/usr/lib/python2.7/httplib.py", line 408, in _read_status
    raise BadStatusLine(line)
httplib.BadStatusLine: ''
exit code 1
<BREAK>

如果我在AMPL IDE而不是终端中执行此操作,则只会挂起。

1 个答案:

答案 0 :(得分:0)

所以我找到了一个简单的解决方案。

如果您在任何文本编辑器中编辑AMPL目录中的kestrel文件(来自Kestrel存档的文件),您可以替换该行

self.neos = xmlrpclib.ServerProxy("http://%s:%s" % (self.host,self.port))

self.neos = xmlrpclib.ServerProxy("https://%s:%s" % (self.host,self.port) )

之后我的工作顺利完成了。似乎NEOS在2016年7月弃用了http电话。

或者(我没有尝试过这个),而不是使用AMPL或NEOS网站的kestrel版本,你可以尝试从这里修改包:https://github.com/Pyomo/pyomo/blob/master/pyomo/neos/kestrel.py