始める無料で始める

制約の組み合わせ演習

あなたは倉庫ネットワークの配送計画に取り組んでいます。ネットワークには2つの倉庫(W1 と W2)があり、各倉庫は3種類の製品(A、B、C)を出荷できます。W1 は小規模で、1週間あたり製品Aを10個、または製品Bを15個、または製品Cを20個のいずれかを出荷できます。あなたは総コストを最小化しようとしています。

コンソールには、各製品の月次需要を含む demand という名前のPandasのDataFrameが表示されています。さらに、PuLPモデルのコードが用意されており、モデルの初期化、意思決定変数、目的関数の定義に加え、各製品の総出荷量がその需要と等しくなる制約が含まれています。

この演習はコースの一部です

Pythonで学ぶサプライチェーン分析

コースを見る

演習の手順

  • 4週間における倉庫 W1 の出荷制限を表す制約のコードを完成させてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh], 
                     lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c]  for c in cust for p in prod for w in wh])
for c in cust:
    for p in prod:
        model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]

# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust]) 
          + ____ * lpSum([X[(____, ____, c)] for c in cust])
          + ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____
コードを編集して実行