АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Описание модели примера 2

Читайте также:
  1. A. моделирование потока капитальных вложений
  2. B. моделирование потока амортизации
  3. C. моделирование потока прибыли
  4. F. моделирование потока собственных оборотных средств
  5. I. Описание практики.
  6. II. Описание экспериментальной установки
  7. II. Перенесение лингвистической модели в структурную антропологию
  8. III. Описание мнении (doxography)
  9. III. Описание основных целей и задач государственной программы. Ключевые принципы и механизмы реализации.
  10. V. Описание основных ожидаемых конечных результатов государственной программы
  11. X. Общее описание типов
  12. X. Общее описание типов.

На рис. 2.22 приведена структура модели примера 2. Она призвана проиллюстрировать только принцип моделирования неоднородных по­токов и потому описана здесь не полностью.

В этой структуре первый блок генерирует единственный тэг, кото­рый запускает на вход парикмахерской два потока клиентов: первого типа (client I stream) и второго (client 2 stream). В этих блоках отраба­тываются задержки между приходами клиентов и «навешиваются ви­зитные карточки». Для этого в поле Beginning Effect блока 2 (client I stream) размещаются операторы: tag:=tag+l; client_type[tag]:=l; а в блоке 3 (client 2 stream) — операторы: tag:=tag+l; client_type[tag]:=2;. Перед блоком 4 образуется общая очередь клиентов разных типов, по­скольку вход в этот блок ограничивается условием: St = =0; где St — переменная, имитирующая состояние парикмахера (0 — свободен, 1 — занят). Это условие выносится в поле Release Condition блока 4.

Задержка на время обслуживания в этом блоке определяется вели­чиной 18±6 ед. времени. В поле Beginning Effect размещается оператор St:=l, который имитирует переход парикмахера в состояние занято-


108


Часть 2. Имитационное моделирование


Дополнительные методы и средства имитации


109


 


Рис. 2.22. Структура модели примера 2

сти, а в поле Ending Effect размещается оператор освобождения парик­махера. В нашем примере он может быть освобожден, если заверши­лось обслуживание клиента первого типа, если же стригся клиент вто­рого типа, то его обслуживание должно быть продолжено (в блоке 5 — shaving), и следовательно парикмахер не может быть освобожден. В соответствии с этим содержанием в поле Ending Effect блока 4 раз­мещается оператор: if client_type[tag]= =1 then St:= 0;.

Клиент, выходящий из четвертого блока, направляется в пятый при выполнении условия: client_type[tag]= =2; и направляется в шес­той при выполнении условия client_type[tag]= =1. Эти условия разме­щаются в разветвителе, стоящем на выходе пятого блока.

Соответственно в поле Ending Effect блока 5 размещается оператор освобождения парикмахера: St:= 0;. В остальном эта модель мало чем отличается от модели примера 1.

Задача как накопитель тэгов

В общем случае в блоке задачи могут одновременно находиться несколько тэгов. Как правило, это происходит тогда, когда задача имитирует механизм обслуживания нескольких клиентов. В таких случаях задача превращается в своеобразный накопитель тэгов.

Пример 3; модель автозаправки с несколькими колонками

Эта модель отличается от модели примера 1 наличием нескольких бензоколонок.

В этом случае целесообразно, сохраняя структуру модели примера 1 (см. рис. 2.1), ввести переменную Nb — число свободных бензоко-


лонок и переопределить блок 2 описанием, приведенным на рис. 2.23 (переменная Status при этом оказывается ненужной).

Рис. 2.23. Пример описания задачи-накопителя тэгов

В этом случае блок 2 примера 1 превращается в накопитель, в ко­тором одновременно могут находиться Nb тэгов, имитирующих авто­мобили.

Замкнутые системы

Замкнутыми будем называть системы, в которых отсутствуют входные потоки тэгов. Все изменения в таких системах происходят за счет внутренних преобразований, внутренних процессов, происходя­щих в системе.

Деление систем на открытые и замкнутые достаточно условно. В любой реальной системе обычно можно выделить компоненты того и другого вида, однако понятие замкнутой системы полезно для осво­ения приемов имитации сложных систем.


110


Часть 2. Имитационное моделирование


Дополнительные методы и средства имитации


111


 


Пример 4: модель использования общего оборудования

Производство изделий определенного вида включает в себя длите­льный процесс индивидуального изготовления, заканчивающийся ко­ротким периодом обжига изделия в печи. Поскольку содержание печи обходится довольно дорого, несколько рабочих, каждый из которых изготовляет «свое» изделие, используют одну печь, в которой одно­временно можно обжигать только одно изделие. Рабочий не может начать новую работу, пока не вытащит из печи законченное изделие.

Таким образом, рабочий трудится в следующем режиме:

1) изготавливает изделие;

2) ожидает возможности использования печи по принципу «пер­
вым пришел — первым обслужен»;

3) использует печь;

4) переходит к изготовлению нового изделия.

На операцию изготовления изделия требуется 30+5 мин., на опе­рацию обжига 8+2 мин. Требуется построить имитационную модель для определения такого количества рабочих, при котором с одной стороны очередь минимальна, с другой — простои печи минимальны.

Решение этой задачи связано с разработкой модели, в которой ис­пользуется переменная Nw — количество используемых рабочих, зна­чение которой подбирается в процессе моделирования таким обра­зом, чтобы обеспечить наилучший баланс между длиной очереди и временем занятости печи.

Структура модели иллюстрируется схемой рис. 2.24.


