Przykład problemu CVRP (Capacitated Vehicle Routing Problem) został opisany w tym fragmencie pomocy. Zadanie przedstawia obliczenia optymalizacyjne dotyczące problemów dostarczania towarów z centralnego magazynu, przy jak najkrótszych trasach i jak najmniejszej liczbie pojazdów, o określonej ładowności. Program wyznacza najmniejszą liczbę tras (liczbę pojazdów), zapewniających jak najlepsze wypełnienie ładowności pojazdów oraz powoduje że suma długości wszystkich tras jest najmniejsza (najkrótszy sumaryczny czas przejazdów). Rozpatrywany problem dotyczy 100 lokalizacji, z których pierwsza jest miejscem magazynu centralnego. Cały proces obliczeniowy rozpoczyna się od wprowadzenia danych a kończy na wydruku tabel z odległościami i czasami przejazdów. Pliki z danymi do obliczeń można przygotować w zakładce Dane (korzystając lub nie z map Google) lub wczytać dowolne pliki tekstowe z danymi, przygotowane innymi narzędziami (na przykład dowolnym edytorem tekstu). 

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 CVRP, który powoduje wyświetlenie kolejnego okienka dialogowego 'Dane CVRP'. 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 CVRP (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, w górnej części okienka dialogowego pojemności pojazdów (aktualnie wszystkie pojazdy maja identyczną ładowność) a poniżej adres lokalizacji do pola edycyjnego 'Adres (np. Warszawa...)' oraz odpowiadającą mu wielkość ładunku. 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. Program instalacyjny programu Trasa umieszcza, w odpowiednich folderach, przykładowe pliki z danymi które mogą służyć jako wzorce.



Po wybraniu pliku, jego zawartość jest wczytywana a pole licznika lokalizacji w zestawie zmienia się odpowiednio (tutaj 100).



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, ładunków lub usuwanie tych danych. Wystarczy przejść do wybranego rekordu, wprowadzić poprawki - zmodyfikować adres lub wartość ładunku, ewentualnie nacisnąć przycisk Kasuj - usunąć rekord. Po wybraniu przycisku Zakończ, wprowadzone zmiany będą zapamiętane a program powróci do okienka 'Wprowadzanie danych dla CVRP (mapa)'.



Użycie przycisku Zakończ, w okienku dialogowym 'Wprowadzanie danych dla CVRP (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.



Wybranie przycisku Anuluj powoduje wycofanie zmian w kolumnie drugiej tabeli czyli wszystkie wiersze tabeli będą brane pod uwagę w dalszych analizach. 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 w tym przypadku do wyboru tylko 2 warianty: 'Lokalizacje na mapie' oraz 'Nie generuj mapy'. 



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



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 6 zakładce okienka dialogowego 'Typ obliczeń i parametry', czyli zakładce CVRP, 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 zestawu najlepszych tras.



Opis wszystkich pól oraz parametrów zakładki CVRP 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 (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 wynikowy, z optymalnym rozwiązaniem. Plik taki ma nazwę 'wyn_naj_k_x.txt' z największą wartością 'x' lub 'x_p1' lub 'x_p2'. Im wyższy numer ('x') tym rozwiązanie lepsze. W katalogu mogą występować również inne pliki na przykład typu 'wyn_naj_p_x.txt' (dotyczące punktów startowych do obliczeń CVRP). W przypadku wybrania niewłaściwego pliku, program informuje o tym odpowiednim komunikatem.



Trasa dla optymalnego rozwiązania zostaje wyświetlona.



Można również wyszukać plik z najlepszym rozwiązaniem, 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 zadanie CVRP.



Po zatwierdzeniu wyboru program uruchamia okienko 'Wybierz katalog', w którym należy wskazać odpowiedni katalog z wynikami obliczeń.



Program przeszukuje katalog roboczy w celu znalezienia najlepszego rozwiązania i podaje minimalną, sumaryczną długość tras (w [m]) oraz nazwę pliku ze szczegółowymi wynikami.



Po naciśnięciu przycisku OK, na ekranie wyświetlana jest zawartość pliku z wynikami. Program znalazł najlepsze rozwiązanie w 938 próbie (nr_pl) dla minimalnej ilości pojazdów równej 7 (i_poj). Sumaryczna długość minimalna (dlug_min) dla wszystkich tras jest podana w [m]. Poszczególne trasy mają długości podane w kolumnie 'dług' (również w [m]) i charakteryzują się rożnymi ilościami lokalizacji (od 4 dla trasy nr 7 do 23 dla trasy nr 2). Istotna jest kolumna oznaczona 'poj', w której znajdują się informacje na temat wykorzystania ładowności pojazdów. Dla maksymalnej ładowności pojazdów wynoszącej 200, najmniej wykorzystany jest pojazd na trasie 6 ale odchyłka od pełnej ładowności jest bardzo mała (dodatkowo mamy tutaj najmniejszą ilość lokalizacji). Wniosek z tej krótkiej analizy jest taki, że program znalazł bardzo dobre rozwiązanie.



Można również wyświetlić wyniki w postaci tabelarycznej korzystając z opcji 'Wyniki | Pokaż wyniki'  lub ikonki . Na ekranie są wyświetlane tabele z wynikami dla poszczególnych tras. Poniżej pokazano tabelę dla trasy nr 1.



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


Jeśli użyjemy w okienku 'Wyniki optymalizacji' przycisku Pokaż na mapie, to w przeglądarce zostanie wyświetlona mapa z zestawem lokalizacji oraz trasą przejazdu nr 1, po optymalizacji. Identyczny efekt można uzyskać korzystając z opcji menu 'Wyniki | Pokaż na mapie' lub ikonki , na pasku narzędziowym. W tym drugim przypadku generowane są kolejno, jedna po drugiej, mapy z wszystkimi optymalnymi trasami. 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, z dowolnego miejsca i na dowolnym urządzeniu (komputer, laptop, tablet, 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. 



Użycie przycisku Pokaż na mapie generuje i uruchamia w przeglądarce kolejną mapę z optymalną trasą nr 2.



Lokalizacje na trasie są ponumerowane w kolejności w jakiej kierowca powinien optymalną trasę przejechać - kolejność jest zgodna z zapisem w tabeli wyników optymalizacji. 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 przedstawiono na kolejnej mapie. 



Poniżej przedstawiono okienko dialogowe 'Wyniki optymalizacji' dla trasy nr 4



a także odpowiadającą mu mapę z trasą nr 4.



Kolejne zrzuty ekranów dla tras 5 i 6 zostały tutaj pominięte, natomiast pokazano okienko 'Wyniki optymalizacji' dla ostatniej trasy nr 7, o najmniejszej liczbie lokalizacji.



Mapa z trasą nr 7 została pokazana poniżej.



Odległości i czasy przejazdów dla optymalnych tras można wyznaczyć korzystając z opcji 'Wyniki | Odległości i czasy'  lub ikonki na pasku narzędziowym. 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, jak pokazano powyżej, w okienku zgłasza się aktualna data i czas. 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.



Można również zmienić czas wyjazdu.


Po wybraniu przycisku Zatwierdź (w okienku 'Data i czas wyjazdu') uruchomione zostaną obliczenia a wyniki wkrótce pojawią się na ekranie - należy poczekać. Poniżej przedstawiono wyniki dla trasy nr 1. W tym przykładzie każda trasa rozpoczęła się od Poznania (punkt startowy, magazyn centralny) i na tej lokalizacji się kończy.



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. Poniżej załączono wyniki po zmianie średniego czasu obsługi z 10 na 5 min.



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


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 5 min), zapisaną w pliku 'pdf'.



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:



Dla trasy nr 4, mamy tabelę odległości i czasów przejazdu jak poniżej:



Na kolejnym zrzucie ekranu, zostały pokazane wyniki dla trasy nr 5.




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



Wyniki dla ostatniej trasy (nr 7) widoczne są poniżej.