rrickfox / traffic-sim

GNU General Public License v3.0
2 stars 0 forks source link

AI - dynamischer Abstand #49

Closed oh-trentmann closed 4 years ago

oh-trentmann commented 4 years ago

Die Autos können um sich gucken und passen ihre Geschwindigkeiten anderen Autos an.

funketh commented 4 years ago

Jetzt wo ich nochmal drüber nachdenke bin ich mir nicht sicher ob der Ansatz mit Kollisionserkennung von unsichtbaren Objekten so vorteilhaft ist. Die Laufzeit für stupides Vergleichen mit allen anderen Autos der Straße läge ja bei n², wobei n die Anzahl an Autos auf der Straße ist. Ersteinmal ist eine quadratische Laufzeit bei unserer Größenordnung für n garnicht so schlimm, da gibt es denke ich aufwändigere Berechnungen. Dann muss noch bedacht werden, dass die Kollisionserkennung ja auch nicht magisch keine Laufzeit kostet.

Ich wäre deshalb dafür, dass wir vorerst stupide alle Autos einer Straße durchgehen. Möglicherweise lässt sich dies ja auch später optimieren, zB mit einer Liste, die nach jedem Update sortiert wird, wodurch nur noch die ersten paar Autos vor einem Auto geprüft werden müssten. (Sowas wäre aber nen neuer Issue denke ich)

Zum Schluss noch eine Tabelle zur Verdeutlichung:

Alle Autos checken Sortierte Liste Kollisionserkennung
n*n k*n + n log n kn + n\?
funketh commented 4 years ago

Okay fairerweise: k ist denke ich immer so zwischen 0 und 3 und kann denke ich als 1 angenommen bzw. ignoriert werden.

Finde halt nur, dass unser n vorerst bei so maximal 20 liegen wird und 400 loops (die fast nur simple vergleiche ausführen) jetzt nicht die welt sind. Der Ansatz mit der sortierten Liste dürfte sich jedoch auch für große n bewähren, vor allem, da sich unsere Kollisionserkennung und damit unser ?-Faktor ja nicht auf 1 einfachen Quader beschränkt und somit (log n) kaum (wenn überhaupt) übertreffen würde.

oh-trentmann commented 4 years ago

Okay das ergibt Sinn. Wir können fürs erste die „einfache“ Variante über die Vergleiche mit allen Autos machen. Allerdings finde ich die Variante mit den Collidern cooler, da es realistischer ist dass die Autos nur um sich gucken können. Wäre ja was für Sprint 3

oh-trentmann commented 4 years ago

könnte jemand sich bitte die getFronCar()-Funktion angucken die funktioniert glaube ich nicht so gut