Ö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
Ö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])) <= ____