Poniżej pokazano przykładowe obliczenia typu MD-MTSP (Multi Depot Multiple Traveling Salesman Problem). Pierwsza część zawiera obliczenia TSP dla 95 miast z województwa mazowieckiego. Druga przedstawia sposób realizacji obliczeń dla MD-MTSP. Cały proces rozpoczyna się od wprowadzenia danych a kończy na wydruku tabel z odległościami i czasami przejazdów. Jeśli czas realizacji trasy, po wykonaniu obliczeń TSP, jest za długi, to opcje SD-MTSP (przykład został opisany wcześniej) lub MD-MTSP są w tym przypadku dobrym rozwiązaniem. MD-MTSP pozwala podzielić początkowy zestaw lokalizacji na określoną ilość niezależnych podzbiorów i wyznaczyć optymalne trasy dla każdego z nich (ilość podtras to ilość pojazdów | kierowców), przy czym każda trasa ma własny punkt startowy (magazyn).

Po uruchomieniu programu należy wybrać opcję Oblicz lub odpowiadającą jej ikonkę . Na ekranie pojawia się okienko dialogowe 'Typ obliczeń i parametry', w którym jeśli nie mamy przygotowanych wcześniej danych, należy wybrać zakładkę 'Dane'.



W zakładce 'Dane' wybieramy przycisk TSP, który powoduje wyświetlenie kolejnego okienka dialogowego 'Dane TSP'. W okienku tym mamy do wyboru dwie możliwości: 'Dane na podstawie mapy' i 'Inne zestawy danych'. Pierwsza opcja pozwala na budowę zestawu lokalizacji w oparciu o wprowadzane lub wczytane z pliku adresy i interakcję z Google API. Druga opcja dotyczy przypadków wprowadzenia lub wczytania z pliku, dowolnego zestawu współrzędnych (lokalizacji), na których program wykona obliczenia optymalnych tras.



Po wybraniu pierwszej opcji, na ekranie pojawia się okienko 'Wprowadzanie danych dla TSP (mapa)'. Mamy tutaj dwie zasadnicze drogi wprowadzania danych. Pierwsza to wpisywanie adresów lokalizacji a druga, to wczytanie, wcześniej przygotowanych adresów z pliku.



W pierwszym wariancie wpisujemy adres lokalizacji do pola edycyjnego 'Adres (np. Warszawa...)'. Wzór adresu mamy w opisie pola edycyjnego (miejscowość, ulica, nr budynku). Dane adresowe mogą być dokładniejsze (kod pocztowy, województwo), szczególnie jeśli nazwy miejscowości się powtarzają. Po każdym wpisaniu adresu należy go dodać do zestawu adresów przyciskiem Dodaj. Po dodaniu lokalizacji zmienia się zawartość pola 'Licznik' - ilość lokalizacji w zestawie. Jeśli chcemy usunąć aktualny wpis to korzystamy z przycisku Kasuj

W drugim przypadku wprowadzania lokalizacji wybieramy przycisk Z pliku i wówczas pojawia się standardowe okienko 'Otwórz', w którym wybieramy, z dowolnego miejsca na dysku, plik (z rozszerzeniem *. txt), z wstępnie przygotowanymi adresami lokalizacji. Format zapisu pliku tekstowego (na przykład z wykorzystaniem Notatnika systemowego) jest bardzo prosty - w każdym wierszu kolejny adres.



Po wybraniu pliku, jego zawartość jest wczytywana a pole licznika lokalizacji w zestawie zmienia się odpowiednio do ilości adresów (tutaj 95).



Niezależnie z której wersji wprowadzania danych skorzystamy, w każdej chwili można podglądnąć zestaw lokalizacji korzystając z przycisku Pokaż wprowadzone adresy. Po użyciu tego przycisku, na ekranie wyświetlane jest kolejne okienko 'Wybrane adresy', w którym mamy pokazany cały zestaw dotychczas wprowadzonych adresów lub zawartość wczytanego pliku. Okienko to pozwala na modyfikację adresów lub ich usuwanie. Wystarczy przejść do wybranego rekordu, wprowadzić poprawki - zmodyfikować adres lub nacisnąć przycisk Kasuj - usunąć rekord. Po naciśnięciu przycisku Zakończ, wprowadzone zmiany będą zapamiętane a program powróci do okienka 'Wprowadzanie danych dla TSP (mapa)'.



