ЛР / ЛР4_Хакова_ЮМ_ИСТ-223
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Систем обработки данных
Направление: 09.03.02 Информационные системы и технологии
Профиль: Прикладные информационные системы и технологии
Лабораторная работа №4
«Моделирование заказа товара»
по дисциплине
«Интеллектуальные системы и технологии »
Выполнил:
студент группы ИСТ-223
Хакова Ю.М. «____» _________2026 г.
Принял:
ассистент кафедры ИУС
Пелих Д.А. «____» _________2026 г.
Цель работы:
исследовать и оптимизировать процесс доставки товаров с использованием агентного моделирования.
Задачи:
Создать агента Заказ
Создать событие для генерации заказов
Предоставить доступ к заказам
Изменить диаграммы состояний
Изменить действия события
Запустить модель
Ход работы
Был создан новый тип агента ProductOrder, предназначенный для представления заказов в системе (Рисунок 1).
В агент были добавлены параметры:
retailer – ссылка на магазин, оформивший заказ;
distributor – ссылка на склад, с которого осуществляется доставка.
Данные параметры позволяют связать заказ с участниками логистической цепочки.
Рисунок 1 – Параметры агента ProductOrder
В главном агенте Main была создана популяция агентов для хранения всех активных заказов. Далее было добавлено событие generateOrders, которое срабатывает с заданной периодичностью.
В коде события реализовано создание нового заказа:
Retailer r = retailers.random();
ProductOrder order = add_orders();
order.retailer = r;
order.distributor = distributor;
Рисунок 2 – Настройка события генерации заказов generateOrders
В агент Vehicle была добавлена переменная ProductOrder order, которая используется для хранения текущего выполняемого заказа.
Также для агента Vehicle была реализована диаграмма состояний, включающая три состояния:
AtDistributor — грузовик находится на складе
MovingToRetailer — движение к магазину
MovingToDistributor — возврат на склад
Переходы между состояниями реализуют полный цикл доставки заказа (Рисунок 3).
Рисунок 3 – Диаграмма состояний агента Vehicle
Логика переходов:
if( main.orders.size() > 0 ) {
order = main.orders.random();
moveTo( order.retailer );
}
2. После прибытия к магазину:
moveTo( order.distributor );
3. После возврата на склад:
main.remove_orders(order);
order = null;
После реализации всех предыдущих шагов была запущена разрабатываемая модель (Рисунок 4).
Рисунок 4 – Результат моделирования
Выводы по работе
В ходе выполнения лабораторной работы была разработана имитационная модель процесса обработки заказов в среде AnyLogic.
Полученная модель функционирует корректно: заказы успешно генерируются с заданной периодичностью, привязываются к соответствующим объектам (магазину и складу) и обрабатываются транспортными агентами, грузовики получают заказы, перемещаются к точке назначения и возвращаются на склад после завершения доставки. Механизм генерации и обработки заказов реализован в полном объёме и демонстрирует согласованное взаимодействие всех элементов системы.
Цели лабораторной работы были полностью достигнуты. Все поставленные задачи выполнены – создан агент заказа, реализована генерация заказов с использованием события, организовано взаимодействие между агентами и изменена логика поведения транспортных средств. Модель отражает основные принципы работы логистической системы и позволяет наблюдать процесс обработки заказов в динамике.
В процессе выполнения работы были получены следующие навыки:
настройка параметров агента и установление связей между объектами модели;
работа с событиями и реализация механизма генерации заказов;
программирование действий агентов с использованием Java-кода;
организация взаимодействия между популяциями агентов в среде AnyLogic.
В процессе выполнения задания возникали трудности, связанные с корректным построением диаграммы состояний и пониманием принципа её работы, настройкой переходов между состояниями и выбором условий их срабатывания, правильным обращением к объектам модели и их параметрам и реализацией логики взаимодействия заказов и транспортных агентов.
Данные трудности носили в основном практический и технический характер и были связаны с недостаточным опытом работы в среде AnyLogic, однако они были решены путём анализа структуры модели, проверки логики работы каждого элемента и корректировки кода. Были уточнены связи между агентами, исправлены ошибки в переходах состояний и приведена в соответствие логика генерации и обработки заказов. Использование отладки и последовательной проверки модели позволило добиться корректного функционирования системы.
