coin-or / coin-or/python-mip

Error on using highs as solver

Open
#403 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Linear Programming
Stars
600
Forks
108
PR merge metrics
No merged PRs in 30d

Description

I have this code with python 3.11 and python 3.12:
```

import sys
print(sys.version_info)

from mip import Model, xsum, BINARY

# Create a model
model = Model(solver="highs")

# Add variables
x = [model.add_var(var_type=BINARY) for i in range(5)]

# Add constraints
model += xsum(x) <= 3
model += xsum(x) >= 1

# Set the objective
model.objective = xsum(x)

# Solve the model
model.optimize()

print("Objective:",model.objective_value)

# Check which solver was used
print(f"Solver used: {model.solver_name}")

```

I additionally installed highspy to be sure highs is available. Highs claims to be fastest open solver ;-) so I wanted to check this. On running I get error:

```
Traceback (most recent call last):
File "C:\Users\...\Python\xlsb-test\solver_check.py", line 7, in
model = Model(solver="highs")
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\mip\model.py", line 111, in __init__
self.constrs = mip.ConstrList(self)
^^^
UnboundLocalError: cannot access local variable 'mip' where it is not associated with a value
```

Using

```
...
model = Model(solver_name=HIGHS)
...
```

results in

```
An error occurred while loading the HiGHS library:
not enough values to unpack (expected 1, got 0)
Traceback (most recent call last):
File "C:\Users\...\Python\xlsb-test\solver_check.py", line 13, in
model = Model(solver_name=HIGHS)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\di29394\AppData\Roaming\Python\Python312\site-packages\mip\model.py", line 97, in __init__
self.solver = mip.highs.SolverHighs(self, name, sense)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\di29394\AppData\Roaming\Python\Python312\site-packages\mip\highs.py", line 690, in __init__
raise FileNotFoundError(
FileNotFoundError: HiGHS not found.Please install the `highspy` package, orset the `PMIP_HIGHS_LIBRARY` environment variable.
Exception ignored in:
Traceback (most recent call last):
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\mip\highs.py", line 728, in __del__
self._lib.Highs_destroy(self._model)
^^^^^^^^^
AttributeError: 'SolverHighs' object has no attribute '_lib'

```
As I said, highspy is installed. Setting `PMIP_HIGHS_LIBRARY` to the highs.exe path results in

```
Traceback (most recent call last):
File "C:\Users\...\Python\xlsb-test\solver_check.py", line 13, in
model = Model(solver_name=HIGHS)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\mip\model.py", line 97, in __init__
self.solver = mip.highs.SolverHighs(self, name, sense)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\mip\highs.py", line 703, in __init__
self._model = highslib.Highs_create()
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 914, in __getattr__
make_accessor(name)
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 910, in make_accessor
accessors[name](name)
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 840, in accessor_function
value = backendlib.load_function(BType, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: function/symbol 'Highs_create' not found in library 'C:\ProgramData\SOLVERS\highs.exe': error 0x7f. Did you mean: 'Highs_clear'?
Exception ignored in:
Traceback (most recent call last):
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\mip\highs.py", line 728, in __del__
self._lib.Highs_destroy(self._model)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 914, in __getattr__
make_accessor(name)
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 910, in make_accessor
accessors[name](name)
File "C:\Users\...\AppData\Roaming\Python\Python312\site-packages\cffi\api.py", line 840, in accessor_function
value = backendlib.load_function(BType, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: function/symbol 'Highs_destroy' not found in library 'C:\ProgramData\SOLVERS\highs.exe': error 0x7f
```

So there seems to exist no way for activating highs. Maybe the docs should be updated with a highs example.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.