Как настроить 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, пожалуйста, проверьте перед использованием.