Aggiungere un vincolo logico nell'esercizio del caso di studio
Prosegui con il caso di studio del modello di Localizzazione di Impianti con capacità per un produttore di auto. Ti vengono forniti quattro DataFrame di Pandas demand, var_cost, fix_cost e cap che contengono la domanda per regione (migliaia di auto), i costi di produzione variabili (migliaia di $US), i costi di produzione fissi (migliaia di $US) e la capacità produttiva (migliaia di auto). Sono state create anche due liste Python, loc e size, che contengono le diverse località e i due tipi di capacità degli impianti. Tutte queste variabili sono state stampate in console per tua consultazione. Il codice per inizializzare, definire le variabili decisionali, creare la funzione obiettivo e i vincoli è già stato completato per te.
Questo esercizio fa parte del corso
Analytics per la supply chain con Python
Istruzioni dell'esercizio
- Aggiungi un vincolo logico in modo che, se l'impianto ad alta capacità negli USA è aperto, allora sia aperto anche un impianto a bassa capacità in Germania.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_",
[(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
+ lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)]
for s in size])
# Define logical constraint
model += ____ - ____ <= ____