Модели потоков в сетевых структурах

В предыдущем разделе мы рассматривали модель потока автомо­билей, приезжающих на автозаправочную станцию. При этом в каче­стве элемента такого потока рассматривался тэг — автомобиль (при­мер 1).

В общем случае элементом потока может являться любой объект, перемещающийся, перемещаемый или возникающий во времени и/или в пространстве.Объектом информационного потокаможет быть наклад­ная (например, на получение товара), документ, распоряжение, сооб­щение и т. п. Финансовый потокформируется последовательностью трансфертов, денежных поступлений, вложений и т. д.

Любое изменение состояния исследуемой системы (изменение значений переменных модели и/или перемещение тэга) рассматрива­ется как событие.Поэтому любой информационный поток может рас­сматриваться как поток событий.В формальное понятие события можно вложить любое смысловое содержание, например начало рабо­чей смены, возникновение аварии, приезд автомобиля на заправоч­ную станцию и т. п. В качестве элементов событийных потоков могут выступать любые объекты реального (или виртуального) мира.

Виды потоков

Наиболее простой является модель однородного потока.Элементы такого потока однотипны, они либо не отличаются один от другого, либо такие отличия несущественны для решения проблемы. Напри­мер, в примере 1 мы рассматривали поток автомобилей как однород­ный, поскольку нас не интересовали ни марка автомобиля, ни объем его бензобака, — эти свойства мы считали несущественными для по­строения нашей простой модели. Поток описывался только тремя ха­рактеристиками:

1) средним временем между приходами автомобилей;

2) среднеквадратичным отклонением;

3) законом распределения вероятностей времени между поступле­
ниями автомобилей на заправку.

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

Однородный поток, в котором интервалы времени между событи­ями распределены по экспоненциальному закону, называется про­стейшим.Такой поток имеет единственную числовую характеристи­ку _ среднее время между событиями (поле Standart Deviation при за­дании такого потока не используется).

Модели неоднородныхпотоков характеризуются наличием индиви­дуальных особенностейу тэгов — элементов потока. Например, грузо­вик и автобус — две разновидности транспортных средств, которые могут являться элементами одного транспортного потока. Моделиро­вание неоднородных потоков всегда связано с привнесением в модель




Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru 106______________________ Часть 2. Имитационное моделирование

индивидуальных особенностей тэгов. Техника такого моделирования поясняется в примере 2.

Пример 2: модель обслуживания клиентов в парикмахерской

В парикмахерскую могут приходить клиенты двух типов. Клиенты первого типа желают только стричься. Распределение интервалов их прихода 35±1О мин. Клиенты второго типа желают постричься и по­бриться. Распределение интервалов их прихода 60±20 мин. Парик­махер обслуживает клиентов в порядке «первым пришел - первым обслужен». На стрижку уходит 18+6 мин., а на бритье 10+2 мин.

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

Индивидуальные свойства тэгов

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

• 1 — клиенту нужна только стрижка;

• 2 — клиенту нужна стрижка и бритье.

Массив таких «визитных карточек» должен быть описан в списке
переменных. На рис. 2.21 приведено окно описания переменной cli-
entjype, имитирующей визитные карточки клиентов парикмахер­
ской.

Эта переменная характеризуется размерностьюи типом.Размер­ность массива определяет резервируемое количество визитных карто­чек, - в нашем случае мы выбрали 1000. Каждая из карточек являет­ся элементом массива client_type и идентифицируется индексомна­пример client__type [1]- визитная карточка первого визитера chent_type [2] - второго и т. д. В общем случае, если tag - номер тэга, то client_type[tag] - визитная карточка этого тэга. Переменная или число в квадратных скобках определяют индексэлемента массива (обычно это целое число или целочисленная переменная). Тип пере­менной client_type определен как Array of Integers- массив целых чи­сел, это означает, что каждый из элементов массива может иметь в качестве значения только целые числа (в нашем примере 1 или 2)




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

107

Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Рис. 2.21. Описание переменной clienttype

Описание модели примера 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



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Рис. 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 при этом оказывается ненужной).

Модели потоков в сетевых структурах - student2.ru

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

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

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

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

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

110

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

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

111



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Пример 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 в этом, примере используются как накопители тэгов.)



Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Рис. 2.24. Структура модели примера 4

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

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

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

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

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

112

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

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

113



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

Уточняющий операторопределяет лаконичную запись соответству­ющего оператора присваивания. Например, оператор присваивания Х:=Х+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 а; при условии, что а меньше Ь, вер­нет значение переменной Ь, а в противном случае — значение пере­менной а.

Модели потоков в сетевых структурах - student2.ru

Датчики случайных чисел

