ケーススタディ演習での論理制約の追加
自動車メーカーの Capacitated Plant Location モデルのケーススタディを続けます。4 つの Pandas データフレーム demand、var_cost、fix_cost、cap が与えられており、それぞれ地域需要(千台)、変動生産コスト(千USドル)、固定生産コスト(千USドル)、生産能力(千台)を含みます。さらに、2 つの Python リスト loc と size も用意されており、拠点の場所と 2 種類の工場能力を表します。これらの変数はすべて、確認できるようコンソールに出力済みです。モデルの初期化、意思決定変数の定義、目的関数と制約の作成までのコードは用意されています。
この演習はコースの一部です
Pythonで学ぶサプライチェーン分析
演習の手順
- USA の高容量プラントを開設する場合、ドイツの低容量プラントも開設するという論理制約を追加してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_",
[(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
+ lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)]
for s in size])
# Define logical constraint
model += ____ - ____ <= ____