В последнее время моделирование играет важную роль в жизни людей. Оно помогает людям предвидеть последствия той или иной деятельности, принимать обоснованные и продуманные решения, а также строить определенные планы на будущее. В данной статье с помощью среды Visual Studio будет разработана модель транспортной компании, занимающейся грузоперевозкой. Компания состоит из 9 агентов-перевозчиков, выполняющих заказ, а также 1 агента-менеджера, выдающего задания перевозчикам. В данной статье будет проведен анализ критериев, таких как средняя длина очереди, средняя загруженность агентов (в процентах), а также средний процент выполненных заданий каждым агентом в зависимости от общего числа агентов. Модель будет разрабатываться с помощью Visual Studio [1; 2].
Цель статьи: провести анализ модели транспортной компании, разработанной в Visual Studio. В качестве изменяющихся величин будет взято число агентов-перевозчиков, которое будет варьироваться от 5 до 9.
В качестве материала исследования выступает транспортная компания, занимающаяся перевозкой.
В статье используется эмпирический метод исследования, поскольку основной источник результатов – эксперимент.
Описание транспортной компании
Модель состоит из агента-менеджера судостроительной компании и 9 агентов-перевозчиков. Компания объявляет заказы на транспортировку грузов с интервалом 5 ± 3 дня. Взаимодействие компании с перевозчиками осуществляется по принципам протокола контрактных сетей. Перевозчики могут иметь либо статус исполнителя, либо статус подрядчика. Менеджер сообщает перевозчикам число товаров K и расстояние L, которое требуется преодолеть для перевозки. Агент-перевозчик получает сообщение, помещает данные заказа во временное хранилище, на основании данных и собственных установок рассчитывает стоимость транспортировки и формирует предложения для менеджера со стоимостью заказа. Менеджер рассматривает предложения, анализирует и назначает задание (отправляет сообщение «принято») агенту, предложившему наименьшую цену за выполнение транспортировки, остальным агентам отправляет сообщение «отказано». Агент-перевозчик, получивший сообщение, приобретает статус подрядчика и приступает к выполнению задания, остальные агенты удаляют данные из памяти. Агент, имеющий статус подрядчика, не может принимать и отвечать на другие сообщение менеджера. По завершении транспортировки агент информирует менеджера о выполнении задания и возвращается к статусу исполнителя. Таким образом, менеджер может выполнять следующие действия: {«объявить заказ», «получить предложение», «выбрать оптимальное предложение», «назначить задание», «получить сообщение о выполнении задания»}; перевозчик имеет набор действий: {«получить заказ», «сформировать предложение», «отправить предложение», «получить подтверждение», «получить отказ», «приступить к выполнению задания», «сообщить о выполнении»}.
Стоимость перевозки рассчитывается каждым агентом-перевозчиком на основании формулы S = K*L ± 0.2* K*L. Значения K и L изменяются для каждого заказа в диапазонах: K = [100, 500], L = [1, 15]. Время выполнения заказа T = L дней. Время формирования предложений по заказу – 3 дня. Время обработки предложений агентом-менеджером – 1 день. Время моделирования составляет 1 год (366 дней).
Задание
Провести отдельные эксперименты – варьировать на входе число агентов перевозчиков от 5 до 9. На выходе оценить процент выполненных заказов, среднюю загруженность одного агента-перевозчика в процентах от времени моделирования, среднюю длину очереди заказов. Свести полученные результаты всех экспериментов в таблицу. Сделать выводы об эксперименте с лучшим результатом.
Разработка модели транспортной компании
В качестве среды моделирования выбрана Visual Studio. Программа написана на языке C#. Моделирование выполнено в соответствии с условием задания. Предварительно написаны классы Manager (класс агента-менеджера), Carrier (класс агента-перевозчика), Order (класс заказа), Suggestion (класс предложения). Время выполнения и поступления для каждого заказа определялись случайным образом с помощью класса Random пространства имен System [3–6].
Для данной модели проведен ряд испытаний для разного количества агентов-перевозчиков, число которых варьируется от 5 до 9. Рассчитаны средняя длина очереди заказов, средняя загруженность для каждого агента, средний процент выполненных заданий в зависимости числа агентов. Длина очереди – количество заказов, во время которых все агенты заняты. Загруженность перевозчика – отношение количества дней, в которые агент работал, к общему времени моделирования, выраженное в процентах. Процент выполненных заданий – отношение заданий, сделанных всеми агентами, к числу поступивших заданий, выраженное в процентах.
Длину очереди будем рассчитывать по следующей формуле:
(1)
где lср – средняя длина очереди, li – длина очереди в i-м эксперименте, N – количество экспериментов.
Загруженность перевозчика вычисляется по следующей формуле:
(2)
где n – загруженность агента, ni – загруженность агента в i-м эксперименте, N – количество экспериментов, T – период моделирования (366 дней).
Процент выполненных заданий вычисляется следующим образом:
/ cобщ*100 %, (3)
где c – процент выполненных заданий, ci – количество заданий выполненных i-м агентом, cобщ – общее количество поступивших заданий, N – количество заданий.
Результат работы программы для 9 агентов представлен на рис. 1–3.
Рис. 1. Начало моделирования для 9 агентов-перевозчиков
Рис. 2. Конец моделирования для 9 агентов-перевозчиков
Рис. 3. Вывод искомых характеристик для 9 агентов-перевозчиков
Анализ модели транспортной компании
Результаты экспериментов (всего проведено 5 экспериментов) для 9 агентов приведены в табл. 1–3.
Таблица 1
Длина очереди для 9 агентов-перевозчиков
Номер испытания |
1 |
2 |
3 |
4 |
5 |
Длина очереди |
0 |
0 |
0 |
0 |
0 |
Средняя длина очереди:
lср = (0 + 0 + 0 + 0 + 0) / 5 = 0,0.
Таблица 2
Количество дней, которые агент отработал в течение года для 9 агентов-перевозчиков
Номер испытания |
1 |
2 |
3 |
4 |
5 |
Нагрузка агента № 1 |
78 |
53 |
93 |
40 |
85 |
Нагрузка агента № 2 |
89 |
67 |
69 |
41 |
65 |
Нагрузка агента № 3 |
63 |
56 |
54 |
58 |
65 |
Нагрузка агента № 4 |
54 |
37 |
52 |
64 |
42 |
Нагрузка агента № 5 |
71 |
90 |
67 |
58 |
57 |
Нагрузка агента № 6 |
75 |
67 |
49 |
66 |
45 |
Нагрузка агента № 7 |
45 |
56 |
59 |
76 |
43 |
Нагрузка агента № 8 |
61 |
41 |
56 |
49 |
73 |
Нагрузка агента № 9 |
76 |
82 |
106 |
44 |
71 |
Средняя загруженность (количество дней в году, которые агент работал) каждого агента:
n1 = (78 + 53 + 93 + 40 + 85) / 5 / 366 * 100 % ≈ 19,07 %;
n2 = (89 + 67 + 69 + 41 + 65) / 5 / 366 * 100 % = 18,08 %;
n3 = (63 + 56 + 54 + 58 + 65) / 5 / 366 * 100 % = 16,17 %;
n4 = (54 + 37 + 52 + 64 + 42) / 5 / 366 * 100 % = 13,61 %;
n5 = (71 + 90 + 67 + 58 + 57) / 5 / 366 * 100 % = 18,74 %;
n6 = (75 + 67 + 49 + 66 + 45) / 5 / 366 * 100 % = 16,50 %;
n7 = (45 + 56 + 59 + 76 + 43) / 5 / 366 * 100 % = 15,25 %;
n8 = (61 + 41 + 56 + 49 + 73) / 5 / 366 * 100 % = 15,46 %;
n9 = (76 + 82 + 106 + 44 + 71) / 5 / 366 * 100 % = 20,71 %.
Средняя загруженность всех агентов (в процентах):
nср = (19,07 + 18,08 + 16,17 + 13,61 + 18,74 + + 16,50 + 15,25 + 15,46 + 20,71) / 9 ≈ 17,07 %.
Таблица 3
Количество выполненных заказов для 9 агентов-перевозчиков
Номер испытания |
1 |
2 |
3 |
4 |
5 |
Сделанные задания агентом № 1 |
10 |
6 |
13 |
6 |
9 |
Сделанные задания агентом № 2 |
11 |
11 |
7 |
7 |
8 |
Сделанные задания агентом № 3 |
7 |
8 |
8 |
5 |
9 |
Сделанные задания агентом № 4 |
4 |
7 |
9 |
8 |
10 |
Сделанные задания агентом № 5 |
11 |
13 |
6 |
9 |
7 |
Сделанные задания агентом № 6 |
7 |
7 |
6 |
8 |
8 |
Сделанные задания агентом № 7 |
8 |
8 |
6 |
7 |
4 |
Сделанные задания агентом № 8 |
5 |
5 |
7 |
7 |
8 |
Сделанные задания агентом № 9 |
11 |
9 |
12 |
6 |
11 |
Количество выполненных заданий всеми агентами |
74 |
74 |
74 |
63 |
74 |
Всего заданий |
74 |
74 |
74 |
63 |
74 |
Средний процент выполненных заданий:
cср = ((74/74) + (74/74) + (74/74) + + (63/63) + (74/74)) / 5 * 100 % = 100 %.
Аналогичные расчеты были выполнены для экспериментов с количеством агентов, равных 5, 6, 7 и 8. Результаты анализа представлены в табл. 4.
Таблица 4
Сводная таблица результатов экспериментов
Количество агентов |
5 |
6 |
7 |
8 |
9 |
Средняя длина очереди |
7,0 |
4,0 |
1.0 |
0,0 |
0,0 |
Средняя загруженность агента, % |
28,92 |
25,34 |
23,24 |
20,59 |
17,07 |
Средний процент выполненных заданий |
91,0 |
94,5 |
98,7 |
100 |
100 |
Как видно из результатов, начиная с 7 агентов и меньше, длина очереди заказов и суммарное количество принятых заказов начинают различаться. Это связано с одновременной занятостью всех агентов.
Эксперимент с 9 агентами обладает наилучшими результатами, поскольку он имеет наименьшее значение средней длины очереди (0), наименьшее значение средней загруженности одного агента (17.07 %) и наибольший процент выполненных заданий (100 %). Следовательно, данный случай является самым эффективным.
Эксперимент с 5 агентами обладает наихудшими результатами, поскольку он имеет наименьшее значение средней длины очереди (7), наименьшее значение средней загруженности одного агента (28.92 %) и наибольший процент выполненных заданий (91 %). Следовательно, данный случай является наименее эффективным.
Заключение
В данной статье разработана модель транспортной компании с помощью Visual Studio в соответствии с условиями задания. Модель включает в себя 9 агентов-перевозчиков, выполняющих заказ, а также 1 агента-менеджера, выдающего задания перевозчикам. Для данной модели оценены средняя длина очереди, средняя загруженность агентов (в процентах), а также средний процент выполненных заданий каждым агентом в зависимости от общего числа агентов; число агентов варьировалось от 5 до 9. Лучшими результатами обладает эксперимент с 9 агентами-перевозчиками, худшими – с 5 агентами.