2
0
forked from s444420/AL-2020

Zaktualizuj 'route-planning.md'

This commit is contained in:
Wojciech Łukasik 2020-04-28 22:49:59 +00:00
parent c029bcc577
commit 5d12921c54

View File

@ -9,13 +9,13 @@ Naszą główną funkcją jest funkcja `aStar(startField, goalField)`, przyjmuje
`openSet` - lista zawierająca pola do sprawdzenia
`path` - lista zawierająca pola tworzące ścieszkę do wybranego celu
`path` - lista zawierająca pola tworzące ścieżkę do wybranego celu
<br>
- Dodajemy pierwszy element który będziemy sprawdzać do listy openSet: `openSet.push(startField);`
- Kolorujemy punkt startowy na zielono: `colorGreen(startField, animationFrame);`
- Dopuki lista `openSet` nie bedzie pusta sprawdzamy jej elementy: `while(openSet.length > 0)`
- Dopóki lista `openSet` nie bedzie pusta sprawdzamy jej elementy: `while(openSet.length > 0)`
- Wybieramy najbardziej obiecujący element z zbioru `openSet`:
```javascript
@ -28,7 +28,7 @@ for(let i = 0; i < openSet.length; i++){
let current = openSet[winner];
```
- 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 ścieżkę z punktu startowego do naszego celu.
```javascript
if(current === goalField){
@ -40,7 +40,7 @@ if(current === goalField){
temp = temp.previous
}
```
- Następnie kolorujemy tą ścieszkę i kończymy funkcję zwracając ściesz`path`
- Następnie kolorujemy tą ścieżkę i kończymy funkcję zwracając ścież`path`
```javascript
for(var i = 0; i < path.length; i++){
@ -56,7 +56,7 @@ closedSet.push(current);
animationFrame = colorRed(current, animationFrame);
```
- 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ą.
- Dla każdego sąsiada obliczamy koszt dotarcia do niego z punktu początkowego najlepszą ścieżką.
```javascript
for(var i = 0; i < neighbors.length; i++){
@ -75,7 +75,7 @@ for(var i = 0; i < neighbors.length; i++){
```
- Po przypisaniu kosztu do sąsiada przypisujemy jego odległość do celu:<br>`neighbor.h = getDistance(neighbor, goalField);
- sume jego kosztu oraz heurystki: `neighbor.f = neighbor.g + neighbor.h;`
- sumę jego kosztu oraz heurystki: `neighbor.f = neighbor.g + neighbor.h;`
- oraz jego poprzednika: `neighbor.previous = current;`
### Definicja funkcji następnika
@ -94,9 +94,9 @@ let current = openSet[winner];
```
### Definicja przyjętej heurystyki
Jest to szacowana odległość od sprawdzanego pola do celu. Obliczana jest za pomocą wzoru na odległość Manhattana.
Jest to szacowana odległość od sprawdzanego pola do celu. Obliczana jest jako `Manhattan Distance`, ponieważ w naszym modelu Agent nie może poruszać się po skosie.
`|x1 - x2| + |y1 - y2|`
distance = `|x1 - x2| + |y1 - y2|`
### Testowanie projektu