АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. Але спочатку фашистські, як, власне, й більшовицькі групи в Росії та націонал-соціалістичні – у Німеччині, були малочисельними й малопомітними в політичному житті.
  2. В) Валидность – один из важнейших психометрических критериев качества теста, указывающий на степень его устойчивости к искажающему воздействию случайных факторов
  3. ДАТЧИКИ
  4. Датчики загазованности, принципы работы (НКПР, ВКПР).
  5. Датчики «Дженерал Мониторс».
  6. Двійкова система числення. Правила переведення чисел у різні системи числення.
  7. Диапазоны значений целых чисел без знака
  8. Задача 3. Скласти программу знаходження суми 10 довільних чисел введених з клавіатури.
  9. Закон больших чисел в наиболее простой форме гласит, что количественные закономерности массовых явлений отчетливо проявляются лишь в достаточно большом их числе.
  10. Закон больших чисел и предельные теоремы
  11. Законы распределения вероятностей дискретных случайных величин

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

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

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


114


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


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


115


 


Экспоненциальное распределение (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) (дат­чик случайных чисел) и т. п. Эти функции не могут быть изменены пользователем — они не доступны для изменений.

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


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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.012 сек.)