論理制約の演習
あなたのお客様は、今後1か月で納品する6つの製品を注文しています。すべてを届けるには複数台のトラックでの出荷が必要です。トラックには25,000 lbsの重量制限があります。キャッシュフローの観点から、トラックに積載可能な中で最も利益が高い組み合わせを出荷したいと考えています。
| Product | Weight (lbs) | Profitability ($US) |
|---|---|---|
| A | 12,583 | 102,564 |
| B | 9,204 | 130,043 |
| C | 12,611 | 127,648 |
| D | 12,131 | 155,058 |
| E | 12,889 | 238,846 |
| F | 11,529 | 197,030 |
2つのPythonディクショナリ weight と prof、およびリスト prod が、各製品の重量・利益・製品名を含む形で用意されています。コンソールで中身を確認できます。
この演習はコースの一部です
Pythonで学ぶサプライチェーン分析
演習の手順
- トラックの総重量が25,000 lbs以下になるように制約を追加してください。
- モデルが製品D・E・Fのうち、最大で1つだけ選択するように制約を追加してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Initialized model, defined decision variables and objective
model = LpProblem("Loading Truck Problem", LpMaximize)
x = LpVariable.dicts('ship_', prod, cat='Binary')
model += lpSum([prof[i] * x[i] for i in prod])
# Define Constraint
model += lpSum([weight[i] * x[i] for i in prod]) ____ ____
model += ____
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))