Użycie przycisku Zakończ, w okienku dialogowym 'Wprowadzanie danych dla TSP (mapa)', powoduje uruchomienie współpracy programu z API Google. Dla zestawu adresów wyznaczane są długości i szerokości geograficzne a na ich podstawie program wylicza współrzędne X, Y poszczególnych lokalizacji. W zależności od ilości lokalizacji operacje te zajmują od kilku do kilkunastu sekund - należy poczekać. Po wykonaniu przeliczeń na ekranie jest prezentowane okienko 'Wybór punktów trasy', w którym znajdują się wszystkie adresy lokalizacji, długości i szerokości geograficzne oraz współrzędne X, Y. Druga kolumna w tabeli pozwala dodatkowo zaznaczyć lub odznaczyć wybrany rekord, który będzie uwzględniany dalej w obliczeniach lub nie.



Jeśli zamkniemy okienko 'Wybór punktów trasy' przyciskiem Zatwierdź, to na ekranie pojawia się kolejne okienko 'Lokalizacje i trasa'. W górnej części okienka jest umieszczony komunikat: 'Opcja korzysta z Google API - możliwa opłata' oraz pytanie 'Co należy pokazać'.  Mamy tutaj do wyboru 3 warianty: 'Lokalizacje na mapie', 'Lokalizacje i trasę na mapie' oraz 'Nie generuj mapy'. 



Jeżeli wybierzemy pierwszą opcję, to program pokaże kolejny ekran z prezentacją wszystkich lokalizacji na mapie.



I jeszcze powiększony fragment tej mapy:



Program może również wyświetlić trasę początkową (z losową kolejnością lokalizacji, przed optymalizacją).



Taką przykładową trasę umieszczono poniżej:


Powiększenie mapy, z początkową trasą, pokazano na kolejnym rysunku.

Po wprowadzeniu i wizualizacji danych można przejść do zakładki 'Podgląd', za pomocą której prezentuje się położenie lokalizacji w układzie współrzędnych XY. W polu edycyjnym 'Plik danych' pojawia się automatycznie plik wygenerowany podczas pracy z zakładką 'Dane'. Można oczywiście wpisać lub wkleić inną ścieżkę do pliku lub wybrać ją za pomocą przycisku wyboru pliku [...]. Zakładka 'Podgląd' ma również dwa dodatkowe pola wyboru 'Pokaż punkty' (włączone i niedostępne) oraz 'Opisz punkty' - lokalizacje mogą być opisane kolejnymi numerami w zestawie.



Wybranie przycisku Zatwierdź powoduje wyświetlenie wszystkich lokalizacji w układzie współrzędnych XY. 



W kolejnej zakładce okienka dialogowego 'Typ obliczeń i parametry', czyli zakładce TSP, możemy uruchomić obliczenia optymalizacyjne tras. Jeśli plik z danymi był wcześniej opracowany w zakładce Dane, to po przejściu do tej opcji, ścieżka do pliku danych jest automatycznie wczytywana do pola 'Plik danych'. Akceptując, przyciskiem Zatwierdź, wstępnie ustawione parametry obliczeń można natychmiast rozpocząć poszukiwanie najlepszych tras.



Opis wszystkich pól oraz parametrów zakładki TSP można znaleźć tutaj. Po wybraniu przycisku Zatwierdź, program rozpoczyna obliczenia optymalizacyjne. Po wykonaniu obliczeń, na ekranie pojawia się krótki komunikat.


Chcąc zobaczyć najlepsze rozwiązanie należy wybrać opcję menu 'Wyniki | Podgląd trasy' lub odpowiadającą mu ikonkę na pasku narzędziowym. Na ekranie zostaje wyświetlone okienko 'Podgląd tras', w którym należy wskazać typ zadania (TSP, SD-MTSP, MD-MTSP czy CVRP) oraz zaznaczyć lub nie opcje 'pokaż punkty' i 'opisz punkty'.



