Skip to content

Latest commit

 

History

History
15 lines (9 loc) · 2.78 KB

README.md

File metadata and controls

15 lines (9 loc) · 2.78 KB

MAS.shipment

Существует 2 типа агентов: пользователи и хранилище. Через хранилище пользователи узнают друг о друге и продолжают общаться напрямую.

Так же пользователь получает от хранилища его местоположение и расчитывает по поти ли ему, если да, то он просто ждёт заявок на доставку от других и отвечает за сколько он готов их перевезти. Если же не по пути, то он сам отправляет заявки всем кого он знает на перевозку.

Заявка состоит из конечной и начальной точки обычного маршрута пользователя, исполнитель выбирает до какой точки ему дешевле доставить посылку. Стоимость определяется разницой между длиной его текущего маршрута и маршрута с учётом новой точки. Кроме того, пользователь который осуществляет доставку посылки может разбить заказы на несколько дней, если так будет меньше цена.

При получении заявки на доставку, пользователь отправляет в ответ цену. По таймеру заказчик обрабатывает все полученные предложения цены и выбирает лучшее. Если предложений нет, или нет предложения, которое по стоимости меньше его затрат на доставку, то он ожидает новые предложения, пока они не перестанут поступать хотябы раз в 2 секунды, после чего он решает везти самостоятельно.

Если есть хорошее предложение поользователь отправляет запрос и включает таймер, по истечении которого он повторяет запрос, если спустя 3 запроса доставщик не ответил, то повторяем процедуру выбора предложения. Если доставщик ответил, и согласился, то всё ок мы закончили, от своего маршрута не отклоняемся, если доставщик не согласился, повторяем процедуру выбора предложения.