редь—БлокЗ. Подобное «хождение» имитирует рабочий цикл, выпол­няемый каждым рабочим в течение рабочего дня.

Приведем содержимое основных полей блоков 1—3.

Бдрк1. (Begin)

Release Condition: tag<Nw;

Beginning Effect: tag:=ta.g+l;

Ending Effect: if tag = =Nw then Start:=l;

{Start — сигнал для начала работы}

Блок2. (Operation 1)

Release Condition: Start = = 1;

Mean Time: 30;

Standard Deviation: 25;

Frequency Distribution: Rectangular

БлокЗ. (Operation 2)

Release Condition: St = = 0;

Mean Time: 8;

Standard Deviation: 6;

Frequency Distribution: Rectangular

{St — состояние печи: 0 — свободна, 1 — занята}

Beginning Effect: St:=l; {Занять печь}

Ending Effect: St:=O; {Освободить печь}

(Блоки 1 и 2 в этом, примере используются как накопители тэгов.)


 


Рис. 2.24. Структура модели примера 4

Блок 1 (Begin) создает тэги в количестве, определяемом величи­ной Nw. Каждый тэг имитирует рабочего. Все созданные тэги-рабо­чие становятся в очередь перед вторым блоком (Operation 1) и ждут «начала работы». Работа начинается с появлением в модели (Nw)-oro тэга, который «разрешает» тэгам-рабочим войти во 2-ой блок. После входа каждый из рабочих начинает «ходить по кругу»: Блок2—-Оче-


Язык описания эффектов

Для описания модели используется язык описания эффектов. Основными элементами этого языка являются переменные, операто­ры и функции. Переменные были кратко описаны в разделе Описание элементов модели, там же был описан и оператор присваивания. Здесь мы излагаем дополнительные сведения о средствах языка описания эффектов, необходимые для разработки имитационных моделей.

Любое текстовое описание представляется последовательностью операторов языка, разделенных знаком «;». Кроме того, в любое место такого описания может быть вставлен комментарий — произвольный текст, заключенный в фигурные скобки, например {Это текст ком­ментария}.

К операторам, которые используются наиболее часто, относятся операторы присваивания, уточняющие (adjustment) и логические опе­раторы. Два последних описываются ниже. Более подробные сведе-


112


Часть 2. Имитационное моделирование


Дополнительные методы и средства имитации


113


 


ния по составу операторов и особенностям их использования содер­жатся в справочном разделе системы.

Уточняющий оператор определяет лаконичную запись соответству­ющего оператора присваивания. Например, оператор присваивания Х:=Х+1 эквивалентен уточняющему оператору Х+=1. Аналогично оператор Х:=Х—6 эквивалентен оператору X—=6, оператор Х:=Х*п оператору X*=n, a X:=X/Nn оператору X/=Nn. Здесь X, n, Nn f— име­на переменных.

Логические операторы сравнивают два числовых значения или ло­гических аргумента. Результат равен 1, если сравнение является ис­тинным, или 0, если сравнение ложно. Соответственно 1 рассматри­вается как значение ИСТИНА, а 0 — как значение ЛОЖЬ. Например, если известно, что а равно 0,01 a b равно 3, то следующие выражения истинны: a<=b;a<b;a<>b;a следующие ложны: а = = Ь; а >= Ь; а > Ь. (Здесь запись < = означает «меньше или равно», < означает «меньше», <> — «не равно», = = — «равно», >= — «больше или рав­но», > — «больше».)

Не путайте записи «= =» и «:=»: логический оператор «= =» срав­нивает значения двух переменных, а оператор присваивания «:=» на­значает значение переменной, стоящей слева от оператора.

К логическим операторам относятся также операторы «&» (логи­ческое И) и «|» (логическое ИЛИ). Оператор «&» проверяет истин­ность двух логических выражений (одновременно) и возвращает зна­чение 1, они оба истинны, в противном случае он возвращает значе­ние 0. Например, если а равно 0,01 a b равно 3, то следующие выражения истинны:

(а = = 0,01) & (Ь = = 3); (а < 2) & (Ь > 2); (а < Ь) & (Ь <> 0).

Заметим, что выражение (а & Ь) также истинно, поскольку оба ар­гумента больше нуля, соответственно истинным будет и выражение (а * 100) & (Ь / 3). В этом смысле любое число, не равное нулю в ло­гическом операторе, интерпретируется как ИСТИНА, а ноль — как ЛОЖЬ.

Логический оператор (|) проверяет, есть ли из двух значений хотя бы одно, не нулевое, и возвращает в этом случае значение ИСТИНА, а если нет, то возвращает значение ЛОЖЬ. В нашем примере логиче­ские операторы (а= =0,01) | (Ь>4), (а>0) | (Ь>0) истинны, а (а = = 0) | (а = = Ь), (а-0,01) | (Ь-3) — ложны.

If-then-else оператор обеспечивает выполнение действий, необхо­димых при заданных условиях. Например, оператор: if а + 3 == 5 then b:= I, c:= 1; в случае, когда (а + 3 = = 5), т. е. переменная а имеет


значение 2, запишет в переменные b и с значения 1, а в противном случае он ничего не сделает.

Оператор:

if а then b += 1 else b -= 1;

в случае, когда а не равно нулю, увеличит значение переменной b на 1, а в противном случае (а равно нулю) уменьшит b на единицу.

Оператор: if a < b then b else а; при условии, что а меньше Ь, вер­нет значение переменной Ь, а в противном случае — значение пере­менной а.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)