Po wybraniu przycisku Zatwierdź, w kolejnym kroku pojawia się okienko 'Otwórz', gdzie można wskazać plik danych z optymalnym rozwiązaniem. Plik taki ma nazwę początkowego pliku użytego do obliczeń plus oznaczenie '_opt'. Na przykład plik użyty do obliczeń 'nowy.txt', to plik z optymalnym rozwiązaniem ma nazwę 'nowy_opt.txt'. Plik taki może być punktem startowym do kolejnych obliczeń optymalizacyjnych. W katalogu mogą występować również pliki typu 'wyn_TSP_nowy_k95_1.txt'. W nazwie zawarta jest informacja o ilości lokalizacji (95) oraz numer porządkowy (1), który wskazuje kolejne, poprawiające się rozwiązania. Im wyższy numer tym rozwiązanie lepsze.



Trasa dla optymalnego rozwiązania zostaje wyświetlona (program korzysta z pliku '_opt').



Można również wyszukać najlepsze rozwiązanie, uruchamiając opcję 'Wyniki | Wyszukaj najlepsze rozwiązanie' lub ikonkę z lupką. Na ekranie wyświetlone zostaje okienko dialogowe 'Wyszukiwanie najlepszych rozwiązań', w którym wybieramy, w tym przypadku, zadanie TSP.



Po zatwierdzeniu wyboru program przeszukuje folder roboczy w celu znalezienia najlepszego rozwiązania. Wyświetlone zostaje okienko z minimalną długością trasy oraz nazwą pliku ze szczegółowymi wynikami.



Po naciśnięciu przycisku OK, na ekranie wyświetlana jest zawartość pliku z wynikami.



Można również wyświetlić wyniki w postaci tabelarycznej korzystając z opcji 'Wyniki | Pokaż wyniki'  lub ikonki . Na ekranie jest wyświetlana tabela z wynikami, jak pokazano poniżej.



Korzystając z przycisku Drukuj, w okienku 'Wyniki optymalizacji', możemy wysłać tabelkę na drukarkę lub do pliku '*.pdf'.



Na rysunku poniżej pokazano wydruk pierwszej strony pliku 'pdf'.



Jeśli użyjemy w okienku 'Wyniki optymalizacji' przycisku Pokaż na mapie, to zostanie wyświetlona mapa z całym zestawem lokalizacji oraz trasą przejazdu, po optymalizacji. Identyczny efekt można uzyskać korzystając z opcji menu 'Wyniki | Pokaż na mapie' lub ikonki , na pasku narzędziowym. Dla dużej ilości lokalizacji, poszczególne miejscowości są łączone na mapie symbolicznie odcinkami. W obliczeniach optymalizacyjnych wykorzystywane są dokładne dane, uzyskiwane z Google API. Zatem przebieg i długość trasy między poszczególnymi lokalizacjami jest dokładnie taka, jaką można uzyskać na przykład podczas wyznaczania trasy przejazdu między dwiema miejscowościami, z wykorzystaniem mapy Google.



Na tle mapy, pojawia się również okienko systemowego Notatnika z informacją o dostępności mapy na serwerze (po wygenerowaniu mapy program wysyła ją na serwer). Po uruchomieniu mapy, na dowolnym urządzeniu, można z niej korzystać w tradycyjny sposób.



Odległości i czasy przejazdów dla rozwiązania optymalnego można wyznaczyć korzystając z opcji 'Wyniki | Odległości i czasy'  lub ikonki . Jeżeli wybrana zostanie taka opcja, to wówczas program uruchamia obliczenia (z wykorzystaniem Google API). Jako pierwsze pojawia się okienko dialogowe, w którym należy podać datę i czas wyjazdu oraz średni czas obsługi. Parametry te będą wykorzystane do właściwego oszacowania odległości i czasów przejazdu między poszczególnymi lokalizacjami na trasie. W każdej kolejnej lokalizacji aktualizowany jest czas wyjazdu co pozwala na dokładniejsze wyznaczenie czasu przejazdu tego odcinka trasy (Google API uwzględnia natężenie ruchu w zależności od dnia i godziny).