Датчики случайных чисел реализуют механизмы имитации стоха­стических факторов. Значения таких факторов характеризуются рас­пределениями вероятностей. Например, когда время между прихода­ми автомобилей на заправочную станцию задается величиной 10±3 ед. времени, подразумевается, что такое время является случайным фак­тором, значения которого равномерно распределены в интервале [7, 13] ед. времени.

Равномерное распределениевероятностей (Rectangular Distribution, Uniform Distribution) продуцируется функцией random(), которая вы­дает действительные случайные числа в диапазоне 0.0 - 1.0, и функ­цией randomlnt (min, max), которая выдает целые случайные числа в диапазоне от min до max.

Кроме равномерного распределения вероятностей в прикладных задачах широко используются также экспоненциальное распределе­ние и распределение Пуассона.

114

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

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

115



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Экспоненциальное распределение(Exponential Distribution) связано с моделированием простейших потоков. В таких потоках время между событиями распределено по экспоненциальному закону. Это распреде­ление характеризуется единственным параметром — средним значени­ем. Вызов функции ехроп(Меап) вернет в качестве результата значение случайного числа, выбранного из экспоненциального распределения со средним mean. Если в задаче задана интенсивность простейшего по­тока Int, то среднее время между событиями будет определяться как mean=l/ Int. Поэтому для имитации задержек между появлениями со­бытий следует воспользоваться вызовом функции expon(l/Int).

Распределение Пуассона(Poisson Distribution) тесно связано с экс­поненциальным распределением: оно характеризует количество собы­тий в простейшем потоке, наблюдаемое за определенный интервал времени. Если задать величину этого интервала (Т) и интенсивность потока (Int), то произведение Mean=(Int*T) будет определять среднее количество событий за интервал времени Т. Эта характеристика явля­ется единственным параметром функции poisson(Mean), которая ис­пользуется как датчик пуассоновских случайных чисел. Использова­ние функции poisson(Mean) возможно и для других задач, например для имитации количества записей в инвентаризационной ведомости, объемов производства деталей в течение рабочего дня и т. п. Функция poisson(Mean) всегда выдает случайные числа, которые являются по-ложительными и целыми.

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

Функции

Функции языка разделяются на две категории: встроенные и определяемые пользователем. Встроенные функции нам уже неодно­кратно встречались, примерами таких функций являются halt() (фун­кция, реализующая оператор остановки модели), poisson(Mean) (дат­чик случайных чисел) и т. п. Эти функции не могут быть изменены пользователем — они не доступны для изменений.

Модели потоков в сетевых структурах - student2.ru

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

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

Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Рис.2.25. Окно определения функции

В поле Name задается имя функции. Имена функций не должны совпадать с именами переменных, поэтому для именования функций целесообразно использовать заглавные буквы. В поле Purpose разме­щается краткое описание семантики функции, а в поле Expressions — алгоритмическое описание эффекта, связанного с вызовом функции. В дальнейшем вы получаете возможность использовать созданную функцию в любом текстовом фрагменте любого поля описания вашей модели. Для этого необходимо просто вставить имя функции в соот­ветствующее место описания. В нашем примере на рис. 2.25 опреде-

N

116

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

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

117



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru лена функция, имитирующая интервалы времени между прибытиями автомобилей на заправочную станцию. Поэтому для имитации потока автомобилей достаточно вставить в поле Mean Time соответствующего блока вызов функции INT.

Использование функций повышает лаконичность и наглядность описания модели.

Пример 5. Имитация случайных величин, заданных эмпирическим распределением (таблицей)

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

Интервалы времени между при­бытиями автомобилей (сек) Суммарная частота Интервалы времени между прибытиями автомобилей (сек) Суммарная частота
Меньше 0 0,81
0,25 0,9
0,48 1,0 ■
0,69    

Из данных, приведенных в таблице, следует, что в 25 % наблюде­ний интервалы времени между прибытиями автомобилей на автостан­цию оказались меньше 100 сек, в 23 % (0,48—0,25) — от 100 до 200 сек, в 21 % (0,69—0,48) — от 200 до 300 сек и т. д. Датчик случайных чисел, имитирующий интервалы времени между приходами автомо­билей, строится по простой схеме: сначала разыгрывается интервал (строка) таблицы, а затем число внутри этого интервала: {определение случайного числа R между 0 и 1} R:= random();

{определение случайного числа между 0 и 600} {определение случайного числа между 0 и 100} if R<0.25 then randomlnt(0,100) else {определение случайного числа между 100 и 200} if R<0.48 then randomlnt( 100,200) else {далее аналогично } if R<0.69 then randomlnt(200,300) else if R<0.81 then randomlnt(300,400) else if R<0.9 then randomlnt(400,500) else randomlnt(500,600);

Динамика моделирования

Запуск и выполнение модели определяют динамический процесс моделирования. Этот процесс визуально отображается в двух формах: в виде процессов прохождения тэгов через структуру модели и в виде анимационных картин.

