Zacznij terazZacznij za darmo

Problem planowania logistyki 2

Ponownie pełnisz rolę konsultanta dla producenta piekarników kuchennych i pomagasz zaplanować logistykę. Tym razem zadanie polega na opracowaniu planu na kolejne sześć miesięcy (styczeń–czerwiec). Do dyspozycji są nadal dwie lokalizacje magazynów (Nowy Jork i Atlanta) oraz cztery regionalne lokalizacje klientów (Wschód, Południe, Środkowy Zachód, Zachód). Koszty dostawy z każdego magazynu do poszczególnych regionów klientów przedstawia poniższa tabela. Celem jest wyznaczenie liczby wysyłek z każdego magazynu do klientów przy możliwie najniższych kosztach.

Klient Nowy Jork Atlanta
Wschód $211 $232
Południe $232 $212
Środkowy Zachód $240 $230
Zachód $300 $280

Słownik Pythona o nazwie costs zawierający koszty modelu oraz trzy listy – months, warehouse i customers – zostały już dla ciebie utworzone. Wartości słownika costs są wyświetlone na ekranie; pozostałe listy możesz też sprawdzić w konsoli. Model został już zainicjalizowany.

To ćwiczenie jest częścią kursu

Analityka łańcucha dostaw w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj zmienne decyzyjne modelu: najpierw użyj składni list comprehension, aby iterować po listach months, warehouse i customers i utworzyć listę kluczy. Następnie użyj tej listy kluczy z LpVariable.dicts(), aby zdefiniować potrzebne zmienne.
  • Zdefiniuj funkcję celu, sumując wszystkie koszty dostawy z danego magazynu do danego klienta w ciągu sześciu miesięcy.

Interaktywne ćwiczenie praktyczne

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

# Define decision variables
key = [(m, w, ____) for m in months for w in warehouse for c in customers]
var_dict = LpVariable.dicts('num_of_shipments', 
                            key, 
                            lowBound=____, cat=____)

# Use the LpVariable dictionary variable to define objective
model += lpSum([costs[(w, c)] * ____[(____, ____, ____)] 
                for m in months for w in warehouse for c in customers])
Edytuj i uruchom kod