Początkowo w okienku zgłasza się aktualna data. Jeśli mamy wyjazd zaplanowany na inny dzień, możemy wpisać nową datę (format: rrrr.mm.dd) lub skorzystać z przycisku Kalendarz. Pojawia się wówczas dodatkowe okienko, w którym możemy wybrać inną datę. Nie może to być data wcześniejsza niż aktualna, podobnie jak i czas wyjazdu, który musi być późniejszy od aktualnego. Po zatwierdzeniu przyciskiem OK, nowa data zostaje wprowadzona do kontrolki daty i uwzględniona w obliczeniach.



Po wybraniu przycisku Zatwierdź (w okienku 'Data i czas wyjazdu') uruchomione zostaną obliczenia a wyniki wkrótce pojawią się na ekranie. W górnej części tabeli wyników można modyfikować czas rozpoczęcia podróży oraz średni czas obsługi, w punktach pośrednich. Zmiany dokonane tutaj mogą pogorszyć jakość wyników. W tej chwili program nie przelicza ponownie trasy a jedynie modyfikuje czasy realizacji. 

Środkowa część tabeli zawiera kolejny numer adresu (kolejność optymalna), adres, odległość w [km], czas przejazdu pomiędzy dwoma lokalizacjami w [min] oraz całkowity czas przejazdu od punktu początkowego do danej lokalizacji, z uwzględnieniem średniego czasu obsługi.



Dolna część tabeli zawiera podsumowanie ilości kilometrów trasy, całkowitego czasu przejazdu (w min) oraz całkowitego czasu przejazdu z uwzględnieniem czasów obsługi. Trasa rozpoczęła się od miejscowości Białobrzegi i na tej lokalizacji się kończy. Kolejne okienko przedstawia ostatnie lokalizacje na trasie.



Jeśli zmienimy czas rozpoczęcia trasy i | lub średni czas obsługi, program wykona odpowiednie korekty w czasie realizacji poszczególnych lokalizacji oraz skoryguje całkowity czas realizacji trasy.


Korzystając z przycisku Drukuj możemy wysłać tabelkę na drukarkę lub do pliku 'pdf', jak pokazano poniżej.



Na kolejnym rysunku pokazano pierwszą stronę wydruku tabelki z adresami, odległościami i czasami przejazdu (dla założonego średniego czasu obsługi równego 5 min).



Po zamknięciu okienka ' Odległości i czasy przejazdów', na ekranie pojawia się okienko informacyjne, co należy zrobić w przypadku za długiego czasu realizacji trasy.



Jeśli użytkownik zdecyduje się na podział trasy na kilka mniejszych, to może skorzystać z zakładki SD-MTSP (Oblicz | zakładka SD-MTSP) lub z zakładki MD-MTSP (Oblicz | zakładka MD-MTSP). Współpraca z zakładką SD-MTSP została opisana wcześniej. Ten przykład dotyczy problemu MD-MTSP.

W zakładce MD-MTSP, można uruchomić obliczenia optymalizacyjne tras, dla wielu pojazdów równocześnie. MD-MTSP pozwala podzielić początkowy zestaw lokalizacji na określoną ilość niezależnych podzbiorów i wyznaczyć optymalne trasy dla każdego z nich (ilość podtras to ilość pojazdów | kierowców), przy czym każda trasa ma własny punkt startowy.

Jeśli plik z danymi był wcześniej opracowany w zakładce Dane lub przechodzi się tutaj po obliczeniach TSP, to po wejściu do tej opcji, ścieżka do pliku danych jest automatycznie wczytywana do pola 'Plik danych'. Opis wszystkich pól oraz parametrów zakładki MD-MTSP można znaleźć tutaj. Akceptując, przyciskiem Zatwierdź, wstępnie ustawione parametry obliczeń, można przejść do okienka 'Podział lokalizacji na zestawy'.




