|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Описание модели примера 2На рис. 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 а; при условии, что а меньше Ь, вернет значение переменной Ь, а в противном случае — значение переменной а. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |