Dodawanie ograniczenia logicznego w ćwiczeniu studium przypadku
Kontynuuj analizę studium przypadku modelu lokalizacji zakładu produkcyjnego z ograniczoną zdolnością wytwórczą dla producenta samochodów. Otrzymujesz cztery ramki danych Pandas: demand, var_cost, fix_cost i cap, zawierające odpowiednio regionalny popyt (w tysiącach samochodów), zmienne koszty produkcji (w tys. USD), stałe koszty produkcji (w tys. USD) oraz zdolność produkcyjną (w tys. samochodów). Utworzono również dwie listy Pythona – loc i size – zawierające dostępne lokalizacje oraz dwa typy zdolności produkcyjnych zakładów. Wszystkie te zmienne zostały wyświetlone w konsoli. Kod inicjalizujący model, definiujący zmienne decyzyjne, funkcję celu i ograniczenia został już dla ciebie przygotowany.
To ćwiczenie jest częścią kursu
Analityka łańcucha dostaw w Pythonie
Instrukcje do ćwiczenia
- Dodaj ograniczenie logiczne: jeśli zakład o dużej zdolności produkcyjnej w USA jest otwarty, to zakład o małej zdolności produkcyjnej w Niemczech jest również otwarty.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 += ____ - ____ <= ____