Как установить CBC для Pyomo локально на машине с Windows?

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

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

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

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


person SimonLindahl    schedule 27.03.2020    source источник


Ответы (2)


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

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

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

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

  • Попробуйте еще раз с вашим исходным кодом, но придерживайтесь мастер-версий (см. Первую ссылку), поскольку сопровождающий гарантирует только полностью статические сборки для них!
  • Use the builds from AMPL
    • (tested and works for me; generally recommended in terms of quality/stability of builds)
  • Use the builds from coin-or/pulp, another modelling-tool for python
    • (tested and works for me)
  • Скомпилировать из исходников с помощью mingw64
  • (Используйте любую сборку и предоставьте некоторую внешнюю dll zlib и co -> трудно отлаживать)

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

  • license-stuff (what's part of those builds)
    • not sure if a company can afford to use binaries not build themself in regards to legal stuff
  • version-compatibility with python
    • does every version of Cbc work
  • cbc version + configuration
    • modern version
    • скомпилирован с многопоточностью
    • ...
person sascha    schedule 01.04.2020

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

opt = SolverFactory("cbc.exe")

results = opt.solve(model)

Меня устраивает.

person gvkcps    schedule 09.04.2020