Как настроить pulp1.6.8 для использования CoinMP.dll?

Может кто-нибудь сказать мне, как настроить pulp 1.6.8 для использования CoinMP.dll, как это работает решатель?

Я использую pulp 1.6.8 на ноутбуке с Win 7 64bit & python 3.5.4. Я обнаружил, что файл CoinMP.dll включен в пакет установки, но он не был скопирован в папку установки во время установки.

Pulp.pulpTestAll() указывает, что pulp.solvers.COINMP_DLL() не работает.

    >>> pulp.pulpTestAll()
             Testing zero subtraction
             Testing inconsistant lp solution
             Testing continuous LP solution
             Testing maximize continuous LP solution
             Testing unbounded continuous LP solution
             Testing Long Names
             Testing repeated Names
             Testing zero constraint
             Testing zero objective
             Testing LpVariable (not LpAffineExpression) objective
             Testing Long lines in LP
             Testing LpAffineExpression divide
             Testing MIP solution
             Testing MIP solution with floats in objective
             Testing MIP relaxation
             Testing feasibility problem (no objective)
             Testing an infeasible problem
             Testing an integer infeasible problem
             Testing column based modelling
             Testing dual variables and slacks reporting
             Testing fractional constraints
             Testing elastic constraints (no change)
             Testing elastic constraints (freebound)
             Testing elastic constraints (penalty unchanged)
             Testing elastic constraints (penalty unbounded)
    * Solver <class 'pulp.solvers.PULP_CBC_CMD'> passed.
    Solver <class 'pulp.solvers.CPLEX_DLL'> unavailable
    Solver <class 'pulp.solvers.CPLEX_CMD'> unavailable
    Solver <class 'pulp.solvers.CPLEX_PY'> unavailable
    Solver <class 'pulp.solvers.COIN_CMD'> unavailable
    Solver <class 'pulp.solvers.COINMP_DLL'> unavailable
    Solver <class 'pulp.solvers.GLPK_CMD'> unavailable
    Solver <class 'pulp.solvers.XPRESS'> unavailable
    Solver <class 'pulp.solvers.GUROBI'> unavailable
             Testing zero subtraction
             Testing inconsistant lp solution
    PuLP: Error while trying to execute gurobi_cl.exe
    * Solver <class 'pulp.solvers.GUROBI_CMD'> failed.
    Solver <class 'pulp.solvers.PYGLPK'> unavailable
    Solver <class 'pulp.solvers.YAPOSIB'> unavailable
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\ProgramData\Anaconda3\lib\site-packages\pulp\pulp.py", line 2304, in
    pulpTestAll
        raise PulpError("Tests Failed")
    pulp.constants.PulpError: Tests Failed

Я попытался загрузить CoinMP.DLL, используя pulp.solvers.COINMP_DLL_load_dll(path='D:\CoinMP.dll'), также не удалось:

    >>> pulp.COINMP_DLL_load_dll(path="D:\\CoinMP.dll")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\ProgramData\Anaconda3\lib\site-packages\pulp\solvers.py", line 1567,
    in COINMP_DLL_load_dll
        lib = ctypes.windll.LoadLibrary(str(path[-1]))
      File "C:\ProgramData\Anaconda3\lib\ctypes\__init__.py", line 429, in LoadLibra
    ry
        return self._dlltype(name)
      File "C:\ProgramData\Anaconda3\lib\ctypes\__init__.py", line 351, in __init__
        self._handle = _dlopen(self._name, mode)
    OSError: [WinError 126] 找不到指定的模块。

Кто-нибудь может дать мне некоторую подсказку? спасибо заранее.

ОК, я сам нашел решение для 64-битной оконной системы. Я хотел бы опубликовать свои шаги для справки других:

Шаг 1: Получите файл CoinMP.dll, вы можете скачать его с: https://projects.coin-or.org/CoinMP/browser/stable/1.7/CoinMP/CoinMP.zip?format=raw

Шаг 2: найдите файл pulp.cfg.win в папке вашего пакета, добавьте в него путь CoinMP, например:

[locations]
CoinMPPath = %(here)s\solverdir\CoinMP.dll

Шаг 3: если вы используете Python 3.X(для меня это 3.5.4), вам может понадобиться отредактировать файл solvers.py в папке установки pulp.
откройте файл и попробуйте заменить все 'c_char' на 'c_wchar'(из-за обновления ctypes).

Кстати, я обнаружил, что решатель Coinmp может иметь некоторые проблемы при решении проблемы MIP, пожалуйста, проверьте перед использованием.

0 ответов

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