Esercizio sulla combinazione di vincoli
Stai lavorando a un piano di distribuzione per una rete di magazzini. La rete ha due magazzini (W1 e W2) e ciascuno può spedire tre diversi tipi di prodotti (A, B e C). W1 è piccolo e può spedire a settimana o 10 prodotti A, oppure 15 prodotti B, oppure 20 prodotti C. Vuoi minimizzare i costi totali.
Un DataFrame di Pandas chiamato demand è stampato nella console e contiene la domanda mensile per ciascun prodotto. Inoltre, è presente il codice del modello PuLP per inizializzare, definire le variabili decisionali, la funzione obiettivo e il vincolo affinché la spedizione totale di ciascun prodotto sia uguale alla sua domanda.
Questo esercizio fa parte del corso
Analytics per la supply chain con Python
Istruzioni dell'esercizio
- Completa il codice per il vincolo che modella le limitazioni di spedizione del magazzino W1 per 4 settimane.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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])) <= ____