Aktualną ilość lokalizacji można podzielić na wybraną ilość zestawów (punktów startowych, pojazdów, magazynów).



Uruchomienie przycisku Zatwierdź powoduje start obliczeń optymalizacyjnych. Czas obliczeń zależy od wielu czynników a głównie od złożoności problemu oraz wybranej ilości powtórzeń. Po zakończeniu obliczeń wyświetlana jest informacja, jak poniżej:



Wybierając opcję menu 'Wyniki | Podgląd trasy' lub odpowiadającą mu ikonkę na pasku narzędziowym, generujemy nowe okienko dialogowe: 'Podgląd tras'. W okienku tym należy wskazać typ zadania (TSP, SD-MTSP, MD-MTSP czy CVRP), zaznaczyć lub nie opcje 'pokaż punkty' i 'opisz punkty' i nacisnąć przycisk Zatwierdź.



W kolejnym kroku pojawia się okienko 'Otwórz', gdzie można wskazać plik danych z optymalnym rozwiązaniem. Plik taki ma nazwę 'wyn_MD-MTSP_k_x.txt' z największą wartością 'x'. Im wyższy numer ('x') tym rozwiązanie lepsze. W katalogu mogą występować również inne pliki na przykład typu 'wyn_TSP_nowy_xxx.txt' (dotyczące wyników TSP). W przypadku wybrania niewłaściwego pliku, program informuje o tym odpowiednim komunikatem.


Na ekranie wyświetlane jest optymalne rozwiązanie, w tym przypadku dla 5 tras zastępujących pojedynczą trasę początkową. Każda z tras oznaczona jest innym kolorem a poszczególne lokalizacje mają przydzielone numery (oznaczenia miejscowości).



Można również wyszukać najlepsze rozwiązanie, uruchamiając opcję 'Wyniki | Wyszukaj najlepsze rozwiązanie' lub ikonkę z lupką. Należy tutaj wskazać typ zadania.



Po zatwierdzeniu wyboru program uruchamia okienko 'Wybierz katalog', w którym należy wskazać odpowiedni katalog z wynikami obliczeń. Standardowo okienko zgłasza się z wybranym aktualnym katalogiem roboczym (wystarczy zatwierdzić wybór przyciskiem OK).



Program przeszukuje wybrany katalog w celu znalezienia najlepszego rozwiązania i podaje minimalną długość sumarycznej trasy (5 tras) oraz nazwę pliku ze szczegółowymi wynikami.



Po naciśnięciu przycisku OK, na ekranie wyświetlana jest zawartość pliku z wynikami. Podana jest miedzy innymi minimalna sumaryczna długość tras (ze wszystkich obszarów) oraz szczegółowe informacje dla każdej z tras składowych (minimalna długość, ilość lokalizacji i kolejność lokalizacji na trasie).



Wyniki można wyświetlać w postaci tabelarycznej korzystając z opcji menu 'Wyniki | Pokaż wyniki'  lub ikonki . Poniżej przedstawiono przykładowe wyniki dla zestawu miejscowości z pierwszej trasy.



Wyniki można wyświetlać na mapie korzystając z przycisku Pokaż na mapie, w okienku 'Wyniki optymalizacji', albo z opcji menu 'Wyniki | Pokaż na mapie' lub ikonki . Poniżej, na mapie, przedstawiono wyznaczoną trasę nr 1. Na tle mapy, pojawia się również okienko systemowego Notatnika z informacją o dostępności mapy na serwerze (po wygenerowaniu mapy, program wysyła ją na serwer). Po uruchomieniu mapy, w przeglądarce, na dowolnym urządzeniu (komputer, laptop, tablet lub telefon), można z niej korzystać w tradycyjny sposób.



Po zamknięciu okienka 'Wyniki optymalizacji', dla pierwszej trasy, na ekranie pojawia się nowe okienko dialogowe 'Wyniki optymalizacji' dla trasy nr 2. 



Poniżej, na mapie, przedstawiono wyznaczoną trasę nr 2. Na tle mapy, pojawia się również kolejne okienko systemowego Notatnika z informacją o dostępności mapy na serwerze. 



