Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Пример 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 а; при условии, что а меньше Ь, вернет значение переменной Ь, а в противном случае — значение переменной а.
|