Zaktualizowany raport route-planning

This commit is contained in:
Piotr Rychlicki 2020-04-28 20:16:01 +00:00
parent 3375a8adca
commit b7675d3946

View File

@ -4,16 +4,21 @@
**Temat projektu:** Inteligentny Traktor
**klawisz B** - uruchomienie automatycznego znadjdwowania ścieżki dla jednego z trybów pracy:
**klawisz B** - uruchomienie automatycznego znajdowania ścieżki dla jednego z trybów pracy:
* 1 - podlewanie
* 2 - odchwaszczanie
* 3 - sadzenie
* 4 - zbieranie
W celu zaplanowania ruchu agenta na kracie wykorzystano schemat procedury przeszukiwania grafu stanów z uwzględnieniem kosztu.
Zaimplementowano strategię A*, czyli funkcję wyznaczającą priorytet następników,
uwzględniającą zarówno koszt, jak i odpowiednią heurystykę.
Poniżej przedstawiono poszczególne fragmenty kodu, kluczowe dla działania całej procedury.
## Pętla główna strategii przeszukiwania
* spradzenie aktualnego trybu pracy traktora:
* sprawdzenie aktualnego trybu pracy traktora:
```
if activity == 0:
avaiable_value = [0,1,2,3]
@ -26,7 +31,7 @@ if activity == 0:
```
* ustalenie pozycji startowej
* sprawdzenie czy pozycja startowa równa się pozyzji końcowej
* sprawdzenie czy pozycja startowa równa się pożądanej pozyzji końcowej
* jeżeli nie, ustalenie w którą stronę poruszy się traktor:
```
@ -46,15 +51,15 @@ if start_position == end_point:
move_left()
pygame.display.update()
time.sleep(2)
work([int(((config.TRAKTOR_POZ[1]-5)/70)-1), int(((config.TRAKTOR_POZ[0]-5)/70)-1)])
work([int(((config.TRAKTOR_POZ[1]-5)/70)-1), int(((config.TRAKTOR_POZ[0]-5)/70)-1)])
```
* funkcja A*, jest to algorytm, którego zadaniem jest znalezienie najkrótszej trasy dla traktora:
* funkcja A* - jest to algorytm, którego zadaniem jest znalezienie najkrótszej trasy dla traktora:
```
def a_star(start, end):
a_queue = PriorityQueue()
a_queue.put(start,0)
a_queue.put(start,0)
cost = {tuple(start): 0}
path_from = {tuple(start): None}
finall_path = [tuple(end)]
@ -100,16 +105,19 @@ for next in points(current):
found = 1
break
if found:
break
break
```
## Heurystyka
Oszacowuje koszt dotarcia do caleu z akutualnego położenia traktora na planszy
Heurystyka to oszacowany dystans między punktem początkowym (aktualnym położeniem agenta na planszy) a punktem końcowym (celem).
Wylicza się ją za pomocą różnic między współrzędnymi (agenta i celu) w pionie i poziomie,
a następnie podstawienia ich do prostego wzoru Pitagorasa.
Krótko mówiąc, za pomocą heurystyki można wstępnie szacować koszt dotarcia do celu z akutualnego położenia traktora na planszy.
```
def heuristic(a, b):
(x1, y1) = a
(x2, y2) = b
return abs(x1 - x2) + abs(y1 - y2)
```
```