Как установить CB C для Pyomo локально на Windows машине? - PullRequest
0 голосов
/ 27 марта 2020

Моя цель - соединить решатель CB C с открытым исходным кодом с Pyomo в Spyder. Я работаю на компьютере Windows 10, и я не могу использовать сервер NEOS из-за политики компании.

Я загрузил двоичные файлы с Bintray (https://bintray.com/coin-or/download/Cbc#files* 1005). *), которые включают файл cb c .exe. Однако, при попытке запустить его, появляется несколько ошибок, утверждающих, что мне не хватает файлов (среди прочих libbz2-1.dll и zlib1.dll). Я не очень разбираюсь в linux или разработке программного обеспечения, но после долгого времени в Google я понимаю, что они используются для распаковки данных между прочим. Я нашел все файлы, кроме zlib1.dll в чате разработчика на ту же тему и zlib1.dll, которую я нашел на другой странице. Однако при запуске я теперь получаю сообщение об ошибке: «Приложение не удалось правильно запустить (0xc000007b).

Я также пытался загрузить MSYS2 MinGW и следовал инструкциям CB C. Я не знаю, требуется ли мне это или это только для разработчиков.

Может кто-нибудь сказать мне, что делать? Я подозреваю, что другие люди, кроме меня, хотят использовать CB C в Pyomo в качестве альтернативы GLPK.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Если у вас уже есть файл .exe, убедитесь, что он находится в вашей текущей рабочей папке (установите его как рабочий каталог в Spyder, недостаточно просто открыть файл) и вызовите его с помощью функции SolveFactory:

opt = SolverFactory("cbc.exe")

results = opt.solve(model)

У меня работает.

0 голосов
/ 01 апреля 2020

Вы найдете некоторую общую информацию здесь , где я изложил некоторые подходы.

Хотя это было нацелено на Clp, оно также относится к Cb c.

Как я уже заметил, немного странно, что некоторые библиотеки статически не связаны (zlib), хотя это, безусловно, выполнимо. Но, как упоминалось в теме, это уже не должно иметь место (см. Ограничение относительно , какие файлы полностью статически связаны ), и поэтому ваше наблюдение странное (и вы не сказали , какой файл вы скачали).

Так что я бы попробовал один из следующего (в следующем порядке):

  • Попробуйте еще раз с вашим источником, но придерживайтесь к master-версиям (см. первую ссылку), поскольку сопровождающий гарантирует только полностью готовые c сборки для них!
  • Используйте сборки из AMPL
    • (протестировано и работает для меня; обычно рекомендуется с точки зрения качества / стабильности сборок)
  • Используйте сборки из coin-or / pulp , другого инструмента моделирования для python
    • (протестировано и работает для меня)
  • Компиляция из исходного кода с использованием mingw64
  • (Используйте любую сборку и предоставьте некоторые внешние библиотеки zlib и co -> трудно отлаживать)

Конечно, я полностью игнорировал другие типичные проблемы:

  • лицензионный материал (что входит в эти сборки)
    • не уверен, что компания может позволить себе использовать двоичные файлы, не собранные самостоятельно в отношении легальных вещей
  • версия совместима с python
    • , работает ли каждая версия Cb c, работает
  • cb c версия + конфигурация
    • современная версия
    • скомпилированная с многопоточностью
    • ...
...