Ошибка BadStatusLine при запуске AMPL на сервере NEOS

Я пытался запустить код AMPL на сервере NEOS с локального компьютера через Kestrel, как описано на веб-сайте AMPL: запустить amp на 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 ответ

Решение

Поэтому я нашел простое решение для этого.

Если вы редактируете kestrel файл в вашем каталоге AMPL (файл, который поставляется из архива Kestrel) в любом текстовом редакторе, вы можете заменить строку

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

с

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

После этого моя работа прошла успешно. Похоже, что NEOS устарела http-звонки в июле 2016 года.

В качестве альтернативы (я не пробовал это), вместо того, чтобы использовать версию kestrel с веб-сайтов AMPL или NEOS, вы можете, возможно, попробовать модифицированный пакет отсюда: https://github.com/Pyomo/pyomo/blob/master/pyomo/neos/kestrel.py

Другие вопросы по тегам