forked from s444420/AL-2020
Zaktualizuj 'route-planning.md'
This commit is contained in:
parent
c029bcc577
commit
5d12921c54
@ -9,13 +9,13 @@ Naszą główną funkcją jest funkcja `aStar(startField, goalField)`, przyjmuje
|
|||||||
|
|
||||||
`openSet` - lista zawierająca pola do sprawdzenia
|
`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>
|
<br>
|
||||||
|
|
||||||
- Dodajemy pierwszy element który będziemy sprawdzać do listy openSet: `openSet.push(startField);`
|
- Dodajemy pierwszy element który będziemy sprawdzać do listy openSet: `openSet.push(startField);`
|
||||||
- Kolorujemy punkt startowy na zielono: `colorGreen(startField, animationFrame);`
|
- 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`:
|
- Wybieramy najbardziej obiecujący element z zbioru `openSet`:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
@ -28,7 +28,7 @@ for(let i = 0; i < openSet.length; i++){
|
|||||||
|
|
||||||
let current = openSet[winner];
|
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
|
```javascript
|
||||||
if(current === goalField){
|
if(current === goalField){
|
||||||
@ -40,7 +40,7 @@ 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ą ścieżkę i kończymy funkcję zwracając ścieżkę `path`
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
for(var i = 0; i < path.length; i++){
|
for(var i = 0; i < path.length; i++){
|
||||||
@ -56,7 +56,7 @@ closedSet.push(current);
|
|||||||
animationFrame = colorRed(current, animationFrame);
|
animationFrame = colorRed(current, animationFrame);
|
||||||
```
|
```
|
||||||
- Pobieramy sąsiadów pola `current`: `var neighbors = current.neighbors;`
|
- 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
|
```javascript
|
||||||
for(var i = 0; i < neighbors.length; i++){
|
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);
|
- 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;`
|
- oraz jego poprzednika: `neighbor.previous = current;`
|
||||||
|
|
||||||
### Definicja funkcji następnika
|
### Definicja funkcji następnika
|
||||||
@ -94,9 +94,9 @@ let current = openSet[winner];
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Definicja przyjętej heurystyki
|
### 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
|
### Testowanie projektu
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user