Pythonモジュールの「pulp」の使い方。「Pythonによる最適化」
最適化とは?
今回の記事ではPythonモジュールの「pulp」用いて最適化問題を解いてみた内容です。
そもそも最適化問題とは何か?という
疑問が出てくるかもしれませんが、私もその一人でした。
最適化問題とは簡単にいうと式を解く(最大値とか最小値を求める)ということです。以下簡単な例を紹介しつつコードの説明を行っていきます。
例題
以下の式を解くことはできるだろうか?
2X + Y の最小値は?
条件
X + Y >= 3
答えとしては簡単です。X = 0, Y = 3
これを自身で解くことは容易いですが、もっと難しい問題が出てきた場合解くのはめんどくさいですよね。
そういった際にpythonを用いて解くことができそれを「pulp」というモジュールを使えば可能ということを今回ご紹介したいのです。
上記の例題を実際にコードにしてみるとこのようになります。
import pulp
# 問題の定義
problem = pulp.LpProblem(name="Diet", sense=pulp.LpMinimize)
# 変数の定義
A = pulp.LpVariable(name = "A", lowBound = 0, cat="Integer")
B = pulp.LpVariable(name = "B", lowBound = 0, cat="Integer")
# 目的関数
problem += 2*A + B
# 制約条件の定義
problem += A + B >= 3
# 解く
status = problem.solve()
print(pulp.LpStatus[status])
# 結果表示
print("Result")
print("A:", A.value())
print("B:", B.value())
出力結果は下記になり上記で求めたものと同じになっていることが確認できました。
Optimal
Result
A: 0.0
B: 3.0
コメント