Скачиваний:
1
Добавлен:
07.06.2026
Размер:
2.34 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет Информационных технологий и программной инженерии

Кафедра Систем обработки данных

Направление: 09.03.02 Информационные системы и технологии

Профиль: Прикладные информационные системы и технологии

Лабораторная работа №4

«Моделирование заказа товара»

по дисциплине

«Интеллектуальные системы и технологии »

Выполнил:

студент группы ИСТ-223

Хакова Ю.М. «____» _________2026 г.

Принял:

ассистент кафедры ИУС

Пелих Д.А. «____» _________2026 г.

Цель работы:

исследовать и оптимизировать процесс доставки товаров с использованием агентного моделирования.

Задачи:

  1. Создать агента Заказ

  2. Создать событие для генерации заказов

  3. Предоставить доступ к заказам

  4. Изменить диаграммы состояний

  5. Изменить действия события

  6. Запустить модель

Ход работы

Был создан новый тип агента 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, однако они были решены путём анализа структуры модели, проверки логики работы каждого элемента и корректировки кода. Были уточнены связи между агентами, исправлены ошибки в переходах состояний и приведена в соответствие логика генерации и обработки заказов. Использование отладки и последовательной проверки модели позволило добиться корректного функционирования системы.