Skip to main content

`mip-tool` is a package for Python-MIP.

Project description

MIP-Tool

MIP-Tool is a package for Python-MIP.

Installation

pip install mip-tool

Example

Show/View model

from mip import Model, maximize
from mip_tool import show_model

m = Model()
x = m.add_var("x")
y = m.add_var("y")
m.objective = maximize(x + y)
m += x + 2 * y <= 16
m += 3 * x + y <= 18
show_model(m)

Output

\Problem name: 

Minimize
OBJROW: - x - y
Subject To
constr(0):  x + 2 y <= 16
constr(1):  3 x + y <= 18
Bounds
End

In Jupyter

from mip_tool.view import view_model

view_model(m)

Output

モデル
変数x :非負変数
y :非負変数
目的関数x + y → 最大化
制約条件x + 2.0y ≦ 16.0
3.0x + y ≦ 18.0

Non-convex piecewise linear constraint

Maximize y which is on points of (-2, 6), (-1, 7), (2, -2), (4, 5).

import numpy as np
from mip import INF, Model, OptimizationStatus
from mip_tool import add_lines, show_model

m = Model(solver_name="CBC")
x = m.add_var("x", lb=-INF)
y = m.add_var("y", obj=-1)
curve = np.array([[-2, 6], [-1, 7], [2, -2], [4, 5]])
add_lines(m, curve, x, y)
m.verbose = 0
m.optimize()
assert m.status == OptimizationStatus.OPTIMAL
assert (x.x, y.x) == (-1, 7)
show_model(m)

Output

\Problem name: 

Minimize
OBJROW: - y
Subject To
constr(0):  x - w_0 - w_1 - w_2 = -2
constr(1):  y - w_0 + 3 w_1 -3.50000 w_2 = 6
constr(2):  - w_0 + z_0 <= -0
constr(3):  w_0 <= 1
constr(4):  - w_1 + 3 z_1 <= -0
constr(5):  w_1 -3 z_0 <= -0
constr(6):  w_2 -2 z_1 <= -0
Bounds
 x Free
 0 <= z_0 <= 1
 0 <= z_1 <= 1
Integers
z_0 z_1 
End

F example

Easy to understand using F.

attention: Change Model and Var when using mip_tool.func.

from mip_tool.func import F

m = Model(solver_name="CBC")
x = m.add_var("x")
y = m.add_var("y", obj=-1)
m += y <= F([[0, 2], [1, 3], [2, 2]], x)
m.verbose = 0
m.optimize()
print(x.x, y.x)  # 1.0 3.0
  • y <= F(curve, x) and y >= F(curve, x) call add_lines_conv.
  • y == F(curve, x) calls add_lines.

pandas.DataFrame example

attention: Change Series when using mip_tool.func.

import pandas as pd
from mip import Model, maximize, xsum
from mip_tool.func import addvars

A = pd.DataFrame([[1, 2], [3, 1]])
b = pd.Series([16, 18])
m = Model(solver_name="CBC")
x = addvars(m, A, "X", False)
m.objective = maximize(xsum(x))
m += A @ x <= b
m.verbose = 0
m.optimize()
print(x.astype(float))  # [4. 6.]

Expression m += A.T.apply(lambda row: xsum(row * x)) <= b may be faster than m += A @ x <= b.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

mip_tool-0.6.1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file mip_tool-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: mip_tool-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for mip_tool-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a16d2ee101ce635f871f94c67c356f26f7108fed3a2f7fb6c2c9bce5696db677
MD5 95ff268bfeade791f70a127c7b5318b6
BLAKE2b-256 ac2e8cafca506e2a527fae8f84749bfb23c50e432be49495526e715a2b42f70f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page