route-planning.md - successor function content
This commit is contained in:
parent
a6a8812ace
commit
b23865b090
@ -8,8 +8,8 @@ w plikach [AStarNode.py](https://git.wmi.amu.edu.pl/s444409/DSZI_Survival/src/ma
|
|||||||
|
|
||||||
* Na początku sprawdza czy kolejka jest pusta, jeśli tak zwraca *None*
|
* Na początku sprawdza czy kolejka jest pusta, jeśli tak zwraca *None*
|
||||||
* Jeśli test spełnienia celu się powiedzie, sprawdzamy dodatkowo czy nasz punkt docelowy nie jest elementem kolizyjnym, jeśli jest, to *cel = cel.parent* i zwracamy ciąg akcji
|
* Jeśli test spełnienia celu się powiedzie, sprawdzamy dodatkowo czy nasz punkt docelowy nie jest elementem kolizyjnym, jeśli jest, to *cel = cel.parent* i zwracamy ciąg akcji
|
||||||
* Umieszczamy cel docelowy w tej iteracji w liście odwiedzonych pól
|
* Dodajemy dane miejsce do listy *explored*
|
||||||
* Następnie w pętli *for* deklarujemy nowy stan i priorytet zgodnie z funkcją następnika
|
* Następnie w pętli *for* deklarujemy nowy stan i priorytet zgodnie z funkcją następnika, jego priorytet określamy za pomocą funkcji priorytetu *self.priority*
|
||||||
* Jeśli stan nie jest w kolejce i nie ma go w odwiedzonych polach, umieszczamy go w kolejce
|
* Jeśli stan nie jest w kolejce i nie ma go w odwiedzonych polach, umieszczamy go w kolejce
|
||||||
zgodnie z priorytetem, zapobiegamy też wystąpienia dwóch takich samych priorytetów poprzes *self.testCount += 1*
|
zgodnie z priorytetem, zapobiegamy też wystąpienia dwóch takich samych priorytetów poprzes *self.testCount += 1*
|
||||||
* A jeśli stan *newNode* należy do kolejki i jakiś inny stan *node* z kolejki posiada od niego większy priorytet,
|
* A jeśli stan *newNode* należy do kolejki i jakiś inny stan *node* z kolejki posiada od niego większy priorytet,
|
||||||
@ -17,4 +17,13 @@ to usuwamy z kolejki *node* i dodajemy *newNode*
|
|||||||
|
|
||||||
## Funkcja następnika
|
## Funkcja następnika
|
||||||
|
|
||||||
|
* Do wynik inicjujemy obrót w lewo i prawo, gdyż to zawsze nasz agent może wykonać
|
||||||
|
* Sprawdzamy czy jest możliwość ruchu do przodu:
|
||||||
|
* Sprawdzamy czy przed nami jest jakaś kolizja jeśli jest to weryfikujemy
|
||||||
|
czy to nie jest nasz cel, jeśli jest to dodajemy ruch do przodu do wyniku funkcji następnika, jeśli nie to zwracamy jedynie listę z obrotami
|
||||||
|
|
||||||
## Heurystyka
|
## Heurystyka
|
||||||
|
|
||||||
|
* Oszacowuje koszt dotarcia do celu końcowego z aktualnej pozycji gracza.
|
||||||
|
* Opisana metodą approximateDistanceFromTarget(self, tileX, tileY) w pliku AutomaticMovement.py
|
||||||
|
* Od tileX i tileY (aktualna pozycja gracza) odejmowana jest pozycja docelowa, zwracana jest wartość zaniżonego kosztu osiągnięcia celu.
|
Loading…
Reference in New Issue
Block a user