Zaktualizuj 'route-planning.md'

This commit is contained in:
Tomasz Kuczyński 2020-04-28 21:41:00 +00:00
parent 099d5fa78f
commit 7a6c3981b8

View File

@ -11,14 +11,14 @@ Naszą główną funkcją jest funkcja `aStar(startField, goalField)`, przyjmuje
`path` - lista zawierająca pola tworzące ścieszkę do wybranego celu `path` - lista zawierająca pola tworzące ścieszkę do wybranego celu
Dodajemy pierwszy element który będziemy sprawdzać do listy openSet: Dodajemy pierwszy element który będziemy sprawdzać do listy openSet: `addToOpenSet(openSet, startField)`
`addToOpenSet(openSet, startField)`
Dopuki lista `openSet` nie bedzie pusta sprawdzamy jej elementy: `while(openSet.length > 0)`
Wybieramy najbardziej obiecujący element z zbioru `openSet`: `let current = findLowestFScore(openSet, goalField)`
Dopuki lista `openSet` nie bedzie pusta sprawdzamy jej elementy
`while(openSet.length > 0)`
Wybieramy najbardziej obiecujący element z zbioru `openSet`
`let current = findLowestFScore(openSet, goalField)`
Jeśli pole `current` okaże się naszym celem tworzymy ścieszkę z punktu startowego do naszego celu. Jeśli pole `current` okaże się naszym celem tworzymy ścieszkę z punktu startowego do naszego celu.
```javascript ```javascript
if(current === goalField){ if(current === goalField){
path = [] path = []
@ -29,19 +29,27 @@ if(current === goalField){
temp = temp.previous temp = temp.previous
} }
``` ```
Następnie kolorujemy tą ścieszkę i kończymy funkcję zwracając ścieszkę `path` Następnie kolorujemy tą ścieszkę i kończymy funkcję zwracając ścieszkę `path`
```javascript ```javascript
for(var i = 0; i < path.length; i++){ for(var i = 0; i < path.length; i++){
colorYellow(path[i]); colorYellow(path[i]);
} }
return path return path
``` ```
Jeśli pole `current` nie jest naszym celem, to usuwamy je z listy `openSet` i dodajemy do listy `closedSet` Jeśli pole `current` nie jest naszym celem, to usuwamy je z listy `openSet` i dodajemy do listy `closedSet`
`removeFromSet(openSet, current);`
`addToClosedSet(closedSet, current);` ```javascript
Pobieramy sąsiadów pola `current` removeFromSet(openSet, current);
`var neighbors = current.neighbors;` addToClosedSet(closedSet, current);
Dla każdego sąsiada obliczamy koszt dotarcia do niego z punktu początkowego najlepszą ścieszką ```
Pobieramy sąsiadów pola `current`: `var neighbors = current.neighbors;`
Dla każdego sąsiada obliczamy koszt dotarcia do niego z punktu początkowego najlepszą ścieszką.
```javascript ```javascript
for(var i = 0; i < neighbors.length; i++){ for(var i = 0; i < neighbors.length; i++){
var neighbor = neighbors[i]; var neighbor = neighbors[i];
@ -56,12 +64,12 @@ for(var i = 0; i < neighbors.length; i++){
addToOpenSet(openSet, neighbor); addToOpenSet(openSet, neighbor);
} }
``` ```
Po przypisaniu kosztu do sąsiada dodajemy jego odległość do celu
`neighbor.heuristic = getDistance(neighbor, goalField);`, Po przypisaniu kosztu do sąsiada dodajemy jego odległość do celu: `neighbor.heuristic = getDistance(neighbor, goalField);`,
??????????
`neighbor.f = neighbor.gScore + neighbor.heuristic;` ??????????: `neighbor.f = neighbor.gScore + neighbor.heuristic;`
oraz jego poprzednika
`neighbor.previous = current;` oraz jego poprzednika: `neighbor.previous = current;`
### Definicja funkcji następnika ### Definicja funkcji następnika
### Definicja przyjętej heurystyki ### Definicja przyjętej heurystyki