YAP

Yet Another Pathfinder (YAPF) to najnowszy algorytm oprogramowania używany przez Manual (en) do kontrolowania ruchu pojazdu.

Contents

Opis

YAPF to trzecia próba stworzenia algorytmu pathfinder dla OpenTTD. Pierwszym nowym algorytmem było New Train Pathfinding (NTP), które działa tylko w pociągach. Drugim było New global Pathfinding (NPF), które działa na wszystkich pojazdach i jest dość inteligentne, ale spowalnia system po zbudowaniu wielu pojazdów. Celem YAPF jest zapewnienie mocy i elastyczności NPF, przy jednoczesnej bardzo dużej optymalizacji, zmniejszającej obciążenie procesora (CPU).

Opcje konfiguracji

/File/en/Paper-plus.png
Ten artykuł (lub sekcja) wymaga rozbudowy.
Rozwiń konfigurację
  • Więcej informacji możesz znaleźć w dyskusji tego artykułu.
  • Przeczytaj Instrukcję stylów przed edycją.
  • Pamiętaj żeby usunąć ten szablon, kiedy artykuł zostanie rozbudowany.

Zobacz też

Notes

/File/en/Notice.png
Informacja
Pozostała część tego artykułu jest przeznaczona dla programistów.

Ulepszenia w porównaniu do NPF

Według forum post by KUDr, istnieją 3 główne ulepszenia w YAPF w porównaniu do NPF:

Te ulepszenia zwiększają wydajność YAPF w porównaniu z NPF, ale także sprawiają, że kod jest bardziej złożony i trudniejszy do zrozumienia.

Strojenie(Tuning)

Można dostosować kilka opcji YAPF. Nie opiszę ich wszystkich, ponieważ są jasne, co robią .
Istnieją 4 opcje (właściwie 3), które są dość tajemnicze:

rail_look_ahead_max_signals = 10
rail_look_ahead_signal_p0 = 500
rail_look_ahead_signal_p1 = -100
rail_look_ahead_signal_p2 = 5

Najpierw sprawdza się, ile sygnałów YAPF patrzy przed naszym pociągiem. Kolejne opcje są używane do obliczania tablicy kar za pomocą następującego wzoru, w którym parametr "i" jest wartością sygnałów:

p=p0 + p1*i + p2*i*i

Tak więc mamy następującą tablicę kar sygnałowych dla określonej liczby w wyniku rail_look_ahead_max_signals:

p[]={500,405,320,245,180,125,80,45,20,5}

Teraz kilka przykładów:

For (the first) 3 signals: Red,Red,Red: penalty=500+405+320=1225
For (the first) 4 signals: Red,Green,Red,Green: penalty=500+0+320+0=820

Ostateczny koszt zostanie dodany do kosztu ścieżki. Może to pomóc w zmniejszeniu korków, gdy mamy pociągi blokujące drogę (4 semafory przed nami) i mamy alternatywny sposób.

To jest wewnętrzny materiał YAPF i nie powinien być dostrajany. Deweloper włożył wiele wysiłku w obliczenie właściwych wartości w p0, p1, p2.

Jedyną regulowaną wartością jest kara p1. Dokładny zakres wartości wynosi od -100 do -90. Jeśli wyjdziesz poza ten zakres, tablica kar będzie miała dziwne wartości i pociągi zaczną jechać inaczej niż się spodziewasz.

Jeśli chcesz bardziej agresywnego równoważenia obciążenia, wybierz p1 = -90, a otrzymasz następującą tablicę:

p[]={500,415,340,275,220,175,140,115,100,95}

Projekty zależne

Odnajdywanie ścieżek jest bardzo ważną częścią OpenTTD, a wprowadzenie nowego pathfindera oznacza duże zmiany w kodzie. To był powód, dla którego wstrzymano rozwój niektórych nowych funkcji, dopóki YAPF nie został ukończony. Ponieważ YAPF jest już w pełni wprowadzony, projekty te mogą zostać ponownie opracowane.

Znaki prędkości

Był skromny projekt kontrolujący, które pociągi jeżdżą po których torach w zależności od ich prędkości, Speed Signs. Jak dotąd ten projekt nie został odebrany po wdrożeniu YAPF. Inne łatki, które pozwalają graczowi kontrolować identyfikację trasy pociągu, można znaleźć w development forums.