Первая форма отображения связана с закрашиванием тех блоков модели, в которых в текущий момент времени находятся тэги, и с изображением тэгов, скапливающихся в определенных «узких» местах (в очередях или перед блоками с ограниченным доступом). Очередь, в которой находятся тэги, закрашивается так же, как и занятые блоки, а сами тэги изображаются символами. Вместо индивидуального изобра­жения тэгов на диаграмме исполняемой модели может указываться общее количество тэгов в блоке, перед блоком или в очереди. Уста­новки отображения тэгов в динамике работы модели назначаются в окне рис. 2.12 (Show Entities With). Выбор «Symbols» определяет инди­видуальное отображение тэгов символами, выбор «Numbers» — ото­бражение общего количества тэгов.

Рисунок 2.26 иллюстрирует две формы отображения одного и того же состояния, наблюдаемого в динамике выполнения модели приме-

Модели потоков в сетевых структурах - student2.ru



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

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




Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru ра 1. Отображаемое состояние характеризуется тем, что в каждом из двух блоков модели находится по одному тэгу, а в очереди стоят 12 тэгов, ожидающих освобождения бензоколонки.

Форма анимационных картин (рис. 2.12 — Action View Functions) используется главным образом для презентации моделей. Средства анимации Micro Saint рассматриваются ниже.

Отладка моделей

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

• Message Syntax ERROR Job 1 tag:=tag+l

Semicolon expected at end.(в конце ожидается точка с запятой)

• Message s:=l;

Unrecognized word(неизвестное слово)

• Message

Matherror couldn't create the dialog box(Математическая ошибка не дает создать область диалога)

Любое сообщение об ошибке начинается со слова Message. Пер­вый тип сообщения — наиболее полный. В нем содержится тип ошибки (синтаксическая), место локализации ошибки (блок 1), выра­жение, в котором зафиксирована ошибка (tag:=tag+l)и собственно вид ошибки (в конце ожидается точка с запятой). При получении та­кого сообщения ошибку исправить легче всего для этого надо от­крыть окно описания блока 1, найти нужное выражение и вставить в конец его знак «;». (Попутно заметим, что этот знак должен «закры­вать» любой оператор модели.)

Второй тип сообщения не содержит места локализации ошибки. Здесь просто приводится выражение (s:=l;) и констатируется, что си­стема не может распознать переменную s. Как правило, это связано с тем, что такую переменную забыли включить в список переменных. Устранение ошибки связано, таким образом, с включением перемен­ной (или функции) в соответствующий список.

Третий тип ошибки обычно связан с использованием переменной типа Array of Integersили Array of Reals.Ошибка заключается в том,

что размерность массива недостаточна и ее следует увеличить. Обыч­но для этого нужно в окне описания соответствующей переменной в строке «first (second, third) index numbered 0 through 10» увеличить по­следнее число: «through 1000». Такая ошибка обычно возникает при использовании в качестве индекса массива переменной tag (напри­мер, tag:=tag+l; f[tag]:=l,и fописана как Array of Integersили Array of Reals).

Все другие виды сообщений об ошибках по форме похожи на приведенные примеры.

Однако наряду с рассмотренными видами ошибок, которые могут быть обнаружены исполнительной системой, в модели могут присут­ствовать семантические ошибки, которые может распознать только человек — разработчик и пользователь модели. Например, по замыслу разработчика должно использоваться выражение tag:=tag+l;,а в мо­дель введено выражение tag:=tag—1;. Формально (синтаксически) оно правильно, но результаты, полученные на такой модели, будут неадек­ватныисследуемой системе. Такие ошибки обнаружить достаточно трудно. В этом смысле может оказаться полезным использование ис­полнительного монитора(execution monitor), окно которого открывает­ся кнопкой

В этом Модели потоков в сетевых структурах - student2.ru _)ис. 2.27) отображаются значения переменных, ко-

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

Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Рис. 2.27. Окно исполнительного монитора

Любая- модификация записи в окне исполнительного монитора реализуется двойным кликом на соответствующей строке, а добавле­ние новой записи производится уже известной нам кнопкой f-g. И в том и в другом случае открывается окно для ввода выражений, кото­рые используются исполнительным монитором (рис. 2.28).

В поле expression tobe evaluatedвводятся выражения, значения ко­торых могут характеризовать адекватность модели. Пользователь, на-

120

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

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

121



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru

Рис. 2.28. Окно ввода выражений для исполнительного монитора

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

Календарь событий

