Zacznij terazZacznij za darmo

Problem komiwojażera (TSP)

Problem komiwojażera (TSP) to klasyczne zagadnienie z obszaru logistyki. Komiwojażer otrzymuje listę miast wraz z odległościami między każdą parą. Jego celem jest znalezienie najkrótszej trasy prowadzącej z punktu startowego przez wszystkie miasta i z powrotem do miejsca wyjścia. To obliczeniowo trudny problem, jednak Miller, Tucker i Zemlin (MTZ) wykazali, że można go rozwiązać przy użyciu całkowitoliczbowego programowania liniowego. W tym ćwiczeniu zdefiniujesz funkcję celu oraz kilka ograniczeń dla TSP na małym zbiorze danych zawierającym 15 miast (patrz rysunek poniżej). Twoim celem jest wypróbowanie LpVariable.dicts w połączeniu z wyrażeniami listowymi.

Photo of Cities

Przygotowano dla ciebie trzy zmienne Pythona: n, cities i dist\(^{1}\). Zmienna n oznacza liczbę miast, cities to lista miast oznaczonych numerycznie, natomiast dist to ramka danych pandas zawierająca parzyste odległości między każdą parą miast. Możesz je zbadać w konsoli. Model został już zainicjalizowany.

\(^{1}\) Zbiór danych pochodzi od: Gerhard Reinelt, TSPLIB - A Traveling Salesman Problem Library, ORSA Journal on Computing,

To ćwiczenie jest częścią kursu

Analityka łańcucha dostaw w Pythonie

Zobacz kurs

Interaktywne ćwiczenie praktyczne

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

# Define Decision Variables
x = LpVariable.dicts('X', [(____, ____) for c1 in ____ for c2 in ____], 
                     cat='____')
u = LpVariable.dicts('U', [____ for c1 in ____], 
                     lowBound=0, upBound=(n-1), cat=____)
Edytuj i uruchom kod