Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изданная метод ИМИТАК.docx
Скачиваний:
3
Добавлен:
18.11.2019
Размер:
1.45 Mб
Скачать

§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