Модельное время — это системная переменная, имитирующая ход часов реального времени, в котором «живет» и развивается исследуе­мая система. Имитация хода реального времени основывается на кон­цепции событий,которые связаны с изменениями состояния модели. Такие события упорядочены по времени их возникновения в специа­льной структуре — календаре(расписании) событий.Пересчет модель­ного времени связан с выбором ближайшего по времени события из календаря и «переводом стрелок часов» модельного времени на мо­мент возникновения этого события. Такая схема предполагает, что события могут следовать одно за другим через интервалы времени разной величины, включая и ноль (одновременно происходящие со­бытия).

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

1) события, связанные с изменением текущего состояния системы
(например, выход активного тэга из очереди, вход тэга в тот или иной
блок и т. п.);

2) запланированные события, специально введенные в календарь
пользователем для управления процессом выполнения модели.



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

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

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

1 сутки= 24(час)*60 (мин/час)=1440 (мин).

Для планирования такого события кнопкой открываем окно календаря событий (рис. 2.29), затем открываем окно Модели потоков в сетевых структурах - student2.ru описания собы­тия (для этого используется уже знакомая нам общая кнопка Модели потоков в сетевых структурах - student2.ru до­бавления объектов) и в этом окне (рис. 2.30) заполняем соответствую­щие поля.

Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Рис. 2.29. Пример записи в календаре событий

В поле Perform at Timeназначается время наступления события (1440 единиц модельного времени (ЕМВ.), 1 ЕМВ.=1 мин.), в поле Expressionопределяется оператор, который должен быть выполнен в назначенное время (оператор остановки halt()).Нажатие кнопки Ac­ceptприводит к появлению в календаре событий соответствующей строки — уведомления о событии (см. рис. 2.29). Внесение в кален­дарь такого уведомления приведет к остановке модели в момент вре­мени clock=1440, т. е. ровно через сутки функционирования исследу­емой системы (бензозаправочной станции) в реальном времени.

Использование полей Repeatingи Stopсвязано с перепланирова­нием событий через определенный интервал времени (Repeat Interval) до момента окончания процесса перепланирования (Stop Time). Пе­репланирование событий используется для внесения управляющих воздействий в динамике развития модели через определенные интер-

122

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

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

123



Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru Модели потоков в сетевых структурах - student2.ru

Модели потоков в сетевых структурах - student2.ru Рис. 2.30 Окно описания события

валы времени. Например, перепланирование события «Пауза» (pause ()) приведет к периодическим остановкам в процессе компьютерного моделирования.

Единица модельного времени и ее связь с реальным временем

Модельное (или системное) время — одно из основных понятий имитационного моделирования. Модельное время всегда связано с определенной системной переменной, которая должна копировать ход часов реального времени. Работа исследуемой системы на протя­жении длительных периодов реального времени (сутки, месяцы, годы) воспроизводится в компьютерной имитационной модели за секунды или минуты с сохранением всех хронологических особенностей ис­следуемой системы (всей хронологии причинно-следственных связей, действующих в исследуемой системе). Такая хронологическая адек­ватность модели обусловлена тем, что единица модельного времени

(ЕМВ) определяет своеобразный масштаб, соотносящий размерности реального времени и машинного таймера, определяющего скорость интерпретации модели.

Выбор единицы модельного времени (ЕМВ) полностью определя­ется условиями задачи. Если все хронологические характеристики ис­следуемой системы заданы в одних и тех же временных единицах (на­пример, секундах), то определение ЕМВ тривиально: ЕМВ = 1 сек. Если же для описания отдельных компонент системы используются разные временные единицы (например, месяцы и дни), то выбор ЕМВ определяется из субъективных соображений представления о точности и адекватности модели. Выбор ЕМВ = 1 (день) приведет к более точной модели, но ее использование может потребовать боль­ших затрат машинного времени, а выбор ЕМВ = 1 (месяц) — к менее точной, но более быстродействующей модели.

Системная переменная clock, определяющая модельное время, имеет тип Real (действительное число). В этом смысле такой формат представления времени позволяет выбирать в качестве ЕМВ любую единицу реального времени с минимальной потерей точности. Тем не менее, если в задаче используются сильно отличающиеся по протя­женности временные отрезки, то целесообразно в качестве ЕМВ вы­бирать наименьший из них, соответствующий минимальной единице реального времени.

Разработка многоуровневых структурных моделей

До сих пор мы рассматривали модели только одного (нулевого, верхнего) уровня. В общем случае сетевая структура модели может быть представлена на нескольких уровнях. При этом нулевой уровень определяет основную модель, составленную из компонент, каждая из которых в свою очередь может рассматриваться как модель первого, второго и т. д. уровня. Концепция многоуровневой модели позволяет уточнять структуру составляющих ее компонент на нижних уровнях, оставляя на верхних только общие «архитектурные контуры» исследу­емой системы. Для конструирования многоуровневой модели исполь­зуются дополнительные средства панели инструментов конструирова­ния сетевой структуры (рис. 2.31). Э

Наши рекомендации