- •Имитационное моделирование
- •Оглавление
- •Глава 1. Математическое моделирование 8
- •Глава 2. Имитация случайных процессов 54
- •Глава 3. Имитационное моделирование 70
- •Предисловие
- •Введение
- •Глава 1. Математическое моделирование
- •1.1. Модели и их виды
- •1.2. Моделирование
- •1.3. Модельное время и виды процессов
- •1.4. Построение дискретной (пошаговой) аналитической модели
- •1.4.1. Сущность пошагового моделирования
- •1.4.2. Принципы построения пошаговой модели
- •1.4.3. Примеры моделей
- •1.5. Построение аналоговой (дифференциальной) аналитической модели
- •1.5.1. Сущность дифференциального (функционального) подхода
- •1.5.2. Диаграммы процессов и переход к дифференциальным уравнениям
- •1.5.3. Принципы построения дифференциальной модели
- •1.5.4. Примеры
- •1.6. Упражнения
- •Вопросы к главе
- •Глава 2. Имитация случайных процессов
- •2.1. Базовые сведения о случайных величинах
- •2.1.1. Случайные величины и их распределения
- •2.1.3. Характеристики случайных величин
- •2.1.4. Метод Монте-Карло
- •2.2. Дискретные случайные числа и их имитация
- •2.3. Непрерывные случайные числа и их имитация
- •2.4. Упражнения
- •Вопросы к главе
- •Глава 3. Имитационное моделирование
- •3.1. Постановка задачи имитационного моделирования
- •3.2. Специфика имитационных моделей
- •3.3. Построение дискретной (пошаговой) имитационной модели
- •3.3.1. Построение пошаговой имитационной модели
- •3.3.2. Примеры
- •3.4. Блочное моделирование
- •3.4.1. Преимущества блочного моделирования
- •3.4.2. Принципы блочного подхода к составлению дифференциальной модели
- •3.4.3. Переход от диаграммы процессов к блочной модели
- •3.4.4. Примеры
- •3.5. Стохастическое моделирование
- •3.5.1. Основы теории очередей
- •3.5.2. Принципы построения систем массового обслуживания
- •3.5.3. Текстовое моделирование
- •3.5.4. Примеры
- •3.6. Упражнения
- •3.6. Вопросы к главе
- •Заключение
- •Библиографический список
- •Имитационное моделирование
3.5.4. Примеры
Пример 3.4
Моделируемая ситуация: В сервисном центре осуществляется ремонт оргтехники двумя мастерами. Требуется промоделировать работу центра в течение рабочей смены – 8 часов.
Постановка задачи: Известны следующие параметры: поток заказов, поступающих от клиентов, подчиняется экспоненциальному распределению вероятностей с параметром 6,5; время ремонта у первого мастера составляет (10 2,5) мин, а у второго – (13 4) мин; заказ поступает к мастеру, который не занят ремонтом другого устройства.
Решение:
Данная модель состоит из одной фазы и двух каналов. Время моделирования выбираем в минутах. Схематично данную задачу можно представить как однофазную двухканальную СМО (рис. 33).
Рис. 33. Схема структуры модели СМО
Составим модель в программе GPSS World:
GENERATE (Exponential(1,0,6.5))
QUEUE Master
QUEUE Total_time
TRANSFER Both,Mas1,Mas2
Mas1 SEIZE Master1
DEPART Master
ADVANCE 10,2.5
DEPART Total_time
RELEASE Master1
TRANSFER ,Next
Mas2 SEIZE Master2
DEPART Master
ADVANCE 13,4
RELEASE Master2
Next SAVEVALUE Ave_Queue,QT$Master
TERMINATE
GENERATE 480
TERMINATE 1
START 1
В настройках модели установим следующие параметры (рис. 34): отображать блоки, очереди, каналы обслуживания и накопители. Точность вычисления укажем повышенную (Scientific).
Рис. 34. Окно настройки содержимого отчёта
После запуска модели на выполнение появится отчёт следующего содержания (start = 1):
GPSS World Simulation Report
START TIME END TIME BLOCKS
0.000 480.000 19
LABEL LOC BLOCK TYPE ENTRY COUNT
1 GENERATE 83
2 QUEUE 83
3 QUEUE 83
4 TRANSFER 83
MAS1 5 SEIZE 45
6 DEPART 45
7 ADVANCE 45
8 DEPART 44
9 RELEASE 44
10 TRANSFER 44
MAS2 11 SEIZE 33
12 DEPART 33
13 ADVANCE 33
14 DEPART 32
15 RELEASE 32
NEXT 16 SAVEVALUE 76
17 TERMINATE 76
18 GENERATE 1
19 TERMINATE 1
FACILITY ENTRIES UTIL. AVE. TIME AVAIL.
MASTER1 45 0.901 9.608 1
MASTER2 33 0.875 12.734 1
QUEUE MAX CONT. AVE.CONT. AVE.TIME AVE.
Master 10 5 83 20.209 23.962
Total_Time 12 7 83 30.481 30.481
Таким образом, можно выделить следующие параметры накопителя:
• время окончания моделирования – 480 минут;
• число блоков – 19.
Для каналов обслуживания Master1 и Master 2:
• число входов – 45 и 33;
• коэффициент использования – 0.901 и 0.875;
• среднее время обслуживания – 9.608 и 12.734.
Параметры очередей Master и Total_Time:
• максимальное содержание – 10 и 12;
• число входов – 83;
• среднее число входов – 3.494 и 5.271.
Для создания графика заполним поля окна Edit Plot Window (рис. 35).
В результате просчёта будет выведено окно (рис. 36).
Рис. 35. Окно настройки параметров вывода графика
Рис. 36. График динамики длины очереди транзактов
Вывод: Мастера полностью загружены работой, при этом они справляются с потоком заказов. Следовательно, система сбалансирована по нагрузке и в совершенствовании не нуждается.
Пример 3.5
Моделируемая ситуация:
В отдел индивидуальных заказов типографии работает пятеро сотрудников. Трое осуществляют набор и корректуру текста будущего печатного материала, а двое верстают итоговый макет. Необходимо оценить эффективность работы отдела и сформулировать конкретное предложение по оптимизации распределения кадрового состава.
Постановка задачи:
Известны следующие параметры:
– частота потока заказов, поступающих в отдел, подчиняется экспоненциальному закону распределению с параметром 12,8 минут;
– время выполнения одного заказа на этапе набора текста равно (10 ± 2.5) мин, (13 ± 2) мин и (15 ± 1) мин для первого, второго и третьего работника соответственно.
– время на вёрстку макета составляет (17 ± 3.8) и (12 ± 2.11) мин соответственно.
Осуществите моделирование работы отдела в течение 9-часового рабочего дня, постройте графики длин очередей, отобразите функции плотности для ожидания в первой, второй и общей очередях. Предложите оптимальную конфигурацию системы.
Решение: Данная модель состоит из двух фаз и трёх каналов. Время моделирования удобно выбрать в минутах. Схематично данную задачу можно представить так двухфазную трёхканальную СМО (рис. 37).
Рис. 37. Схема структуры модели СМО
Составим модель в программе GPSS World. Для диспетчеризации многоканального обслуживания воспользуемся режимом All команды TRANSFER. Он имеет следующие параметры:
первый канал (значение 1);
последний канал (значение 3);
число действий (команд) при описании одного канала (по 6 строк кода).
При описании накопителя (NABOR) нужно осуществить ввод в него транзакта (команда ENTER), а после обслуживания – его вывод (команда LEAVE). Обратите внимание – явно описываются только первый и последний каналы. Листинг модели приведён ниже.
NABOR STORAGE 4
TAB2 QTABLE Verstka,0,3,12
QALL TABLE M1,5,2,10
GENERATE (Exponential(1,0,12.8))
QUEUE TextNabor
QUEUE Total_time
ENTER NABOR
TRANSFER ALL,Rab1,Rab3,6
Rab1 SEIZE TextNabor1
ASSIGN 1,TextNabor1
DEPART TextNabor
ADVANCE 10,2.5
RELEASE TextNabor1
TRANSFER ,Next
SEIZE TextNabor2
ASSIGN 1,TextNabor2
DEPART TextNabor
ADVANCE 13,2
RELEASE TextNabor2
TRANSFER ,Next
Rab3 SEIZE TextNabor3
ASSIGN 1,TextNabor3
DEPART TextNabor
ADVANCE 15,1
RELEASE TextNabor3
Next LEAVE NABOR
TABULATE QALL
SAVEVALUE Ave_Queue,QT$TextNabor
QUEUE Verstka
TRANSFER Both,Ver1,Ver2
Ver1 SEIZE Verstka1
DEPART Verstka
ADVANCE 17,3.8
RELEASE Verstka1
TRANSFER ,FinSh
Ver2 SEIZE Verstka2
DEPART Verstka
ADVANCE 12,2.11
RELEASE Verstka2
TRANSFER ,FinSh
FinSh SAVEVALUE Ave_Queue,QT$Verstka
DEPART Total_time
TERMINATE 1
START 1
В настройках модели установим следующие параметры: не отображать блоки, отображать очереди, каналы обслуживания и накопители. Укажем повышенную точность вычисления (режим Scientific).
Для отображения табличных данных используются объекты QTABLE (TAB2) и TABLE (QALL). Объект QTABLE на этапе вёрстки осуществляет сбор статистических данных, которые будут помещены в таблицу, в соответствии со следующими параметрами:
– названием блока (очередь на вёрстку);
– минимальным значением для отсчёта (0);
– шагом (3 минуты);
– числом интервалов (12 шагов, начиная от минимального значения).
Если нужно измерить значение произвольного объекта, то можно воспользоваться конструкцией TABLE со следующими параметрами:
– М1 (системный параметр);
– минимальным значением для отсчёта (5);
– шагом (2 минуты);
– числом интервалов (10 шагов).
Для привязки к таблице объекта, по которому будет собираться статистика, в коде должна быть конструкция TABULATE, с названием самой таблицы. В данном случае измеряется время прохождения транзактом первой фазы обслуживания.
После запуска модели на выполнение появится отчёт следующего содержания (start = 540):
START TIME END TIME BLOCKS
0.000 6992.399 40
FACILITY ENTRIES UTIL. AVE. TIME AVAIL.
TEXTNABOR1 318 0.457 10.045 1
TEXTNABOR2 165 0.305 12.936 1
VERSTKA1 282 0.685 16.978 1
VERSTKA2 260 0.445 11.981 1
TEXTNABOR3 60 0.129 15.010 1
QUEUE MAX CONT. AVE.CONT. AVE.TIME AVE.
VERSTKA 5 0 542 2.148 6.159
TEXTNABOR 3 0 543 0.128 3.019
TOTAL_TIME 8 2 543 28.298 28.298
STORAGE CAP. REM. MIN. MAX. ENTRIES
NABOR 4 3 0 4 543 1
SAVEVALUE RETRY VALUE
AVE_QUEUE 0 2.148
Для подкрепления выводов нужно отобразить часть информации графически. Для создания графика заполним поля окна Edit Plot Window (рис. 38 и 39).
Из графика видно, что нагрузка распределяется во времени неравномерно. Поэтому воспользуемся графическим отображением табличных данных (Table Window). На рис. 40, а представлена гистограмма распределения времени обслуживания транзактов для этапа набора, а на рис. 40, б – для этапа вёрстки.
Таким образом, можно выделить следующие параметры накопителя:
Время окончания моделирования – 540 минут.
Для каналов обслуживания TEXTNABOR1, TEXTNABOR2 и TEXTNABOR3:
• число входов – 318, 165 и 60;
• коэффициент загрузки – 0.45, 0.3 и 0.12;
• среднее время обслуживания – 10, 13 и 15 минут.
Рис. 38. Окно настройки графика
Рис. 9. График длины очереди транзактов на обслуживание
|
|
а |
б |
Рис. 40. Гистограммы длин очередей для первой (а) и второй (б) фазы
Для каналов обслуживания VERSTKA1 и VERSTKA2:
• число входов – 282 и 260;
• коэффициент загрузки – 0.685 и 0.445;
• среднее время обслуживания – 17 и 12 минут.
Параметры очередей VERSTKA, TEXTNABOR и TOTAL_TIME:
• максимальная длина очереди – 5, 3 и 8 заказов;
• число входов – 543 (все заявки обслужены);
• среднее время пребывания в очереди – 6.1, 3 и 28.3 минут соответственно.
Общая загрузка канала обслуживания на первой фазе составляет 23 %. Из диаграммы для времени обслуживания на первой фазе (QALL) видно, что она тяготеет к нормальному распределению и имеет среднюю длительность в 13 минут на один заказ. Согласно диаграмме TAB2, очередь на верстку в большинстве случаев имеет нулевую длину. Следовательно, система нуждается в балансировке.
Оптимизация. Осуществим изъятие из первой фазы одного (третьего) работника. Тогда загрузка первого составит 0.5, а второго – 3.55. При этом длина очереди как на набор, так и на вёрстку сохранится малой (максимально 3 и 4 заказа соответственно).
Продолжим моделирование. Уберём второго работника из первой фазы. Тогда загрузка оставшегося составит 0.75 (вполне приемлемое значение). При этом длина очередей в системе останется малой.
Обратимся ко второй фазе. Загрузка работников равна 0.685 и 0.445 соответственно. Это говорит о том, что нагрузка на них явно мала. Посмотрим, как будет себя вести модель, если убрать второго работника со второй фазы обработки транзакта. Загрузка работника составит 0.995 – человек не справляется, а это недопустимо. Кроме того, максимальная длина очереди заказов составит 152 заявки! Следовательно, работника убирать с этой фазы нельзя.
Вывод: Результаты моделирования показали, что исходная работа подразделения не сбалансирована и работники мало загружены. Необходимо перераспределить численность кадров в отделе.
Предлагается убрать из отдела для первой фазы (этап набора текста) работников 2 и 3, так как их скорость работы меньше, чем у первого. При этом загрузка первого работника составит всего 0.75, что вполне допустимо.
Если убрать одного человека со второй фазы (дизайн и вёрстка), то оставшийся сотрудник справляться не будет. Но если сохранить обоих сотрудников, то второй будет недогружен. Предлагается нанять второго работника на полставки либо предусмотреть для него дополнительную нагрузку за пределами отдела.