Po zamknięciu kolejnego okienka 'Wyniki optymalizacji', dla trasy nr 2, na ekranie pojawia się nowe okienko dialogowe 'Wyniki optymalizacji' dla trasy nr 3. 



Trasę nr 3 pokazano na kolejnej mapie wraz z okienkiem Notatnika systemowego, z informacją o dostępności mapy na serwerze. 




Okienko dialogowe 'Wyniki optymalizacji' dla trasy nr 4, pokazano poniżej. 




I podobnie, na kolejnym rysunku przedstawiono wyniki optymalizacji dla trasy nr 5.



Korzystając z przycisku Drukuj, możemy również wysłać dane z tabel na drukarkę lub do pliku '*.pdf'. Przykładowo pokazano to dla trasy nr 1.



Na rysunku poniżej pokazano zrzut ekranu pliku 'pdf'.


Odległości i czasy przejazdów dla rozwiązań optymalnych można wyznaczyć (obliczenia z wykorzystaniem Google API) korzystając z opcji 'Wyniki | Odległości i czasy'  lub ikonki . Jako pierwsze pojawia się okienko dialogowe, w którym należy podać datę i czas wyjazdu oraz średni czas obsługi. Parametry te będą wykorzystane do właściwego oszacowania odległości i czasów przejazdu między poszczególnymi lokalizacjami na trasie. W każdej kolejnej lokalizacji aktualizowany jest czas wyjazdu co pozwala na dokładniejsze wyznaczenie czasu przejazdu tego odcinka trasy (Google API uwzględnia natężenie ruchu w zależności od dnia i godziny).


Początkowo w okienku zgłasza się aktualna data. Jeśli mamy wyjazd zaplanowany na inny dzień, możemy wpisać nową datę (format: rrrr.mm.dd) lub skorzystać z przycisku Kalendarz. Pojawia się wówczas dodatkowe okienko, w którym możemy wybrać inną datę. Nie może to być data wcześniejsza niż aktualna, podobnie jak i czas wyjazdu, który musi być późniejszy od aktualnego. Po zatwierdzeniu przyciskiem OK, nowa data zostaje wprowadzona do kontrolki daty i uwzględniona w obliczeniach.

Po wybraniu przycisku Zatwierdź (w okienku 'Data i czas wyjazdu') uruchomione zostaną obliczenia a wyniki wkrótce pojawią się na ekranie. W górnej części tabeli wyników można modyfikować czas rozpoczęcia podróży oraz średni czas obsługi, w punktach pośrednich. Zmiany dokonane tutaj mogą pogorszyć jakość wyników. W tej chwili program nie przelicza ponownie trasy a jedynie modyfikuje czasy realizacji. 

Środkowa część tabeli zawiera kolejny numer adresu (kolejność optymalna), adres, odległość w [km], czas przejazdu pomiędzy dwoma lokalizacjami oraz całkowity czas przejazdu od punktu początkowego do danej lokalizacji, z uwzględnieniem średniego czasu obsługi. Dolna część tabeli zawiera podsumowanie ilości kilometrów trasy, całkowitego czasu przejazdu (w min) oraz całkowitego czasu przejazdu, z uwzględnieniem czasów obsługi. 

Poniżej przedstawiono przykładowe wyniki dla trasy nr 1. Trasa rozpoczęła się od miejscowości Błonie i na tej lokalizacji się kończy.



Wyliczoną trasę można wydrukować lub zapisać do pliku 'pdf'.



Na kolejnym rysunku pokazano stronę wydruku tabelki z adresami, odległościami i czasami przejazdu na trasie nr 1 (dla założonego średniego czasu obsługi równego 10 min).



Dla trasy nr 2, tabela odległości i czasów przejazdu została przedstawiona poniżej.




Tabela odległości i czasów przejazdu dla trasy nr 3 jest następująca:



Trasa nr 4 ma następujące odległości i czasów przejazdu:



a ostatnia tabela odległości i czasów przejazdu dotyczy trasy nr 5: