Kom igångKom igång gratis

Övning i kombinerade bivillkor

Du arbetar med en distributionsplan för ett lagernätverk. Nätverket har två lager (W1 och W2), och vardera kan skicka tre olika produkttyper (A, B och C). W1 är litet och kan antingen skicka 10 produkter av typ A per vecka, 15 produkter av typ B per vecka eller 20 produkter av typ C per vecka. Målet är att minimera de totala kostnaderna.

Ett Pandas DataFrame vid namn demand skrivs ut i konsolen och innehåller den månatliga efterfrågan för varje produkt. Dessutom finns koden för PuLP-modellen som initierar, definierar beslutsvariabler, målfunktion och bivillkor så att den totala leveransen av varje produkt motsvarar efterfrågan.

Den här övningen är en del av kursen

Supply Chain Analytics i Python

Visa kurs

Övningsinstruktioner

  • Komplettera koden för bivillkoret som modellerar lager W1:s leveransbegränsningar för 4 veckor.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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])) <= ____
Redigera och kör kod