Zaktualizuj 'route-planning.md'

This commit is contained in:
Karol Piotrowski 2020-04-27 22:44:37 +00:00
parent 53b3461c58
commit be052adb91

View File

@ -44,7 +44,7 @@ Jest to funkcja zawierająca główną pętlę strategii przeszukiwania.
Najpierw konfigurowane są początkowe parametry potrzebne do prawidłowego działania funkcji. Tworzone są dwie listy: Najpierw konfigurowane są początkowe parametry potrzebne do prawidłowego działania funkcji. Tworzone są dwie listy:
* **bool** *closedList[][]* , która jest tablicą z początkowymi wartościami False, która przechowuje informacje o tym, czy dana komórka została już odwiedzona. * **bool** *closedList[][]* , która jest tablicą z początkowymi wartościami False, która przechowuje informacje o tym, czy dana komórka została już odwiedzona.
* openList, która jest zbiorem par typu `<double, pair <int int> >` * *openList*, która jest zbiorem par typu `<double, pair <int int> >`
W *cellDetails[i][j].parent_i* i *cellDetails[i][j].parent_j* zapisywane będą współrzędne poprzednika danej komórki W *cellDetails[i][j].parent_i* i *cellDetails[i][j].parent_j* zapisywane będą współrzędne poprzednika danej komórki
![](images/mainLoop.png) ![](images/mainLoop.png)
@ -52,3 +52,6 @@ W *cellDetails[i][j].parent_i* i *cellDetails[i][j].parent_j* zapisywane będą
Główna pętla pozostaje otwarta, dopóki *openList* nie będzie pusta. Pierwszą z instrukcji zawartych w pętli while jest zapamiętanie współrzędnych z pary z początku zbioru *openList*, zapisanie ich pod zmiennymi *i* i *j*, usunięcie pary ze zbioru i oznaczenie komórki o danych współrzędnych jako odwiedzoną. Główna pętla pozostaje otwarta, dopóki *openList* nie będzie pusta. Pierwszą z instrukcji zawartych w pętli while jest zapamiętanie współrzędnych z pary z początku zbioru *openList*, zapisanie ich pod zmiennymi *i* i *j*, usunięcie pary ze zbioru i oznaczenie komórki o danych współrzędnych jako odwiedzoną.
Następnie do zmiennej *waga* przypisuje się wagę tego pola. Następnie do zmiennej *waga* przypisuje się wagę tego pola.
![](images/actionCheck.png)
Następnie po kolei dla wszystkich akcji ruchu następuje sprawdzenie za pomocą *isValid*, czy z obecnego stanu można tę akcję wykonać. Jeśli następnie powiedzie się test celu dla stanu komórki otrzymanej po wykonaniu danej akcji, zapisujemy adres poprzedniej komórki jako poprzednika obecnej, wykonujemy funkcję *tracePath* i zamykamy program. W przeciwnym wypadku obliczmy nowe *f*, wyliczając uprzednio *g* i *h*. Jeśli *f* osiągnęło już zbyt wysoką wartość, dodajemy do *openList* nową parę złożoną z nowego *f* oraz współrzędnych obecnego pola i nadpisujemy stare *f*, *g* i *h* nowymi i ustawiamy poprzednika obecnej komórki na adres poprzedniego pola.