🗓️

Python MIP

2022/02/02に公開

Python MIP

https://www.python-mip.com/

pip install mip

数理最適化問題

【販売価格】

製品X:100円/kg
製品Y:100円/kg

【製造式】

材料A(1kg)+材料B(3kg)→ 製品X(1kg)
材料A(2kg)+材料B(1kg)→ 製品Y(1kg)

【在庫量】

材料A:16kg
材料B:18kg


→ 製品Xと製品Yの販売価格の合計を最大にしたい.

「x」:製品Xの生産量、「y」:製品Yの生産量とする。

内容 数式 備考
変数 x, y \geq 0
目的関数 100x + 100y 最大化
制約条件1 x + 2y \leq 16 材料Aは(X、Yの製造に使用しても16kgを超えないこと)
制約条件2 3x + y \leq 18 料Bは(X、Yの製造に使用しても18kgを超えないこと)
from mip import CONTINUOUS, Model, OptimizationStatus, maximize, minimize

m = Model() # モデル生成

# 変数追加
x = m.add_var("x")
y = m.add_var("y")

# 目的関数
m.objective = maximize(100 * x + 100 * y)

# 以下制約条件
m += x + 2*y <= 16
m += 3*x + y <= 18

m.optimize() # ソルバー実行

# 結果の出力(追加した変数の値は●.xで取得できる)
print(x.x, y.x)

実行結果

4.0 6.0

Discussion