Symulacja ruchu drogowego

0

Witam mam problem, nie tyle z implementacją co z pomysłem jak to zrobić. Jestem początkująca w Javie, a mam do zrobienia projekt przedstawiający symulację ruchu ulicznego. Nie wiem za bardzo w jaki sposób mogę robić ulicę po której miałyby poruszać się samochody, oraz w jaki sposób synchronizować je aby nie dochodziło do kolizji (każde auto nowy wątek). Bardzo proszę o pomoc, jestem skłonna nawet zapłacić.

0

Pisałem taka symulację na studiach, ale pisaliśmy to w 2 osobowym zespole i to bylo na 4 roku. Początkujący to raczej nie ma szans nic sensownego napisać ;] Jeśli chodzi o technikalia:

  • symulacja była agentowa - każdy samochód był osobnym agentem i podejmował decyzje na temat tego jak jechać autonomicznie, tzn jeśli widział że zaraz w kogoś walnie to wykonywał manewr omijania, albo zwalniał (zależało to od różnicy w prędkości i od "typu" samochodu, jednym się spieszyło bardziej innym mniej)
  • mapy z jakich korzystaliśmy to OpenStreetMaps, parsowaliśmy je i na tej podstawie generowaliśmy graf dróg po których się jeździło
  • oprócz przeszkód na drodze samochody oczywiście testowały czy nie wyjeżdżają poza drogę (na podstawie wektora który wyznaczał kierunek danego odcinka drogi liczyliśmy odległość samochodu od prostej wyznaczanej przez ten wektor i jeśli samochód oddalał sie bardzo to musiał zmodyfikować swój wektor prędkości w kierunku następnego węzła drogi)
  • spory problem był z wykrywaniem gdzie dany samochód się znajduje i po której drodze się porusza, trochę więcej do przeczytania tutaj: http://4programmers.net/Forum/Algorytmy/217431-nawigacja_-_wykrywanie_opuszczenia_trasy (ten temat dotyczył innego projektu, własnej nawigacji samochodowej, ale akurat sama zabawa w wykrywanie po której drodze ktoś jedzie była taka sama)
  • manewr wymijania był zaimplementowany tak, żeby samochód wymijający celował w punkt na drodze "obok" przeszkody, tak ze samochód-przeszoda-punkt_wymijania tworzyły trójkąt prostokątny, przy jednoczesnym zwiększeniu prędkości (żeby to wymijanie nie trwało 100 lat ;) ). Samo wymijanie też nie było takie trywialne bo przy zbyt naiwnym algorytmie w pewnej chwili oba samochody wykrywały że muszą się wyminąć i zaczynały jeździć w kółko dookoła siebie :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1