- •Ю.Н.Алексеев
- •Имитационное моделирование в системе имитак
- •Москва – 2007
- •На заседании кафедры экономической кибернетики
- •7 Ноября 2007 г., протокол № 7
- •Оглавление
- •§1. Концепция системной динамики, реализованная в системе имитак. 4
- •§2. Механизмы визуального мышления в системе имитак. . . 8
- •§3. Встроенные функции системы имитак. . . . . . 17
- •§4. Базы данных и система имитак. . . . . . . 60
- •§1 Концепция системной динамики, реализованная в системе имитак
- •Р ис. 2 Диаграмма потоков контура обратной связи
- •§2 Механизмы визуального мышления в системе имитак
- •§3 Встроенные функции системы имитак
- •Стохастические функции
- •Временные функции
- •Функции имитации систем массового обслуживания
- •§3.1. Элементарные функции
- •§3.2. Переключательные функции
- •§3.3. Стохастические функции
- •§3.4. Встроенные функции работы с массивами
- •§3.5. Временные функции
- •§3.6. Функции имитации систем массового обслуживания
- •§3.7. Графические (маргинальные) функции
- •3.7.1Паутинообразная модель рынка с запаздыванием спроса
- •3.7.2 Паутинообразная модель рынка с запаздыванием предложения.
- •3.7.3 Паутинообразные модели с обучением.
- •§4. Базы данных и система имитак
- •§4.1. Создание базы данных и ее заполнение
- •3)Создание модели, интегрированной с базой данных.
- •§4.2. Создание в операционной системе имени источника данных odbc (dsn- data source name).
- •§4.3. Создание модели, интегрированной с базой данных.
- •Заключение
§3.6. Функции имитации систем массового обслуживания
Встроенная функция очереди (FIFO)
Для моделирования систем массового обслуживания в ИМИТАК предусмотрено две встроенные функции: очереди (FIFO) и обслуживающего элемента (WAIT).
Первая из них функция FIFO – очередь.
Данная функция запоминает значение переменной, подающееся на вход этой функции, причем запись в очередь и выдача из очереди значений (заявок) регулируется специальными ключами на входе и выходе. Функция FIFO составлена из первых букв выражения FIRST IN – FIRST OUT – что означает «первым пришел – первым обслужился». (Альтернативой является LIFO – LAST IN – FIRST OUT – что соответствует «последним пришел – первым обслужился»). Общий вид функции следующий:
Ф(t)=FIFO(А(t), В(t), С(t), Д)
где А(t) – входная функция, определяющая заявки, которые ставятся в очередь (очередь представляет собой как правило последовательность величин временных интервалов).
В(t)-ключ на входе очереди, регулирующий постановку в очередь различных значений А(t). При этом ключ В(t) работает в двух режимах:
если В(t) , то очередь закрыта по входу
если (t), то очередь открыта по входу
С.Н – ключ на выходе очереди, регулирующий выдачу из очереди заявки на обслуживание. При этом ключ С.Н работает в двух режимах (аналогично входному ключу):
если С(t) , то очередь закрыта по выходу
если С(t), то очередь открыта по выходу.
Д – максимально допустимая длина очереди, задаваемая в виде константы.
В мнемонике системы ИМИТАК функция FIFO отображается следующим значком:
Рис 44: Идеограмма функции очереди
Встроенная функция ожидания (WAIT)
Другой встроенной функцией имитации системы массового обслуживания является WAIT – обслуживающий элемент (ожидание). Данная функция имитирует ожидание в виде выдачи на выходе ее числового значения, равного единице (или близкого к единице) в течение такого периода, который равен численному значению аргумента данной функции (чисто арифметическое округление аргумента ведется автоматически).
При этом, пока функция находится в ожидании (в дальнейшем это будем называть «зоной активности») поступления других аргументов вновь поступающие аргументы игнорируются.
Ф.Н=WAIT(А(t))
где А(t) – значение аргумента, как правило, являющегося временным промежутком, выраженным косвенно в числе периодов, которые необходимо ожидать.
Для имитации систем массового обслуживания функции FIFO и WAIT используются совместно, образуя своеобразный временной контур. В этом контуре применен следующий принцип: когда обслуживающий элемент (WAIT) освобождается, то из очереди (FIFO) выбирается следующая заявка.
В ИМИТАК любой логический контур реализуется с использованием уровней и темпов, причем на прохождение через этот контур информации тратится, как правило, не менее чем один шаг моделирования.
В системах массового обслуживания это привело бы к одному «холостому ходу», связанному с обслуживанием отдельной заявки. Чтобы не терялся ход, и очередь открывалась на последнем шаге «зоны активности», а не на следующем шаге, функция WAIT на последнем шаге «зоны активности» равняется не единице, а 0.999.Это позволяет на последнем шаге «зоны активности» открывать FIFO и выбирать следующую заявку, не теряя «холостого хода» в процессе моделирования. Для компенсации ошибки в одну тысячную на первом шаге «зоны активности» выход WAIT равняется 1.001. Для заявок, у которых «зона активности» равняется единице, выход WAIT всегда равняется 0.999.
Диаграмм потоков указанной модели будет иметь следующий вид:
Рис 45:Контур обратной связи СМО
Модель-программа указанного контура обратной связи будет выглядеть следующим образом:
; Касса
У КАССА. Н =WAIT(ОЧЕР. ПН )
; Генератор длительностей обслуживания клиентов
Д ГДОК.Н=WHOLE(RAND(0,5),0)
; Ключ по входу
Д КВХ.Н=SWITCH(1,0,ГДОК.Н)
; Очередь
Т ОЧЕР.НБ=FIFO(ГДОК.Н,КВХ.Н,КАССА.Н,20)
Теперь, взяв за основу базовую модель, рассмотренную выше, проведем иерархию построения имитационной модели
Пример 16. Построить имитационную модель кассового окошечка банка, в котором клиентов обслуживает один оператор. Клиенты приходят случайным образом и занимают различные времена обслуживания.
Адаптировать модель банка блоком, увеличивающим время обслуживания клиента на 2 единицы времени за счет усталости кассира, которые поступает после обслуживания 5 клиентов. Вероятность прихода клиента в каждый момент времени составляет 0.6.
Этап 1. Следуя условиям данной задачи, во-первых, необходимо ключ по входу заменить на случайное событие, которое с вероятностью 0.6 наступает. Это можно сделать с помощью оператора
КВХ.Н=EVENT(0.4)
Данная функция EVENT реализует в каждом шаге моделирования единицу с вероятностью 0.4 и ноль с вероятностью 0.6. А так как в функции FIFO аргумент В(t) открывает очередь только при нулевом значении, то условие, которое приведено в данной задаче выполняется.
Рис 46:Первый этап иерархии построения модели СМО
; Касса
У КАССА.Н=WAIT(ОЧЕР.ПН)
; Генератор длительностей обслуживания клиентов
Д ГДОК.Н=WHOLE(RAND(1,5),0)
; Ключ по входу
Д КВХ.Н=EVENT(0.4)
; Очередь
Т ОЧЕР.НБ=FIFO(ГДОК.Н,КВХ.Н,КАССА.Н,20)
Е
;------ Конец 1-ого раздела -----------------------
И КАССА=0
Е
Этап 2. На данном этапе будем осуществлять подсчет обслуженных клиентов. Для этого введем специальный оператор – уровень:
; Число обслуженных клиентов
У ЧОК.Н = ЧОК.П+ТЧОК.ПН
Так как каждый обслуженный клиент соответствует
КАССА(t)=0.999
То входной темп уровня ЧОК будет представлять
ТЧОК.НБ=SWITCH(1,0.(КАССА.Н-0.999))
Т.е. когда клиент будет обслужен, то
ТЧОК=1
А в остальных случаях мы будем иметь ноль.
Рис 47: Этап 2 иерархии построения модели СМО
; Касса
У КАССА.Н=WAIT(ОЧЕР.ПН)
; Генератор длительностей обслуживания клиентов
Д ГДОК.Н=WHOLE(RAND(1,5),0)
; Ключ по входу
Д КВХ.Н=EVENT(0.4)
; Очередь
Т ОЧЕР.НБ=FIFO(ГДОК.Н,КВХ.Н,КАССА.Н,20)
; Темп числа обслуженных клиентов
Т ТЧОК.НБ=SWITCH(1,0,(КАССА.Н-0.999))
; Число обслуженных клиентов
У ЧОК.Н=ЧОК.П+ТЧОК.ПН
Е
;------ Конец 1-ого раздела -----------------------
И КАССА=0
И ЧОК=0
Е
;Этап 3. На этом заключительном этапе происходит коррекция длительности обслуживания клиентов. Для этого, согласно условию задачи, ЧОК сравнивается (СРАВ – сравнение) с пятью и после того, как этот «барьер» будет пройден, к длительности обслуживания клиента, получаемой из оператора ОЧЕР. добавляется двойка. Для этого вместо темпа ОЧЕР (который в таком случае превращается в дополнительное выражение) вводится ТКАССА
ТКАССА.НБ =ОЧЕР.Н +СРАВ.Н
В результате окончательный вариант модели будет иметь следующий вид:
Рис 48: Этап 3 иерархии построения модели СМО
Модель-программа, которая будет соответствовать этой диаграмме потоков:
; Касса
У КАССА.Н=WAIT(ТКАССА.ПН)
; Число обслуженных клиентов
У ЧОК.Н=ЧОК.П+ТЧОК.ПН
; Генератор длительностей обслуживания клиентов
Д ГДОК.Н=WHOLE(RAND(1,5),0)
; Ключ по входу
Д КВХ.Н=EVENT(0.4)
; Сравнение
Д СРАВ.Н=CLIP(0,2,ЧОК.Н,5)
; Очередь
Д ОЧЕР.Н=FIFO(ГДОК.Н,КВХ.Н,КАССА.Н,20)
; Темп числа обслуженных клиентов
Т ТЧОК.НБ=SWITCH(1,0,(КАССА.Н-0.999))
; Входной темп кассы
Т ТКАССА.НБ=ОЧЕР.Н+СРАВ.Н
Е
;------ Конец 1-ого раздела -----------------------
И КАССА=0
И ЧОК=0
; Константа
К КОН=5
Е
После пропуска модели на компьютере мы будем иметь следующий графический и числовой результаты.
Рис 49: Графические результаты моделирования СМО
Таблица 27: Числовые результаты моделирования СМО
КАССА |
ОЧЕР |
СРАВ |
ЧОК |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2 |
0 |
0 |
1 |
0 |
0 |
0 |
0.999 |
1 |
0 |
0 |
0.999 |
1 |
0 |
1 |
0.999 |
1 |
0 |
2 |
0.999 |
1 |
0 |
3 |
0.999 |
0 |
0 |
4 |
0 |
0 |
0 |
5 |
0 |
0 |
0 |
5 |
0 |
2 |
0 |
5 |
1 |
0 |
0 |
5 |
0.999 |
0 |
0 |
5 |
0 |
3 |
2 |
6 |