Этап конструирования и описания модели
Сетевая структура модели
Модель исследуемой системы должна быть представлена в виде сетевой структуры. Пример такой структуры приведен на рис. 2.1.
Рис. 2.2
Содержательно эту простейшую схему рис. 2.1 мы будем интерпретировать как
Пример 1: модель обслуживания автомобилей на заправочной
станции
Станция оснащена одной бензоколонкой, перед которой может образовываться очередь. Тэг в этой модели исполняет роль автомобиля, а разветвитель используется для организации потока автомобилей. Буква М, стоящая внутри ромбика (первая буква слова Multiple — множественный), означает, что любой тэг-автомобиль, приехавший на заправку, попадая в разветвитель, раздваивается (порождает копию). При этом основной тэг направляется в блок 2 (на обслуживание), а копия возвращается в первый блок, имитируя приезд другого автомобиля.
Разветвитель появляется в структуре модели автоматически при создании в блоке нескольких выходных стрелок связи с помощью инструментов панели рис. 2.2.
Блок «Саг coming» определяет приезд автомобилей на заправку, а блок «Gas station» — обслуживание автомобиля у бензоколонки. Любой тэг, «входящий» в блок, может в этом блоке задерживаться на определенное время. Такое время имитирует интервалы между приходами автомобилей на заправочную станцию и собственно длительностью процедуры заправки.
Описание элементов модели
Описание элементов модели связано с понятием переменной.Любая переменная используется для описания какой-либо характеристики системы, например, бензоколонка может находиться в одном из двух состояний:
Часть 2. Имитационное моделирование
Введение в систему Micro Saint
• занята (идет заправка автомобиля),
• свободна (нет заправки — колонка простаивает).
Мы можем имитировать эти состояния с помощью переменной Status, которая будет принимать два значения:
Status := 1; (колонка переходит в состояние «Занята»),
Status := 0; (колонка переходит в состояние «Свободна»).
Оператор «:= » называется оператором присваивания, он назначает переменной Status то значение, которое записано справа от оператора присваивания. В этом примере Status — имя переменной, а 0 и 1 — возможные значения переменной. Во многих случаях перечислить все значения переменной трудно (или невозможно), поэтому в таких ситуациях переменную характеризуют типом, определяющим ее возможные значения.
Например, переменную N — количество автомобилей, обслуженных на автозаправке, резонно охарактеризовать типом Integer(целое число), а переменную V — количество заливаемого бензина — типом Real(действительное число).
В процессе имитации исследуемой системы переменные модели будут изменять свои значения, поэтому перед запуском модели всем переменным необходимо назначить исходные начальные значения(Initial Value), которые будут определять исходное состояниесистемы.
Все переменные модели должны быть внесены в список переменных.
Открытие такого списка реализуется нажатием кнопки §§| (средний ряд, вторая кнопка слева, см. рис. 2.1). При этом откроется окно списка переменных (рис. 2.3).
Рис. 2.3. Окно списка переменных (Name — имя, Value — значение переменной)
В этом списке представлены системные переменные. Такие переменные используются в любой модели, важнейшими из них для нас являются переменные clock — модельное время и tag (тэг)— индивидуальный номер динамического объекта.
Одновременно в модели может присутствовать много тэгов, все они совершают передвижения по блокам структурной схемы Однако реализация таких передвижений происходит в определенной последовательности, при этом тэг, который в текущий момент времени стоит в голове такой последовательности, считается активным.
Кроме системных в.модели присутствуют переменные, которые определяются непо-средственно пользователем применительно к его модели.
В нашем случае это переменные Status — состояние бензоколонки и N — количество автомобилей, обслуженных на автозаправке. Для того чтобы ввести эти переменные в список, необходимо нажать кнопку ???(нижний ряд панели инструментов рис. 2.1, справа) При этом откроется окно рис. 2.4, в котором задается имя переменной, ее смысловое содержание, тип и начальное значение.
Рис. 2.4. Окно описания переменной
Нажатие кнопки,Accept вводит переменную в список, только после этого она становится полноправным участником процесса моделирования.
90
Часть 2. Имитационное моделирование
Введение в систему Micro Saint
91
Описание задачи
Окно описания задачи открывается после двойного клика на соответствующем блоке сетевой структуры модели.
На рис. 2.5 приведено такое окно для первого блока сетевой структуры рис. 2.1 «Gar coming».
Рис. 2.5.Окно описания задачи
■
Поля Time Distribution, Mean Timeи Standart Deviationиспользуются для задания интервала времени между приходами автомобилей на заправочную станцию. В списке Time Distributionсодержатся различные законы распределения вероятностей. Для нашего примера мы использовали равномерное распределение (Rectungular)со средним значением 10 (мин) и отклонением от среднего, равным 3 (мин). (В поле Standart Deviationв этом случае записывается 10 — 3 = 7 (мин), т. е. нижняя граница равномерного распределения.) Такое задание приведет к тому, что в нашу модель будут поступать автомобили (тэги) через интервал времени (10 ± 3) мин. Выбор в качестве единицы време-
ни 1 мин. обусловлен только исследователем. В общем случае это может быть произвольная единица (день, час и т. п.).
Поле Release Conditionв общем случае содержит условие возможностивхода тэга в соответствующий блок. Если в этом поле присутствует любое число, большее 0, вход в блок открыт (в нашем примере для блока «Gar coming» любой автомобиль может въехать на заправочную станцию). Для блока «Gas station» в поле Release Conditionдолжно быть размещено условие входа в этот блок: Status= =0, т. е. вход автомобиля в блок возможен только тогда, когда бензоколонка свободна. В противном случае автомобиль не сможет подъехать к бензоколонке и будет находиться в очереди (символ «= =» используется как отношение равенства).
Поля Beginning Effect, Launch Effectи Ending Effectпредназначены для размещения в них описаний действий, которые необходимо выполнить соответственно при входе тэга в блок, при прерывании его обслуживания в блоке и при выходе тэга из блока (поле Launch Effectв дальнейшем не используется).
В нашем примере для блока «Саг coming» (рис. 2.5) мы использовали только поле Beginning Effect, в котором разместили оператор: tag:=tag+l. Этот оператор присваивания (см. выше) реализует алгоритм накопления: каждый раз при входе вновь приехавшего автомобиля в блок «Саг coming» входной эффект будет увеличивать индивидуальный порядковый номер автомобиля на 1. Таким образом, через структуру модели будут последовательно проводиться тэги-автомобили с номерами 0, 1, 2 и т. д.
В аналогичном окне для блока «Gas station» в полях входного и выходного эффектов будут размещены действия по изменению состояния бензоколонки. В поле входного эффекта определяется действие по занятию бензоколонки: Status:=l; а в поле выходного — по ее освобождению: Status:=O. Кроме того, в этом поле определяется действие, связанное с подсчетом количества автомобилей, «прошедших» через автозаправочную станцию: N:=N+1.
В полях Time Distribution, Mean Timeи Standart Deviationблока «Gas station» следует указать характеристики времени заправки автомобиля (например, равномерное распределение в интервале 12 ± 6 мин.).
Исполнительная система, реализующая проводку тэгов через структуру модели, вычисляет описанные эффекты в следующем порядке:
• условие входа в блок (Release Condition);
• Beginning Effect;
Введение в систему Micro Saint
Описание разветвителя |
• определение времени задержки в блоке (поля Time Distribution,
Mean Time и Standart Deviation);
• Ending Effect.
Рис. 2.6. Окно описания очереди
Описание регистратора очереди
Окно регистратора очереди вызывается двойным кликом на значке соответствующей очереди (табличка) в структуре модели.
Поле SortingOrder определяет порядок элементов (тэгов) в очереди:
• FIFO (First In-First Out, первым вошел — первым вышел);
• LIFO (Last In-First Out, последним вошел — первым вышел);
• Sorted (очередь упорядочена по значениям выражения, которое
размещено в поле Priority).
В последнем случае из очереди для входа в блок задачи выводится тот тэг, для которого значение выражения в поле Priority максимально.Обычно это выражение использует индивидуальный номер тэга.
Использование полей Entering Effectи Departing Effectаналогично использованию полей входного и выходного эффекта в окне описания задачи.
Окно описания разветвителя открывается двойным кликом на изображении разветвителя на структурной схеме модели.
Разветвитель может использовать один из трех типов разветвления (Decision Type):Multiple, Probabilistic и Tactical. Первый тип разветвления уже обсуждался выше — он создает множество копий тэга, вошедшего в разветвитель, и отправляет их на все выходы разветвителя. Такой режим позволяет моделировать параллельные (одновременно протекающие) процессыв исследуемой системе.
Единицы в полях Routing Conditionинтерпретируются так же, как и в полях Release Conditionописания задачи (см. рис. 2.5).
Тип Probabilistic определяет стохастический(случайный) механизм выборатэгом направления дальнейшего движения. Для такого выбора в полях Routing Conditionзадаются вероятности переходов по выбранному направлению (их сумма должна быть равна 1).
94
Часть 2. Имитационное моделирование
Введение в систему Micro Saint
95
Тип Tactical использует поля Routing Conditionдля записи выражений, значения которых определяют направление дальнейшего движения тэга. Тэг, проходящий через разветацтель типа Tactical, будет направлен в ту задачу, для которой выражение, записанное в соответствующем поле Routing Condition,примет (в момент перехода) максимальное значение.
Этап проведения компьютерного эксперимента
с моделью
Запуск модели
После составления описаний всех элементов модели она может быть запущена для выполнения задач. Ддя запуска и управления процессом выполнения модели используется правая часть средней панели инструментов (рис. 2.8).
тора halt () в поле Entering Effect очереди (см. рис. 2.6) приведет к тому, что, когда первый тэг войдет в очередь и произойдет вычисление этого эффекта, модель будет остановлена.