英文:
using HiGHS solver with highspy and pyomo
问题
我正在尝试使用Python/Pyomo运行多个模型,使用HiGHS求解器。几个月前的某个时候,我成功运行了一些东西,但现在似乎陷入了困境,无法使它们正常工作。我正在运行一个较旧的mac,macOS版本是11.7。
到目前为止的操作:
我按照这些说明(v1.5.3)从源代码安装了HiGHS求解器,并且可以通过命令行提供.mps模型并获得结果,所以这部分是有效的。
但是,当我安装了PyPi上的highspy
时,似乎安装成功,但在导入时崩溃:
~ % pip3 show highspy
Name: highspy
Version: 1.5.3
Summary: Python interface to HiGHS
Home-page: https://github.com/ergo-code/highs
Author:
Author-email:
License: MIT
Location: /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages
Requires:
Required-by:
~ % python3
Python 3.11.0 (v3.11.0:deaf509e8f, Oct 24 2022, 14:43:23) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import highspy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/__init__.py", line 1, in <module>
from .highs import (
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs.py", line 1, in <module>
from .highs_bindings import (
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so, 2): Symbol not found: __ZN5Highs10clearModelEv
Referenced from: /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so
>>>
我认为可能存在与Python 3.11的集成问题,因此我在Python 3.10的虚拟环境中尝试了相同的操作,并获得了相同的结果。
我相当确定(尽管不知道为什么,因为在命令行中可用可执行文件...)我需要在pyomo
模型内部import highspy
以连接到求解器。我尝试了一个带有和不带有该导入的简单模型,两者都失败了。导入失败的原因如上所述,而没有导入的模型会出现以下错误:
pyomo.common.errors.ApplicationError: Solver <class 'pyomo.contrib.appsi.base.SolverFactoryClass.register.<locals>.decorator.<locals>.LegacySolver'> is not available (NotFound).
英文:
I'm attempting to run several models using the HiGHS solver with python/pyomo. At some point a few months back, I had a few things running, but now it seems I'm at a standstill trying to get things working. I'm running an older mac with macOS 11.7
Actions so far:
I installed the HiGHS solver from source using these instructions (v1.5.3) and I can feed it .mps models from the command line and get results, so that is working.
However, when I installed highspy
from PyPi, it appears to install OK, but crashes on import:
~ % pip3 show highspy
Name: highspy
Version: 1.5.3
Summary: Python interface to HiGHS
Home-page: https://github.com/ergo-code/highs
Author:
Author-email:
License: MIT
Location: /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages
Requires:
Required-by:
~ % python3
Python 3.11.0 (v3.11.0:deaf509e8f, Oct 24 2022, 14:43:23) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import highspy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/__init__.py", line 1, in <module>
from .highs import (
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs.py", line 1, in <module>
from .highs_bindings import (
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so, 2): Symbol not found: __ZN5Highs10clearModelEv
Referenced from: /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/highspy/highs_bindings.cpython-311-darwin.so
>>>
I figured there might be an integration issue w/ Python 3.11, so I tried the same in a Python 3.10 venv and got same result.
I'm pretty sure (though I'm not sure why as the executable is available on the CLI...) that I need to import highspy
within a pyomo
model to get connectivity to the solver. I attempted a trivial model with/without that import and both failed. The "import" one failed for reasons above and the non-import one coughs up:
pyomo.common.errors.ApplicationError: Solver <class 'pyomo.contrib.appsi.base.SolverFactoryClass.register.<locals>.decorator.<locals>.LegacySolver'> is not available (NotFound).
答案1
得分: 0
我认为经过一些调查,我认为这表明了问题:
https://github.com/ERGO-Code/HiGHS/issues/1119
听起来像是旧一代OS X构建的1.5.3版本的发行版可能缺少一些包含文件,并且正在进行修复。
英文:
After a little digging, I think this indicates the problem:
https://github.com/ERGO-Code/HiGHS/issues/1119
It sounds like distro versions of 1.5.3 for older generation OS X builds may be missing some include files and a fix is in-work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论