目的
Python実践データ分析100本ノックを読んで、最適化ライブラリのPulpに興味が湧いたので、備忘録もかねて
#達成したいこと
整数をとる変数を使った最適化の簡単に行いたい
もちろん、For文を使った総当たりなら簡単にかけるし、一つづつパラメータを振りながら探ることもできるが、時間がかかるし、拘束条件の設定が面倒だったりする
#用いるライブラリ Pulpとortoolpy
Anacondaでコンソールから
conda install -c conda-forge pulp
pip install ortoolpy
でインストールできる
#サンプル
sample.py
from pulp import LpVariable,lpSum,value
from ortoolpy import model_max,addvars,addvals
m=model_max()
v1={"x":LpVariable("vx",lowBound=0,cat='Integer'),
"y":LpVariable("vy",lowBound=0,cat='Integer')}
m+=lpSum(v1["x"]+v1["y"])
m+=lpSum(v1["x"]*2+v1["y"])<=10
m+=lpSum(v1["x"]+v1["y"]*2)<=7
m.solve()
for k,x in v1.items():
print(k,value(x))
print(value(m.objective))
x 4.0
y 1.0
5.0