Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Функции





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

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


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

Рис.2.25. Окно определения функции

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


N


116


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


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


117


 


лена функция, имитирующая интервалы времени между прибытиями автомобилей на заправочную станцию. Поэтому для имитации потока автомобилей достаточно вставить в поле 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 иллюстрирует две формы отображения одного и того же состояния, наблюдаемого в динамике выполнения модели приме-



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


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



 


ра 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), окно которого открывает­ся кнопкой


В этом _)ис. 2.27) отображаются значения переменных, ко-

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

Рис. 2.27. Окно исполнительного монитора

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

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


120


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


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


121


 


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

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

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

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

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

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

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


 


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


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

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

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

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

Рис. 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


 


Рис. 2.30 Окно описания события

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

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

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


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

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

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

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

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

• создание подуровня сетевой структуры;

• средства навигации (перемещения) по иерархической структуре
модели;

• дополнительные средства вставки/вырезки структурных объ­
ектов.


124








Date: 2015-07-23; view: 354; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.02 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию