Aan de slagGa gratis aan de slag

Oefening: beperkingen combineren

Je werkt aan een distributieplan voor een magazijnnetwerk. Het netwerk heeft twee magazijnen (W1 en W2) en elk kan drie verschillende soorten producten verzenden (A, B en C). W1 is klein en kan óf 10 producten A per week verzenden, óf 15 producten B per week, óf 20 producten C per week. Je wilt de totale kosten minimaliseren.

Een Pandas DataFrame met de naam demand is in de console afgedrukt en bevat de maandelijkse vraag voor elk product. Daarnaast staat de code van het PuLP-model klaar om het model te initialiseren, de beslissingsvariabelen en de doelfunctie te definiëren, en de beperking dat de totale verzending van elk product gelijk is aan de vraag.

Deze oefening maakt deel uit van de cursus

Supply Chain Analytics in Python

Cursus bekijken

Oefeninstructies

  • Maak de code af voor de beperking die de verzendlimieten van magazijn W1 voor 4 weken modelleert.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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])) <= ____
Code bewerken en uitvoeren