Skip to content

Commit

Permalink
Fix CI issues (#366)
Browse files Browse the repository at this point in the history
Fix CI issues
  • Loading branch information
tuliotoffolo authored Jan 19, 2024
1 parent 78ad7e4 commit adfb221
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 49 deletions.
18 changes: 7 additions & 11 deletions .github/workflows/github-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,14 @@ jobs:
strategy:
fail-fast: false
matrix:
# temporarily downgraded to 3.7.9 and 3.8.10 due to a bug https://github.com/actions/setup-python/issues/402
python-version: ["3.8.10", "3.9.13", "3.10.9", "3.11.1", "3.12.0", "pypy3.9-v7.3.9"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "pypy3.9-v7.3.15"]
os: [macos-11, macos-12, ubuntu-20.04, ubuntu-22.04, windows-2019, windows-2022]
exclude:
# temporarily exclude pypy3 on mac-os as there failing tests caused by bug on cbc side
- os: macos-11
python-version: "pypy3.9-v7.3.9"
python-version: "pypy3.9-v7.3.15"
- os: macos-12
python-version: "pypy3.9-v7.3.9"
# several version (3.7.9 and 3.8.10) at not available at ubuntu-22.04
- os: ubuntu-22.04
python-version: "3.8.10"
python-version: "pypy3.9-v7.3.15"

steps:

Expand All @@ -70,22 +66,22 @@ jobs:
run: python -m pip install --upgrade pip

- name: Install mip for testing (PyPy)
if: ${{ matrix.python-version == 'pypy3.9-v7.3.9' }}
if: ${{ matrix.python-version == 'pypy3.9-v7.3.15' }}
run: python -m pip install .[test,numpy]

- name: Install mip for testing (CPython)
if: ${{ matrix.python-version != 'pypy3.9-v7.3.9' }}
if: ${{ matrix.python-version != 'pypy3.9-v7.3.15' }}
run: python -m pip install .[test,numpy,gurobi]

- name: list installed packages
run: python -m pip list

- name: Run tests PyPy
if: ${{ matrix.python-version == 'pypy3.9-v7.3.9'}}
if: ${{ matrix.python-version == 'pypy3.9-v7.3.15'}}
run: |
python -m pytest test --verbose --color=yes --doctest-modules --ignore="test/test_gurobi.py"
- name: Run tests
if: ${{ matrix.python-version != 'pypy3.9-v7.3.9'}}
if: ${{ matrix.python-version != 'pypy3.9-v7.3.15'}}
run: |
python -m pytest test --verbose --color=yes --doctest-modules -Werror
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Some of the main features of MIP are:
different solvers are handled by Python-MIP and you write only one
solver independent code;

* written in modern [typed](https://docs.python.org/3/library/typing.html) Python 3 (requires Python 3.6 or newer).
* written in modern [typed](https://docs.python.org/3/library/typing.html) Python 3 (requires Python 3.8 or newer).

## Examples

Expand Down
35 changes: 1 addition & 34 deletions examples/plant_location.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,6 @@

import sys

# Workaround for issues with python not being installed as a framework on mac
# by using a different backend.
if sys.platform == "darwin": # OS X
import matplotlib as mpl

mpl.use("Agg")
del mpl

import matplotlib.pyplot as plt
from math import sqrt, log
from itertools import product
from mip import Model, xsum, minimize, OptimizationStatus
Expand Down Expand Up @@ -53,20 +44,6 @@
# demands
d = {1: 302, 2: 273, 3: 275, 4: 266, 5: 287, 6: 296, 7: 297, 8: 310, 9: 302, 10: 309}

# plotting possible plant locations
for i, p in pf.items():
plt.scatter((p[0]), (p[1]), marker="^", color="purple", s=50)
plt.text((p[0]), (p[1]), "$f_%d$" % i)

# plotting location of clients
for i, p in pc.items():
plt.scatter((p[0]), (p[1]), marker="o", color="black", s=15)
plt.text((p[0]), (p[1]), "$c_{%d}$" % i)

plt.text((20), (78), "Region 1")
plt.text((70), (78), "Region 2")
plt.plot((50, 50), (0, 80))

dist = {
(f, c): round(sqrt((pf[f][0] - pc[c][0]) ** 2 + (pf[f][1] - pc[c][1]) ** 2), 1)
for (f, c) in product(F, C)
Expand Down Expand Up @@ -116,26 +93,16 @@

m.optimize()

plt.savefig("location.pdf")

if m.num_solutions:
print("Solution with cost {} found.".format(m.objective_value))
print("Facilities capacities: {} ".format([z[f].x for f in F]))
print("Facilities cost: {}".format([y[f].x for f in F]))

# plotting allocations
for i, j in [(i, j) for (i, j) in product(F, C) if x[(i, j)].x >= 1e-6]:
plt.plot(
(pf[i][0], pc[j][0]), (pf[i][1], pc[j][1]), linestyle="--", color="darkgray"
)

plt.savefig("location-sol.pdf")

# sanity checks
opt = 99733.94905406
if m.status == OptimizationStatus.OPTIMAL:
assert abs(m.objective_value - opt) <= 0.01
elif m.status == OptimizationStatus.FEASIBLE:
assert m.objective_value >= opt - 0.01
else:
assert m.status not in [OptimizationStatus.INFEASIBLE, OptimizationStatus.UNBOUNDED]
assert m.status not in [OptimizationStatus.INFEASIBLE, OptimizationStatus.UNBOUNDED]
17 changes: 14 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,23 @@ classifiers = [
]
dynamic = ["version"]

dependencies = ["cffi==1.15.*"]
dependencies = ["cffi>=1.15"]

[project.optional-dependencies]
numpy = ["numpy==1.24.*; python_version >= '3.8'", "numpy==1.21.6; python_version == '3.7'"]
numpy = [
"numpy>=1.25; python_version>='3.9'",
"numpy==1.24.*; python_version=='3.8'",
"numpy==1.21.*; python_version=='3.7'"
]
gurobi = ["gurobipy>=8"]
test = ["pytest==7.2.0", "networkx==2.8.8; python_version >= '3.8'", "networkx==2.6.3; python_version == '3.7'", "matplotlib==3.6.2; python_version >= '3.8'", "matplotlib==3.5.3; python_version == '3.7'"]
test = [
"pytest>=7.4",
"networkx==2.8.8; python_version>='3.8'",
"networkx==2.6.3; python_version=='3.7'",
"matplotlib>=3.7; python_version>='3.9'",
"matplotlib==3.6.2; python_version=='3.8'",
"matplotlib==3.5.3; python_version=='3.7'"
]

[project.urls]
"Homepage" = "https://www.python-mip.com"
Expand Down

0 comments on commit adfb221

Please sign in to comment.