Zacznij terazZacznij za darmo

Ćwiczenie z łączenia ograniczeń

Pracujesz nad planem dystrybucji dla sieci magazynów. Sieć składa się z dwóch magazynów (W1 i W2), z których każdy może wysyłać trzy rodzaje produktów (A, B i C). W1 jest małym magazynem i może wysyłać albo 10 sztuk produktu A tygodniowo, albo 15 sztuk produktu B tygodniowo, albo 20 sztuk produktu C tygodniowo. Celem jest minimalizacja łącznych kosztów.

W konsoli wyświetlana jest ramka danych Pandas o nazwie demand, zawierająca miesięczne zapotrzebowanie na każdy produkt. Kod modelu PuLP inicjalizuje model, definiuje zmienne decyzyjne, funkcję celu oraz ograniczenie zapewniające, że łączna wysyłka każdego produktu odpowiada jego zapotrzebowaniu.

To ćwiczenie jest częścią kursu

Analityka łańcucha dostaw w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij kod ograniczenia modelującego możliwości wysyłkowe magazynu W1 dla 4 tygodni.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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])) <= ____
Edytuj i uruchom kod