Home
nshindarev edited this page Apr 24, 2017
·
29 revisions
- для получения списка пассажиров:
myParentFSM.getPassengersList()
вернёт тебеList<Sting>
локальных имен - для получения итогового маршрута:
myParentFSM.myCitizenAgent.getFinalRoadVertexes()
вернет тебе список вершин итогового маршрута
-count_agents N1 -auto_generate N2 -count_driver N3 -delay_agents N4
// N1 - количество агентов (Integer)
// N2 - автоматически генерировать агентов или нет (yes - автоматически, все остальное - нет) (String)
// N3 - количество агентов-водителей (Integer)
// N4 - время задержки создания агентов (Integer)
- старт: номер вершины
- финиш: номер вершины
Опциональные параметры:
- вместимость машины (не считая водителя)
- стоимость проезда одного километра: может быть дробным числом
- тип:
carpooling
- имя:
JADE-carpooling
- свойства:
-
districts
: районы, которые проезжает водитель. Формат:D1,D2,...,Dn
-
Водитель регистрируется в сервисе.
Пассажиры ищут подходящих водителей в течение всего их жизненного цикла. Если нашли подходящего, добавляют его к себе в список подходящих водителей. Таким образом, у пассажира есть шанс найти лучшего водителя, даже если тот появится поздно.
- расширение файла:
.gml
- как задавать город:
mas-carpooling-appl/src/main/resources/small_city.gml
- конструктор по умолчанию строит город из файла
small_city.gml
- возможный параметр конструктора: путь к файлу от папки
mas-carpooling
- как пользоваться:
Parser parser = new Parser();
Graph<String, DefaultWeightedEdge> city = parser.getCity();
- осуществляется в классе
CitizenAgent.java
- расчёт выполняется на этапе
setup
агента - для доступа к списку рёбер необходимо вызвать
getCurrentRoute()
- для доступа к стоимости проезда на своей тачке нужно вызвать
getCurrentPrice()
- оно циклически проверяет значение неравенства
pp < (pd - cd) < p0
:- если оно не выполняется,
decided_be_driver = True
у агента - если неравенство выполняется,
decided_be_driver
остаетсяFalse
- если оно не выполняется,
- мониторит список предложений нашему водителю от пассажиров
- он смотрит на поле агента
offersPool
и возвращает значение для поляbest_offer
- на данный момент используется в поведении
HandlePassengersOffers
- вместо постоянных вызовов дейкстры теперь у каждого агента есть и список кратчайших путей из каждой в каждую
- хранится в поле
FloydWarshallShortestPaths<String, MyWeightedEdge> shortestPaths
агента - если нужен кратчайший путь:
shortestPaths.getShortestPath(a, b)
- если нужна длина кратчайшего:
shortestPaths.getShortestPath(a, b).shortestDistance(a, b)