経済最適化問題
あなたは、小売店を経営しています。
あなたの店には、リンゴ、バナナ、オレンジといった果物があります。
あなたは、これらの果物を卸売業者から購入し、顧客に販売します。
各果物の単価、在庫、需要量は以下の通りです。
- リンゴ:単価100円、在庫200個、需要量100個
- バナナ:単価80円、在庫150個、需要量50個
- オレンジ:単価120円、在庫100個、需要量75個
最大の利益を得るためには、どの果物を何個購入し販売すべきでしょうか。
解き方・ソースコード
3種類の果物(リンゴ、バナナ、オレンジ)の購入・販売数を最適化する方法を考えます。
目的は、最大利益を得ることであり、利益は各果物の単価と数量の積の総和となります。
[Google Colaboratory]
1 | from pulp import * |
①まず、各果物の単価、在庫、需要量を辞書型データで設定します。
これらの情報は、問題を解決するための制約条件として使用されます。
例えば、リンゴの在庫量は200であり、需要量は100であることが設定されています。
②次に、PuLPを使用して変数を作成します。
LpVariableを使用して、リンゴ、バナナ、オレンジの数量を表す3つの変数を作成しています。
これらの変数は、それぞれapple_qty、banana_qty、orange_qtyという名前で定義され、lowBoundパラメータを使用して0以上の整数値であることが保証されています。
③PuLPを使用して問題を定義します。
LpProblemを使用して、問題のタイトル(Fruit Buying Problem)と目的(最大化)を指定します。
④目的関数は、各果物の数量と単価の積の総和であり、prob += prices[“apple”] * apple_qtyという形式で追加されます。
⑤リンゴ、バナナ、オレンジの数量に関する制約条件を追加します。
例えば、リンゴの在庫量は apple_qty <= inventory[“apple”] の制約条件で表されます。
その他の制約条件には、需要量の制約や、リンゴ、バナナ、オレンジの数量を合計した値の制約が含まれます。
⑥PuLPを使用して問題を解きます。
⑦各果物の数量と最大利益を表示しています。
[実行結果]
Apple quantity: 200.0 Banana quantity: 150.0 Orange quantity: 100.0 Maximum profit: 44000.0
この結果から、リンゴ200個、バナナ150個、オレンジ100個を購入し、最大利益は44,000円であることがわかります。