![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Языки имитационного моделирования
Имитационное моделирование начинается с изучения моделируемой системы и описания ее в виде логических схем и функциональных взаимосвязей. Однако в конечном счете встает задача описания модели на том языке, который понятен машине. Модель можно описать на любом универсальном алгоритмическом языке, однако применение специали-зированных языков имитационного моделирования может дать значитель-ные преимущества в смысле легкости, производительности и эффектив-ности. В общем случае специализированные языки моделирования различа-ются методами организации времени и операций: - наименованиями и структурой блоков модели; - способами проверки операций и условий взаимодействия элементов; - видами статистических испытаний, которым можно подвергнуть имеющиеся данные: легкостью изменения структуры модели. Эволюционное развитие языков имитационного моделирования, начавшееся в конце 50-х годов, означало что в моделировании использовали либо языки, ориентированные на конкретную ЭВМ, либо универсальные языки. В начале 60-х годов несколько групп ученных почти одновременно пришли к идее создания специализированных языков. В своем развитии эти языки прошли через ряд стадий: от языков типа ассемблера с некоторыми специальными свойствами к более широким проблемно-ориентированным языкам, получившим значительное распространение на коммерческом рынке пользователей, и наконец к сложным специализированным языкам имитаци-онного моделирования. Для целей имитации подходит любой алгоритми-ческий язык программирования, но языки, специально созданные для имита-ции на ЭВМ, обладают рядом особых преимуществ такими как: снижение трудоемкости написания программы: обеспечение гибкости, необходимой для изменения программы: возможность четко классифицировать элементы системы: обеспечение более строгому следованию выбранной концепции; возможность корректировать число элементов модели и т.д. Среди воз-можностей языков имитационного моделирования нужно отметить следую-щие: - способность генерировать случайные числа; - возможность генерировать случайные переменные; - возможность «продвигать» время либо на одну единицу, либо до следующего события: способность накапливать выходные данные; - способность проводить статистический анализ накапливаемых данных; - возможность выявлять и регистрировать логические несоответствия и другие ситуации, связанные с ошибками. Некоторые из языков имитационного моделирования являются язы-ками в широком смысле слова, т.е. служа пользователю средством общения с ЭВМ, облегчают формулирование задач. Имея словарь и синтаксис, они являются языками описательными. Каждый язык имитационного моделирования базируется на опреде-ленной совокупности понятий, с помощью которой исследователь описывает состав, структуру и процессы функционирования моделируемой системы. Элементы моделируемой системы отображаются в имитационной модели в виде компонентов, которые в различных языках называются по-разному: ресурсы, транзакты, средства обслуживания, склады, сущности, процессы. В зависимости от характера поведения различают пассивные и активные, временные и постоянные компоненты. Компоненты активного типа, проходя через систему, вступают во взаимодействия с компонентами пассивного типа, чье поведение сводится к реакции на воздействия. Постоянные компоненты существуют в течение всего функционирования модели, временные компоненты генерируются и уничтожаются в течение этого периода. Для обозначения характеристик компонентов используются понятия " атрибуты", " дескриптор", " параметр", " указатель". Каждой характеристике компонента в модели соответствует числовая или логическая переменная, значение которой определяет состояние компонента по данной харак-теристике. Значения всех характеристик определяют состояние отдельного компонента и состояние имитационной модели в целом. Компоненты, обладающие одинаковым набором характеристик, образуют классы компонентов, и отдельные компоненты одного и того же класса отличаются друг от друга значениями характеристик. Обычно, в разных имитационных системах возникает необходимость сгруппировать компоненты, принадлежащих к одному или разным классам, по некоторым признакам. Поэтому языки имитационного программирования обладают для этого специальными средствами, называемыми цепь, очередь, набор, файл или склад. В ходе имитации компоненты изменяют свои состояния, т.е. изменяют значения своих характеристик. Процесс функционирования моделируемой системы представляется как определенная последовательность взаимо-действий, которая реализуется при выполнении определенных условий. Как независимые, так и зависимые переменные могут изменяться либо дис-кретно, либо непрерывно. Поскольку в большинстве имитационных моделей имитируется поведение системы на некотором отрезке времени, одной из наиболее важных задач при создании модели и выборе языка програм-мирования является определение механизма регламентации событий и процессов. В имитационном моделировании понятие " регламентация" вклю-чает в себя две функции: " продвижение" по времени и обеспечение согласованности различных блоков и событий в системе. Функционирование модели должно протекать в искусственном времени, обеспечивая появление событий в надлежащем порядке и с надлежащими временными интервалами между ними. Существуют два основных метода задания времени - с помощью фиксированных и переменных интервалов времени. Их называют соответственно методами фиксированного шага и шага до следующего события. По методу фиксированного временного шага отсчет системного времени ведется через заранее определенные временные интервалы постоянной длины. При использовании метода переменного шага состояние моделируемой системы обновляется с появлением каждого существенного события независимо от интервалов времени между ними. Имитационные модели удобно классифицировать по двум основным категориям: - модели с непрерывным изменением состояния: - модели с дискретным изменением состояния; - непрерывно-дискретные. В первых используются механизмы фиксированных приращений временных интервалов; ими удобно описывать поведение систем, представляемых непрерывными потоками информации. Модели второго рода находят применение тогда, когда исследователя интересует поведение отдельных элементов в системе. В большинстве моделей с дискретным изменением состояния, используется метод отсчета времени до следующего события. Поэтому же принципу можно разделить и языки имитационного моделирования. Непрерывные языки предназначены для моделирования систем, состояние которых изменяется непрерывным образом. Язык CSMP/360 [5] является одним из первых непрерывных языков имитационного моделирования высокого уровня, создан на базе языков CSMP/1130 и PACTOLUS [5] и представляет собой пакет программ на ФОРТРАНЕ. CSMP/360 обладает возможностью гибкого внутри программного изменения параметров и диалогового режима работы с доступным к структуре самой модели. Интегрирование дифференциальных уравнений может производиться одним из семи алгоритмов различной сложности. В языке имеется возможность сортировки с помощью операторов NOSORT и SORT, имеется диагностика ошибок. Ввод и вывод осущест-вляется с помощью соответствующих операторов ФОРТРАНА. В общем случае языки моделирования включают в себя средства обработки языковых конструкций (компилятор, транслятор или интер-претирующая программа) и систему выполнения имитационного процесса во времени. Поэтому термин " язык моделирования" употребляется неверно. Более подходящим является термин " система моделирования". В настоящее время существует уже достаточно большое число разнообразных систем моделирования, однако, несмотря на это многообра-зие, можно выделить две тенденции их развития. Системы моделирования первого типа - это специализированные языки моделирования с собственным синтаксисом и семантикой. Второй тип систем моделирования - это фактически пакеты прикладных программ предназначенные для модели-рования и использующие в качестве базового некоторый алгоритмический язык. Характерным представителем второго типа систем моделирования является GASP-4, являющийся дальнейшим развитием дискретного языка GASP-2. Пакет GASP-4 (General Activity Simulation Prograin) за короткое время завоевал себе широкую популярность за рубежом, которая объясняется наличием следующих качеств: - он использует в качестве базового языка ФОРТРАН-4 и поэтому, не требует собственного компилятора: реализуем на любой ЭВМ, в состав математического обеспечения которого входит транслятор с этого языка; - предназначен для реализации дискретных, непрерывных, а также комбинированных моделей: легко изучается и просто модифицируется. Основой системы моделирования GASP-4 является концепция моделирования систем в двух измерениях: во времени и в пространстве состояний. Основными элементами языка являются компоненты моделей, их характеристики и множества. GASP-4 обеспечивает исследователя всеми основными функциями по проведению машинных экспериментов с имитационными моделями различных типов: установление начального состояния моделей: управление ходом имитационного эксперимента; продвижение имитационного времени различными способами в зависимости от типа моделей; интегрирование дифференциальных уравнений: сбор и вычисление статистических данных о наблюдаемых переменных; генерация случайных чисел с различными законами распределения: выдача данных экспериментов в виде таблиц, гистограмм и графиков. Язык GASP-4 осуществляет различные способы продвижения имитационного времени. При непрерывной имитации исполнительная программа использует пошаговую процедуру продвижения времени. Если в модели содержатся только разностные уравнения, то исполнительная программа будет вычислять значения переменных в конце каждого шага. Если в модель включены дифференциальные уравнения, тогда вычисление значений переменных происходит неоднократно в течении шага. При каждом вычислении значений проводится проверка условий возникновения событий. Когда определено, какое событие должно произойти, тогда исполнительная программа вызывает соответствующую программу события. При дискретной имитации исполнительная программа использует иную процедуру продвижения имитационного времени. Поскольку состояние системы может меняться только в моменты совершения событий, то имитационное время продвигается от момента свершения текущего события до момента свершения следующего. Эта процедура осуществляется с помощью файла (календаря) событий, в который помещаются записи (уведомления) событий, упорядоченные по времени их возникновения. В непрерывно-дискретных моделях исполнительная программа в конце каждого шага вычисляет значения переменных для определения выполнения условий, обусловливающих возникновение событий. Событие будет пропущено, если хотя бы одна переменная своим значением пересекла предписанную границу. Это означает, что шаг был велик и он уменьшается. Исполнительная программа автоматически устанавливает размер шага так, чтобы внутри его не произошло ни одного события. Это достигается подбором размера шага таким образом, чтобы он заканчивался в момент свершения события. Окончание имитации может быть определено либо посредством определения условий в терминах состояния модели, либо указанием времени окончания имитации. Данные о ходе эксперимента могут быть получены в моменты времени, определенные исследователем. Одним из наиболее известных непрерывных языков имитационного моделирования является язык ДИНАМО [5], [12]. Он предназначен для моделирования систем и процессов на высоком уровне, где отображение дискретности отдельных элементов становится ненужным. Другой областью применения языка ДИНАМО является моделирование систем, процессы функционирования которых непрерывны. Переменные модели и скорости их изменения определяют состояние имитационной модели и задаются системой разностных уравнений. В языке используется индексация переменных, соотносящая их с предшествующим, настоящим и будущим моментами имитационного времени: I - прошедший, К - настоящий, L - будущий моменты времени. Интервалы между этими точками обозначаются IК и KL. Длина интервала фиксирована и определяется исследователем посредством задания параметра DT. В процессе имитации в каждый момент К происходит вычисление значений переменных модели в конце очередного интервала KL. Результаты имитационных экспериментов выводятся в форме таблиц и графиков. Имитационные модели, запрограммированные на языке ДИНАМО, легко могут быть перепрограммированы в термины GASP-4. Непрерывный язык имитационного программирования MIMIC [5] базируется на подмножестве языка ФОРТРАН со специальными операторами описания и содержит аппарат логических меток для изменения структуры и управления выполнением программы в ходе имитации. Управление структурой модели осуществляется путем задания логических переменных, параметров и констант. Интегрирование дифференциальных уравнений производится методом Рунге - Кутта четвертого порядка. Ввод-вывод производится автоматически и с помощью специальных операторов. Для моделирования систем, изменение состояния которых происходят в дискретные моменты времени, применяются дискретные языки имитаци-онного программирования. Важной составной частью дискретных языков является механизм синхронизации событий на данном временном интервале. Существуют два основных метода синхронизации событий - поисковый метод выбора очередного события и метод планирования событий. Поисковый метод выбора события (или метод сканирования) основан на проверке в определенные моменты времени условий возникновения событий. При выполнении заранее определенных условий происходит событие, соответствующее этим условиям. На каждом шаге имитационного времени происходит проверка всех условий, и, поскольку размер шага должен быть достаточно мал, данный метод требует больших затрат машин-ного времени. Метод планирования событий состоит в определении в процессе имитации моментов совершения будущих событий. При достижении имитационным временем момента свершения запланированного события происходит передача управления к программе, соответствующей данному типу события. Имитационное время не изменяется до тех пор, пока все запланированные события с одинаковым временем свершения не будут выполнены. Можно выделить три основных подхода к рассмотрению множества компонентов имитационной модели: планирование событий, сканирование активностей и взаимодействие процессов. В подходе, ориентированном на планирование событий, в центре внимания находится событие. Языки, базирующиеся на подходе планиро-вания событий, включают в себя списки текущих событий, в которые помещаются записи, соответствующие определенным событиям. Запись представляет собой уведомление о времени совершения события. При чем все записи располагаются в порядке увеличения времени совершения событий, что обеспечивает реализацию событий в хронологическом порядке. В этом случае имитационное время продвигается от события к событию. При использовании подхода сканирования активностей основным компонентом имитационной модели является активность (совокупность взаимодействий, свершаемых над определенным объектом). Все взаимодействия, относя-щиеся к одному активному компоненту, описываются в программе актив-ности, которая состоит из контрольного и функционального блоков. В контрольном блоке определяются условия начала и окончания активностей, в функциональном блоке описываются взаимодействия между компонен-тами. В процессе функционирования модели после каждого продвижения имитационного времени исполнительная программа просматривает (сканирует) контрольные блоки всех программ активностей. Если все условия, содержащиеся в контрольном блоке, выполнены, то управление передается функциональному блоку и данная активность выполняется. Если хотя бы одно из условий нарушено, то обращения к функциональному блоку не происходит. Подход взаимодействия процессов включает некоторые элементы двух предыдущих подходов, но особенно акцентирует свое внимание на прохождении активного компонента через систему. Функционирование моделируемой системы в этом случае представляется совокупностью процессов, каждый из которых описывает жизненный цикл компонента. Каждый процесс имеет несколько активных фаз, каждая из которых является событием, и несколько точек взаимодействия с другими процессами. Для каждого процесса периоды активности чередуются с неактивными периодами, во время которых активны другие процессы. Процесс может вновь стать активным с помощью точек реактивации, которые указывают те места в программе процесса, с которых ее надо начинать после того, как истечет указанное время прерывания или удовлетворится набор определенных условий. Отдельные части программы процесса могут выполняться в различные моменты имитационного времени на разных актив-ных фазах. Язык SMPL [6] является событийно-ориентированным и вполне приго-ден для решения задач моделирования объектов с малой или средней размерностью модели. Моделирующая программа на языке SMPL состоит из инициирующей секции, управляющей секции и ряда событийных секций. Эти секции могут существовать как части программы или подпрограммы. В функции инициирующей секции входит возбуждение системы имитации во времени, определение языковых средств и очередей, а также планирование первого события. После этого управление передается в управляющую секцию. Эта секция устанавливает, какое событие следует первым, и инициирует выполнение соответствующей событийной секции. В общем случае события в языке SMPL представлены завершениями активностей. Событийная секция выполняет действия, соответствующие концу активности, определяет, какие активности могут выполняться в текущий момент, и планирует события, представленные завершениями этих активностей. После этого управление вновь передается в управляющую секцию. Во время планирования событий процессы представляются целочисленными значениями; это значение является индексом массива, элементы которого задают значения атрибутов соответствующих процессов. В языке SMPL процессы рассматриваются как транзакты, а индекс, указывающий на соответствующий набор значений атрибутов, называется номером транзакта. Упорядочение событий в языке SMPL достигается с помощью списка событий. Планирование события включает указание имени события, времени события и номера транзакта. Вся эта информация помещается в список событий, который подвергается сортировке в порядке возрастания значений времени. Выбрав очередное ближайшее событие, управляющая секция удаляет первый элемент из списка событий и передает управление событийной секции, номер которой был указан в этом элементе. Постоянными объектами языка SMPL являются средства и очереди. Набор операторов языка позволяет определять эти объекты, резервировать средства для использования определенным транзактом и освобождать их, а также включать транзакты в очереди и удалять их из очередей. Выходные данные моделирования распечатываются в форме таблиц, содержащих имена очередей и средств, время ожидания, среднее время занятости и другу информацию. Язык SIMSCRIPT основан на подходе планирования событий и включает два типа компонент: постоянные и временные. Каждому временному компоненту соответствует запись. Записи можно генерировать, стирать, помещать в различные списки и множества, используя операторы языка. Каждый тип компонента описывается определенным набором характе-ристик. Характеристики компонентов могут быть временными и постоян-ными в зависимости от того, временный или постоянный компонент они определяют. В языке SIMSCRIPT состояние моделируемой системы описывается в терминах компонентов, характеристик компонентов и целых множеств компонентов. Каждый тип компонента, характеристики и множества определяются исследователем в специальной стандартной форме. Для управления ходом имитационного эксперимента используется сообщение о событии, в котором содержится идентификатор события и момент его возникновения. Сообщение о событии включается в общий список событий. Сообщение о событии уничтожается после его выполнения, а для следующего события создается новое сообщение. Программа-календарь следит за ходом имитационного времени и вызывает различные программы событий в нужной последовательности. Когда выполнение определенной программы события заканчивается, имитационное время продвигается до следующего события. В языке SIMSCRIPT применяются события двух типов: внутрисистемные и внесистемные. Внутрисистемные события вызываются предшествующими событиями внутри модели и отображают внутренние связи компонентов. Внесистемные события определяются внешними связями и процессами, происходящими вне модели и влияющими на нее. В программу событий включаются специальные операторы для сбора статистики. Выдача данных о проведенном имитационном эксперименте осуществляется специальным генератором сообщений. Язык МОДИС [5] относится к языкам имитационного моделирования, ориентированным на планирование событий. Описание моделируемой системы на языке МОДИС включает перечисление ее компонентов, связей между ними и определение внешних воздействий на систему. В языке имеется возможность моделировать многоуровневые иерархические системы. Компоненты системы, которая рассматривается как имеющая нулевой уровень (ранг), являются подсистемами первого ранга. Они в свою очередь состоят из подсистем второго ранга и т.д. Подсистема максимального ранга содержит алгоритмы, которые образуются из блоков и предложений. Блоки и предложения складываются из операторов, описывающих изменения значений переменных модели, а также порядок и условия их изменений. Описание внешних воздействий является динамической частью модели, которая имеет вид временной диаграммы подаваемых на систему сигналов в форме упорядоченной последовательности. Язык МОДИС включает две группы операторов: вычислительные, которые непосредственно изменяют значения переменных модели, и управляющие, которые служат для управления ходом имитации. Имитационное время в модели изменяется за счет смены событий. Очередное событие определяется по списку будущих событий как событие, время наступления которого является ближайшим к текущему моменту имитационного времени. Характерной особенностью языка является то, что каждая компонента модели может существовать в своем, присущем только ей масштабе времени. Выравнивание масштабов в единый осуществляется указанием масштабного коэффициента времени для каждой компоненты. Рассмотрим систему моделирования MISS [7]: Multi-lingual Integrated System for Simulation. Система ориентирована на такое моделирование, при котором важно явное воспроизведение хода времени. Эта система не первое средство, разработанное для применений в указанной области. Хорошо известен широкий класс алгоритмических языков имитационного моделирования, имеющих такое же назначение: СИМУЛА-67, СИМСКРИПТ и GSL [7]. MISS относится к процессно-ориентированным системам и в ее модельной концепции не трудно усмотреть элементы сходства с концепцией СИМУЛА-67 и с SDL-технологией проектирования и имитации систем связи, развиваемой за рубежом уже второй десяток лет. Технологически MISS выделяется прежде всего тем, что это не языковая система, как все упомянутые выше. Других инструментальных систем имитации практически не существует. Такова, в частности, созданная в начале 80-х годов во ВИНИСИ АН СССР система МИМ (Монитор Имитационного Моделирования). Однако, ее возможности существенно беднее предлагаемых MISS. Это можно сказать и про созданную в ИПУ АН СССР систему СИМОД [7]. Набор включенных в MISS инструментальных средств в основном определился из опыта конкретного моделирования. В этом наборе можно выделить группы средств " низкого" и " высокого" уровней. К низкоуровневым относятся средства, позволяющие виртуализировать память, оперировать списковыми структурами. По сути они совершенно универсальны и служат элементной базой системы MISS. Средства высокого уровня ориентированы на потребности имитации. Высокоуровневую составляющую MISS можно разбить на блоки управления процессов, поддержки данных и графики. Первый включает развитый аппарат планирования машинного времени, а также службу передачи сигналов и определения правил чередования процессов. Второй обеспечивает автоматическое генерирование баз данных модели и удобный доступ к их содержимому, как из программ имитации, так и в режиме диалога с терминала. Графический блок MISS предоставляет редакторы и процедуры для формирования пиктограмм модельных объектов. Программы алгоритмов моделируемых процессов должны формиро-ваться в одной из допускаемых MISS языковых систем программирования: МОДУЛА-2/SDS. МОДУЛА-2/JPI. TURBO-С, TURBO-C++. Модельная концепция MISS объектно-ориентированна и исходит из представления о многокомпонентности предмета имитации. При построении в MISS модели основой структуризации данных является разделение их по принадлежности приборам, объектам и группам. Предметом имитации MISS является совокупность объектов. Концепция MISS также включает в себя понятие классов объектов, приборов и групп, а величины, чьими значениями исчерпываются различия между экземплярами одного класса, называются фазовыми переменными. По признаку постоянства состава на протяжении всего периода имитации в любом из наборов объектов могут выделяться статистические данные и динамические, состав которых с течением времени может меняться. Первые объединяются в одну запись. Что касается динамических данных, то для их представления в MISS предусмотрены средства работы с записями. Функционирование модели видится слиянием деятельностей его объектов, а деятельность объекта представляется несколькими параллельно текущими процессами. В эволюции каждого процесса выделяются последовательные стадии, именуемые элементами. Учитывая взаимно - однозначное соответствие процесс - прибор, можно сказать, что функционирование прибора есть последовательное выполнение им присущих ему элементов. Приборы во время своего функционирования могут вырабатывать сигналы, предназначенные конкретным адресатам (другим приборам или самому себе) и сопровождающиеся сообщениями, а также принимать сигналы и сообщения, посланные им. Связь адресатов с отправителями обеспечивается каналами, фиксируемыми в описаниях приборов, объектов и групп. Обычно сигналами моделируются импульсы, которые возникают в автоматической части управления исследуемого комплекса, а сообщениями - связанные с ними пересылки данных. Формально пара (сигнал, сообщение), являясь продуктом деятельности прибора, относится к его фазовым переменным. По отношению к модельному времени все элементы всех приборов делятся на три категории: сосредоточенные, условно распределенные и распределенные, (сосредоточенные) элементы в модельном времени всегда выполняются мгновенно, выполнение же любого из прочих элементов имеет большую продолжительность. Система MISS допускает квазипараллельное течение модельных процессов, которые реализуются через точки синхронизации. Это - точки оси модельного времени, к которым привязываются все выполняемые вычисления. Последние группируются в такты имитации. Это отрезки временной оси между точками синхронизации. Значения модельного времени в точках синхронизации определяется взаимодействием двух механизмов. Первый - это назначение элементов на очередной такт, а второй - планирование моментов прерывания выполнения элементов. В MISS каждый сосредоточенный элемент трактуется как один алгоритм, а условно распределенный как пара, включающая таймер и основной алгоритм, таймеры служат специальными процедурами планирования времени. При вызове таймера должен определяться очередной нужный элементу момент прерывания. Простейшая схема планирования моментов прерываний стоит на том, чтобы вызвать таймеры распределенных и условно распределенных элементов в начале каждого такта их выполнения. В MISS реализован подход, согласно которому прибор формирует свою последовательность элементов как конечный автомат, имеющий входами номер предыдущего элемента и полученные сигналы, а выходом номер следующего) элемента. т.е. когда прибор завершил выполнение очередного элемента, выбор следующего элемента определяется тем, какой именно элемент завершился и какие из совокупности всех входных сигналов прибора поступили на момент принятия решения. В пакете прикладных программ ДИСМ [5], [9] язык моделирования представляет собой совокупность универсального языка программирования PL-l и специальных процедурных средств пакета, предназначенных для реализации специфических операций имитационного моделирования. Такой синтез позволяет обусловить проблемную ориентацию языка (описание модели классов систем с дискретными событиями). Сохранив в то же время его универсальность и гибкость. При установлении специальных средств машинной имитации, предусмотренных в пакете, анализировались такие языки и системы дискретного моделирования как СИМУЛА, СИМСКРИПТ. SOL и СЛЭНГ [6], [14]. Для написания программы на этом языке функционирование моделируемой системы представляется в виде последовательности событий и между ними устанавливаются причинно-следственные связи. Управление функционированием модели осуществляется управляющей программой, которая и определяет порядок выполнения событий. Язык ДИСМ содержит календарь событий, в котором уведомления о будущих событиях упорядочены по времени и приоритетам. В ситуациях, когда на один и тот же момент времени запланировано больше одного события, первым обрабатывается событие с меньшим приоритетом, а при их равенстве - в порядке занесения в календарь. Имитационное время в ДИСМ принимает только целые значения. При использовании языка ДИСМ исследователь разрабатывает программу, состоящую из процедур событий и главный блок модели. Процедура события создается для каждого класса событий. Класс событий характеризуется набором параметров, включающих номер класса, к которому относится событие, указатель рабочего поля, приоритет события и момент наступления события. Указатель рабочего поля служит для ссылки на некоторую структуру данных, относящихся к конкретному событию. В каждом конкретном случае исследователь сам устанавливает, требуется ли связывать с отдельным событием некоторую структуру данных или эта структура может относиться к ряду событий. Главный блок модели, выполняющий запуск модели, содержит следующие разделы: нормирование модели для подготовки ее к прогону, порождение начальных событий и обращение к управляющей программе. Для управляющей программы предусмотрены два режима функционирования: рабочий и тестовый. В отличие от рабочего при тестовом режиме прогон модели сопровождается выдачей контрольных сообщений об активном событии и состоянии календаря в моменты выполнения событий. Тестовый режим предназначен для отладки модели. В языке ДИСМ имеются четыре группы процедур: процедуры для планирования событий и работы с очередями событий, процедуры генерации и преобразования случайных чисел, процедуры генерации статистической обработки результатов машинного эксперимента и процедуры для повышения качества разрабатываемых моделей и проведения их отладки. Характерной чертой ДИСМ является наличие механизма планирования эксперимента. В ходе машинного эксперимента блок статистической обработки определяет объем выборки для прекращения процесса моделирования. Выдача результатов моделирования выполняется автоматически при достижении заданной точности и доверительной вероятности для исследуемых характеристик. Моделирующий комплекс АЛСИМ-2 [8] представляет собой многоуровневую структуру, элементами которой является пакет прикладных программ и система автоматизации программирования, обеспечивающие поддержку создания программ имитационного моделирования, решение задач планирования эксперимента, сбора и обработки статистической информации, получаемой при проведении модельного эксперимента. В моделирующем комплексе плюется универсальное средство создания моделей дискретных систем - система автоматизации программирования АЛСИМ-2/3. Эта система содержит входной язык, аналогом которого является язык описания моделей системы АЛСИМ - БЭСМ. В системе есть средства, позволяющие создавать библиотеки моделей в виде рабочих программ и собирать требуемые модели, используя эти библиотеки, перед началом интерпретации модели. Основными средствами языка АЛСИМ являются следующие: - модульной организации структуры программ - программирования параллельных процессов - сбора статистики обще алгоритмические. К средствам модельной организации относятся понятия «модель» и оператор формирования модели. Описание модели определяет некоторый класс моделей. Между моделями различных классов могут существовать иерархические отношения. Средством генерации моделей является оператор формирования модели. Модельная структура определяется доступностью к данным различных моделей, существованием различных связей между ними и наличием параметрических связей. Можно выделить естественный доступ к данным внешних моделей из внутренних и специальный, обратный естественному. Динамические связи между моделями устанавливаются с помощью входов и выходов операторами связи. Параметрические связи образуются при передаче некоторых параметров формируемым моделям. Эти параметры могут в процессе моделирования влиять на формирование внутренней структуры модели, устанавливать дополнительные связи к уже имеющимся объектам другой модели. Средства программирования параллельных процессов являются традиционными для языков дискретного моделирования. Описание входа в модели определяет некоторый класс сообщений. Сообщения в программе моделирования служат для образования информационных потоков в модельном времени. Они характеризуются структурой данных и программой поведения. Исполнение сообщениями своих программ осуществляется в модельном времени параллельно. Сообщение может находиться в одном из четырех состояний: активном, ожидающем, пассивном и завершенном. Управление сообщением в модельном времени осуществляется с помощью операторов ожидания, планирования, пассивации, удаления. Указание конкретных сообщений данного класса осуществляется через ссылочные переменные и списки. В качестве средств сбора статистики используются устройства памяти, таблицы, процедуры оценки случайных величин и процедуры генерации псевдослучайных последовательностей. Общеалгоритмические средства языка включают в себя такие типы данных, как целые, вещественные, логические, кодовые и строковые переменные, а также возможность их обработки. Система допускает раздельную трансляцию отдельных частей программы. Такими частями могут быть описание моделей, входов, процедур. Ввод-вывод представлен в языке средствами последовательного потокоориентированного ввода-вывода. Типичным представителем языков имитационного программирования, ориентированных на сканирование активностей, является язык CSL [5]. В этом языке использован поисковый метод синхронизации событий. Активность в CSL описывается программой, состоящей из контрольного и функционального блоков. В процессе имитации после каждого продвижения имитационного времени исполнительная программа сканирует контрольные блоки всех программ, определяя выполнение условий их выполнения. Если все условия, содержащиеся в контрольном блоке, выполнены, то управление передается функциональному блоку. Если хотя бы одно из условий не выполнено, то обращения к функциональному блоку не происходит. Сбор, обработка и выдача статистических данных о поведении имитационной модели частично автоматизированы и позволяют исследователю получать результаты в стандартной форме. Дальнейшим развитием CSL является язык ECSL [5], в котором содержится ряд новых операторов для манипулирования множествами данных. Язык GPSS ориентирован на исследование ситом, описываемых в терминах теории массового обслуживания, и основан на подходе взаимодействия процессов. Модель на языке GPSS включает компоненты активного (транзакты) и пассивного (приборы, накопители). Прибор может взаимодействовать только с одним транзактом, и к нему могут образовываться очереди, тогда как накопитель может взаимодействовать с несколькими транзактами. Максимальное число транзактов, одновременно взаимодействующих с накопителем, определяется исследователем. С каждым транзактом связано некоторое число параметров, которые определяются исследователем для задания характеристик этого транзакта. Различные режимы функционирования моделируемой системы в модели отображаются с помощью функциональных блоков. В языке несколько десятков таких блоков, например: блоки генерации, продвижения, окончания, захвата, освобождения, переключения и т.д. В модели на языке GPSS транзакты продвигаются от одного блока к другому. Блок выполняет свои действия только тогда, когда через него проходит транзакт. Вход некоторого транзакта в блок составляет событие. Модель отображает моделируемую систему путем создания потока транзактов и управления ими по мере их продвижения по совокупности блоков. Важной чертой языка GPSS является то, что на этапе разработки модели исследователь может описывать моделируемую систему в виде блок-схемы, используя стандартные символы. Каждый блок имеет определенный символ, которому соответствует оператор языка, что облегчает и процесс разработки модели, и ее программирование. Взаимосвязи между компонентами представляются посредством явного или неявного определения элементов различных списков. Наиболее важными из них являются цепь текущих событий, цепь будущих событий и цепь задержки. Цепь текущих событий включает те транзакты, запланированное время наступления которых равно или меньше текущего имитационного времени. Цепь будущих событий включает транзакты. наступление которых планируется в будущем. Транзакты в цепи текущих событий размещены не только по времени наступления события, но и с учетом их приоритетов. Цепи задержек связаны с каждым прибором, накопителем или логическим переключателем и содержат те транзакты, обслуживание которых этим компонентом задерживается. Продвижение имитационного времени в модели организовано по методу " от события к событию". Вначале каждого шага транзакт с наименьшим временем активизации извлекается из цепи будущих событий и помещается в цепь текущих событий, далее предпринимается попытка продвинуть транзакт. Так как операторы GPSS выполняются в режиме интерпретации, то имитационные программы на этом языке работают медленнее, чем на других языках. Другим примером языков имитационного программирования, ориентированных на моделирование производственных систем в терминах теории массового обслуживания, является язык СИМДИС [5]. При использовании этого языка моделируемая система представляется в виде сети, узлами которой являются истоки и стоки требований с различными свойствами, обслуживающие устройства с известными характеристиками и устройства, управляющие потоками требований. Дуги, связывающие между собой узлы сети, имеют смысл потоков требований в системе обслуживания и указывают на схеме направление движения этих потоков. В языке СИМДИС различают два типа элементов: временно действующие и постоянно действующие процессы. Элементы временного действия отображают потоки требований - их возникновение, поступление на обслуживание, ожидание в очереди, уничтожение после обслуживания. Элементы постоянного действия связаны с выполнением функций обслуживания потоков требований. Элементы временного действия (потоки требований) реализуются в СИМДИС на базе специальных моделирующих элементов - активаторов. Активаторы используются для представления материальных сырьевых потоков, потоков заготовок или информационных процессов. При моделировании нарушений производственного процесса, например при выходе из строя технологического оборудования, связанные с этим процессы рассматриваются как требования особого вида и также представляются в модели активаторами. Элементы постоянного действия, связанные с функционированием элементов моделируемой системы, описываются с помощью набора специальных моделирующих элементов. Такие элементарные средства моделирования процессов обслуживания могут быть использованы в модели как в качестве блоков прямого назначения для моделирования событий, так и в комбинации с другими элементами для представления в модели процессов большей сложности. Подобно моделирующему элементу временного действия, моделирующие элементы постоянного действия реализуются в СИМДИС с помощью специальных структур данных: обслуживающее устройство, многоканальный узел обслуживания, склад, очередь ограниченной длины и т.д. Каждый элемент постоянного действия задается вектором признаков, компонентами которого являются идентификатор элемента и данные о текущих значениях его параметров. Язык СИМДИС обладает средствами графического вывода данных машинных экспериментов. Язык ASPOL [6], [5] относится к языкам, ориентированным на взаимо-действие процессов. Он был создан специально для моделирования вычисли-тельных систем и обладает значительными возможностями моделирования широкого класса дискретных систем. В нем предусмотрен широкий диапазон средств моделирования. Описание процессов и синхронизация их выпол-нения языковыми средствами ASPOL реализованы на основе методов, при-менявшихся в проектировании операционных систем. Поэтому язык ASPOL хорошо приспособлен для моделирования систем такого рода. Важной особенностью языка ASPOL является возможность определе-ния множеств объектов и работы с ними, что значительно упрощает модели-рование параллельных систем. Наличие в языке средств макрос - писания обеспечивает расширяемость языка. Синтаксис языка ASPOL напоминает языковые конструкции АЛГОЛА. В языке ASPOL исследуемая система представляется совокупностью взаимодействующих процессов. Модель системы конструируется из набора описаний процессов. Описание процесса в модели представлено в форме процедуры, которая может выполняться одновременно для всех сущес-твующих в системе процессов описываемого класса. В действительности это описание выполняется в квазипараллельном режиме с передачей управления в различные точки процедуры. Таким образом, в модели каждый процесс реализуется отдельным случаем выполнения определенной процедуры, называемой описанием процесса. В состав модели, написанной на языке ASPOL. входят основная программа, описание процессов и процедуры. Структура моделирования на основе этого языка основана на событиях следования или окончания активностей. Поэтому не требуется явно определять события следования, так как правильное следование операторов, находящихся в различных процедурах, обеспечивается самой системой имитации. Кроме основных конструктивных элементов языка ASPOL - процессов и событий в его основе существуют объекты, называемые средствами и памятями, которые бывают необходимы для построения моделей малого и среднего размеров. Язык ASPOL обладает рядом средств, позволяющих собирать, печатать в форме отчетного документа и чертить в виде диаграмм данные о поведении моделируемой системы. В языке предусмотрены также развитые средства отладки программ, включая контроль ошибок. До середины 70-х годов дискретные и непрерывные языки развивались независимо друг от друга. Однако в дальнейшем наметилась тенденция к интеграции дискретного и непрерывного подходов к рассмотрению моделируемых систем, в результате чего появились комбинированные языки, предназначенные для исследования непрерывно-дискретных систем. Непрерывно-дискретная система, обобщающая дискретную и непрерывную системы, представляет собой изменяющуюся во времени конечную совокуп-ность элементов, взаимодействия между которыми имеют как дискретный, так и непрерывный характеры. В отличии от дискретных систем, состояние которых может быть определено только в моменты свершения событий, в непрерывно-дискретных системах состояние может быть определено и в промежутках между событиями. Большинство комбинированных языков появилось в результате дальнейшего развития уже существующих дискретных языков. Одним из первых полностью документированных комбинированных языков является GASP-4. Язык НЕДИС [5] объединяет подход планирования событий и взаимодействия процессов и предназначен для моделирования широкого класса непрерывно-дискретных систем. Элементы моделируемой системы в НЕДИС описываются в терминах объектов из наборов их атрибутов. Каждый объект активно выполняет некоторые функции. т.е. является процессом. Процесс, имеющий конечную протяженность во времени, состоит из последовательных мгновенных событий. Также как и в GASP-4, в НЕДИС новое событие может планироваться предыдущим событием, либо указанием длительности между ними, либо условием окончания этого интервала. В интервалах между событиями значения атрибутов объектов могут изменяться в соответствии с действующей на данный момент системе дифференциальных уравнении. При написании модели на языке НЕДИС исследователь определяет классы объектов-процессов, одновременно задавая и атрибуты объектов данного класса, и алгоритм их функционирования. Управляющая программа языка осуществляет ведение календаря событий, продвижение имитацион-ного времени и назначение текущего процесса. Для решения дифференциальных уравнений в языке НЕДИС имеются два алгоритма: быстрый алгоритм Эйлера - Коши с постоянным шагом, используемый в период отладки модели, и более точный алгоритм Рунге - Кутта четвертого порядка. В отличии от GASP-4 реализация языка НЕДИС является более сложной задачей, предусматривающей разработку специального компилятора и библиотеки программ. Возможности языка НЕДИС во многом тождественны возможностям языка СИМУЛА-67, что делает его достаточно универсальным языком программирования, пригодным не только для моделирования, но и для использования в других областях нечисловой обработки информации. В связи с расширяющимся использованием на практике имитационных моделей и методов языки имитационного программирования постоянно развиваются и совершенствуются. Так, на базе языка GASP-4 разработаны его версии УСМ. GASP-4/E и GASP-5. Универсальная система моделирования для дискретной и непрерывной имитации (УСМ) [5] является программным обеспечением оптимизационно - имтационного подхода к синтезу структур сложных систем. В УСМ язык GASP-4 дополнен средствами генерации и выбора оптимальных вариантов структуры. Так как все возможности GASP-4 в УСМ сохранены, то она также используется для решения различных задач анализа функционирования сложных систем. В языке GASP-4/E по сравнению с исходной версией добавлены возможности графопостроения в режиме реального времени, ряд интеграционных алгоритмов и логических функций. Существенным преимуществом этого языка являются средства интерактивного моделирования. Язык GASP-5 является развитием GASP-4 в части непрерывного моделирования. В последнее время наметилась тенденция создания новых языков имитационного моделирования на основе уже известных языков. Это позволяет создать язык, обладающий всеми преимуществами тех языков, на базе которых он был разработан. Язык SLAM [3], [5] является примером языка, созданного на основе интеграции других языков. В основу его положены языки Q-GERT [5] и GASP-4, возможности которых сохранены и значительно расширены. Язык SLAM предоставляет исследователю возможность программировать непрерывные, дискретные и комбинированные модели, основанные на различных моделирующих подходах. Каждый из этих подходов предполагает определенную структуру понятий. Такое разнообразие подходов сохраняется потому, что каждый из них имеет свои преимущества. Например, в дискретном имитационном моделировании подход, ориентиро-ванный на взаимодействия процессов, легок в изучении, но не обладает достаточной гибкостью. В то же время подход, ориентированный на плани-рование событий более сложен, но обеспечивает гибкую систему модели-рования. В языке SLAM альтернативные подходы комбинируются. Так, дис-кретно изменяющаяся система может быть смоделирована в рамках событий-ного подхода, процессного подхода или их обоих. Непрерывно изменя-ющиеся системы при использовании языка SLAM могут описываться диф-ференциальными и разностными уравнениями. Комбинированные дискрет-но-непрерывные системы моделируются путем интеграции событийного или процессного подходов с непрерывным подходом. Кроме того, язык SLAM включает ряд черт, которые соответствуют подходу сканирования актив-ностей. Процессный подход в этом языке базируется на сетевом представ-лении моделируемой системы. Важным преимуществом языка SLAM является то, что альтернативные моделирующие подходы могут быть скомбинированы в рамках одной и той же имитационной модели. Существует шесть возможных взаимодействий между сетевым, дискретно-событийным и непрерывными подходами, которые могут быть реализованы на этом языке: - компоненты в сетевой модели могут инициироваться возникновением события; - события могут отменить поток компонентов в сетевой модели; - компоненты в сетевой модели могут вызвать мгновенные изменения значений переменных; - переменные состояния, достигая определенных значений, могут инициировать компоненты в сетевой модели; - события могут вызвать мгновенные изменения значений переменных; - переменные состояния, достигая определенных значений, могут инициировать события. Язык SLAM обладает улучшенными по сравнению с Q-GERT и GASP-4 средствами сбора и обработки статистических данных, ввода и вывода информации. Язык GGC [5] является другим примером интегрированных языков имитационного программирования и создан на основе языков GPSS и GASP-4. Он объединяет легкость изучения языка **SS с гибкостью использования комбинированного языка GASP-4. Язык GGC сохраняет возможности этих языков и позволяет создавать имитационные модели, базирующиеся на подходе планирования событий, подходе взаимодействия процессов или их комбинации. Моделирующий алгоритм языка GGC обеспечивает возможность разработки имитационных моделей на основе: только языка GPSS; только языка GASP-4 или обоих языков одновременно. Совершенствование языков имитационного моделирования идет не только по пути расширения класса моделирующих систем, но и в области разработки средств имитационного моделирования. Выполнение имитацион-ных экспериментов на ЭВМ приводит к разрыву во взаимосвязи “исследова-тель-модель”. Исследователь не имеет возможности наблюдать функциони-рование модели во время эксперимента, останавливать процесс вычисления и изменять некоторые параметры. Интерактивные языки обеспечивают исследователя средствами для: ввода и модификации параметров; выбора алгоритмов интегрирования до и между прогонами в хадже эксперимента; графического отображениями и распечатки результатов с дисплея результатов эксперимента и промежу-точных данных; хранения, восстановления и комбинирования имитационных программ.
|