Роль моделирования в жизни современного человека достаточно велика. С помощью него можно предсказать последствия той или иной деятельности, строить конкретные планы на будущее, а также принимать взвешенные решения.
В статье будет выполнено моделирование работы строительной сети магазинов (представлено в разделе «Описание строительной сети магазинов») с помощью среды разработки Visual Studio. Также для данной модели будет проведена серия экспериментов. Более подробно задачи статьи представлены в разделе «Постановка задачи».
Тема данной работы актуальна, потому что при моделировании процессов можно получить примерные результаты работы той или иной сферы деятельности.
Цель работы: провести анализ модели строительной сети магазинов, разработанной с помощью Visual Studio. В качестве изменяющейся величины будет взято количество грузовиков, осуществляющих доставку товара. Данное количество будет варьироваться от 16 до 20. С помощью выполненных экспериментов определить оптимальное количество грузовиков, необходимых для доставки товара (т.е. такое количество, при котором компания имеет наилучшие показатели).
В качестве материала исследования выступает строительная сеть магазинов, занимающаяся доставкой товаров со склада.
В статье используется эмпирический метод исследования, поскольку основными источниками результатов являются эксперимент и моделирование.
Описание строительной сети магазинов
Данные для строительной компании сформированы авторами статьи.
Характеристики магазинов, в которые поставляется товар, представлены в табл. 1.
В автопарке базы имеется 20 машин средней грузоподъемности. После появления заявки на товар на базе автомобиль едет за товаром на базу. В модели предусмотрено изменять скорость движения автомобилей.
Весь товар находится на пяти складах. Тяжелый негабарит на первом и втором складе, тяжелые европаллеты на третьем, сантехника на четвертом, легкие европаллеты на пятом.
После того как грузовик подъехал на парковку к складу, к нему подходит кладовщик и закрепляет за машиной автопогрузчик, после загрузки товаром автомобиля кладовщик выдает накладную водителю. Этап погрузки происходит следующим образом: имеется 2 грузчика, они могут загружать одновременно 2 средних грузовика (склад имеет 2 поста погрузки). Время загрузки машины 1 ч.
Весь товар загружается по следующим правилам:
а) сперва тяжелый негабарит (не больше 8 листов);
б) сантехника, не больше 2 ванн в один автомобиль;
в) европаллеты, не больше 200 кг;
г) легкие европаллеты, не больше 100 кг;
Допустимые варианты сочетаний для загрузки грузовика: а + 4г; а + 2в; 2в + 4г; б + 2в; б + 4г; 8г; 4в; а + б + в; а + б + 2г. Согласно статистике обработки заказов заказ от одного магазина разбивают на два рейса одной машины.
Если автомобиль приехал, а грузчики еще не освободились, то грузовик становится в очередь на парковку рядом со складом.
Раз в несколько дней на склады приезжает КамАЗ и загружает склады товаром. При этом КамАЗ перекрывает полностью склад (оба поста) на 3 часа, средние грузовики в это время не могут подъехать к складу и загружаться.
У машин и грузчиков 12-часовой рабочий день. После того как машины загрузились на складе, они везут товары в магазины и возвращаются обратно на базу (если остались позиции в заявке от магазина).
Постановка задачи
Моделировать процесс снабжения сети строительных магазинов в дневную (с 8 утра до 8 вечера) и ночную (с 8 вечера до 8 утра) смены в течение недели, с учетом того, что средняя скорость движения в ночное время увеличивается с 40 км/ч до 55 км/ч, а стоимость часа водителя и грузчика в ночное время увеличивается на 25 % с базовой ставки 800 руб/ч.
Выполнить эксперимент, в котором количество грузовиков изменяется от 16 до 20. Для каждого эксперимента определить:
1) процент выполненных заказов (отношение количества выполненных заказов к числу поступивших *100 %);
2) среднюю загрузку одного грузовика (отношение времени, которое грузовик тратит на переезды и загрузку/выгрузку товара, к общему времени моделирования *100 %);
3) суммарный заработок водителей;
4) средний заработок одного водителя за дневную смену в течение времени моделирования;
5) средний заработок водителя за ночную смену в течение времени моделирования.
Результаты указанных показателей в случае необходимости округлить до сотых.
На основе проведенных экспериментов определить оптимальное количество грузовиков, которое должно находиться в автопарке, т.е. количество автомобилей, при котором компания имеет наилучший процент выполненных заданий.
Разработка модели строительной сети магазинов
Для решения данной задачи использовалась среда Visual Studio [1, 2].
Таблица 1
Характеристики магазинов, в которые поставляется товар
Город |
Екатеринбург |
Каменск-Уральский |
Нижний Тагил |
Спутники г. Екатеринбурга |
Количество магазинов |
7 |
4 |
5 |
4 |
Периодичность заказов |
2 |
4 |
4 |
3 |
Расстояние до магазинов |
20–40 км |
135–145 км |
140–150 км |
20–40 км |
Модель состоит из следующих классов, являющихся объектами взаимодействия для исходной строительной сети магазинов:
1) Магазин. Код представлен ниже.
using System;
namespace BuildCompanyModel
{
public class Shop
{
public int L { get; set; } //Расстояние до магазина
protected Random rnd = new Random(); //Рандомное число
public Order order { get; set; } //Заказ
//Конструктор класса
public Shop(int a, int b)
{
L = rnd.Next(a, b);
}
//Сделать заказ
public void MakeAnOrder(Order order)
{
this.order = order;
}
//Название города
public virtual string CityName()
{
return "";
}
}
}
2) Склад.
using System;
using System.Collections.Generic;
using System.Text;
namespace BuildCompanyModel
{
public class Warehouse
{
public int quantity = 0;
public virtual void Add(int numberToAdd)
{
}
public virtual void Subtract(int numberToSubtract)
{
}
}
}
3) Водитель.
namespace BuildCompanyModel
{
public class Driver
{
public bool isBusy { get; set; } //Занят ли водитель
public Order order { get; set; } //Заказ
public bool isDayShift { get; set; } //Работает ли водитель в дневную смену
//Конструктор
public Driver(bool isDayShift)
{
this.isDayShift = isDayShift;
isBusy = false;
}
//Получить заказ
public void GetAnOrder(Order order)
{
isBusy = true;
order.isAccepted = true;
this.order = order;
}
//Выполнить заказ
public void CompleteAnOrder()
{
isBusy = false;
}
}
}
4) Грузовик (машина).
namespace BuildCompanyModel
{
public class Car
{
public bool isLoad { get; set; }
public Car()
{
isLoad = false;
}
}
}
Рис. 1. Взаимосвязь элементов модели
Водители разделяются на тех, кто работает в дневную смену, и тех, кто работает в ночную смену. В зависимости от смены водителя изменяются средняя скорость перевозки товара (40 км/ч в дневную смену, 55 км/ч – в ночную смену), а также ставка одного часа работы (800 рублей – днем, 1000 рублей – ночью).
Время моделирования процесса снабжения строительных магазинов равно одной неделе (168 ч). За этот период водители выполняют заказы по следующему принципу:
- сначала водители получают заказ, после чего отправляются на склад и загружают автомобиль необходимым материалом (процесс загрузки машины составляет 1 час, всего у склада свободно два поста);
- далее водители перевозят товар в магазины, от которых поступили заказы;
- когда водитель возвращается обратно на базу компании, он становится свободным и может приступить к выполнению нового заказа, иначе он считается занятым и не способен выполнять какое-либо задание.
Взаимодействие водителей, грузовиков, складов и магазинов представлено на рис. 1 [3, 4].
Также в течение недели на склад приезжает грузовик (КамАЗ), который перекрывает оба поста склада на 3 ч.
Результат моделирования для 20 грузовиков приведен на рис. 2–4.
Анализ модели строительной сети магазинов
Проведена серия экспериментов, в которых изменяется количество грузовиков от 16 до 20, всего пять экспериментов [5, 6]. Для каждого эксперимента оценены следующие показатели:
1) процент выполненных заказов;
2) средняя загрузка одного грузовика;
3) суммарный заработок водителей;
4) средний заработок одного водителя за дневную смену в течение времени моделирования;
5) средний заработок водителя за ночную смену в течение времени моделирования.
Рис. 2. Начало моделирования для 20 грузовиков
Рис. 3. Момент, когда КамАЗ выгружает товар на складе
Рис. 4. Окончание моделирования для 20 грузовиков
Таблица 2
Результаты экспериментов
Количество грузовиков |
Процент выполненных заданий |
Средняя загрузка одного грузовика, % |
Суммарный заработок водителей, руб. |
Средний заработок водителей за дневную смену, руб. |
Средний заработок водителей за ночную смену, руб. |
16 |
95,34 |
18,28 |
540400 |
28760 |
37350 |
17 |
95,65 |
17,86 |
570400 |
31022,22 |
39000 |
18 |
96,06 |
17,56 |
592000 |
34422,22 |
39444,44 |
19 |
96,58 |
17,11 |
628000 |
33760 |
40444,44 |
20 |
97,26 |
16,79 |
652800 |
36800 |
35600 |
Результаты экспериментов представлены в табл. 2.
Процент выполненных заданий вычисляется следующим образом:
(1)
где c – процент выполненных заданий, ci – количество выполненных заданий i-м агентом, cобщ – общее количество поступивших заданий, N – количество заданий.
Средняя загрузка одного грузовика вычисляется по следующей формуле:
(2)
где tср – средняя загрузка одного грузовика, ti – общая загрузка i-го грузовика (часы), N – количество грузовиков, T – период моделирования (168 ч).
Суммарный заработок вычисляется как сумма заработков всех водителей за время моделирования. Средние заработки за дневную и ночную смену вычисляются как суммарный заработок всех водителей за соответствующий период, разделенный на количество водителей.
Вышеуказанные показатели вычислены для серии экспериментов, в которой количество грузовиков варьируется от 16 до 20.
В табл. 2 представлены результаты вычислений характеристик. Показатели округлены с точностью до сотых.
Как видно из табл. 2, наилучший процент выполненных (98,26 %) заданий и суммарный заработок водителей (652800) достигается при 20 грузовых автомобилях. Следовательно, 20 грузовиков в автопарке является оптимальным количеством для моделируемой строительной компании.
Заключение
В данной статье разработана модель строительной сети магазинов с помощью Visual Studio в соответствии с условиями задания. Время моделирования процесса снабжения строительных магазинов равняется одной недели (168 часов).
Для каждого водителя модели вычислен заработок за неделю, количество выполненных заказов за этот же период, а также средняя загруженность каждого автомобиля (отношение времени, которое грузовик тратит на переезды и загрузку/выгрузку товара, к общему времени моделирования *100 %). Проведена серия экспериментов для 16–20 грузовиков, в которых рассчитывались различные показатели. Из экспериментов выявлено, что оптимальное количество автомобилей равняется 20, поскольку при нем достигается наилучший процент выполненных заданий и суммарный заработок водителей.