Недоступный сервер Gekko, локальное решение json файловой ошибки - PullRequest
3 голосов
/ 07 мая 2020

Я думаю, что столкнулся с той же проблемой, что и это переполнение стека.

Недоступный сервер, работающий с 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

1 Ответ

4 голосов
/ 07 мая 2020

Ошибка локального решения с remote=False Ошибка, на которую вы ссылаетесь, связана либо с тем, что решателю не удалось найти решение, либо потому, что вы работаете на MacOS и вам нужны некоторые общие библиотеки с gcc. Если у вас MacOS, попробуйте установить gcc, чтобы получить необходимые общие библиотеки, как указано в обсуждении проблемы GitHub для локального решения на MacOS.

brew install gcc

Если это проблема решателя, вы можете увидеть сообщение об ошибке, если отобразите выходные данные решателя с помощью:

m.solve(disp=True)

Локальное решение иногда отличается от решения удаленного сервера из-за лицензионных ограничений на линейные решатели в IPOPT или из-за вашего локальный исполняемый файл не имеет одного из решателей (например, IPOPT недоступен для локального решения в MacOS, ARM Linux или 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')

Мы можем предложить дополнительные c предложения по обеспечению локальной работы вашей программы, если вы можете опубликовать минимальный пример, показывающий проблему .

Облачные вычисления с remote=True

Сервер publi c сегодня был недоступен в течение нескольких часов, но он резервное копирование сейчас. Из-за популярности Gekko серверы иногда могут быть перегружены или недоступны из-за периодического обслуживания. Выделенный сервер APMonitor доступен как вычислительный сервер для Linux или как вычислительный сервер для Windows, если вы хотите разместить свою собственную систему в облаке или как выделенный сервер. Если вы действительно создаете свой собственный сервер, используйте:

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

, но замените 10.0.0.10 на IP-адрес сервера.

...