Язык имитационного моделирования дискретных систем ВИСМО 2: математическая модель, алгоритмы управления, структура языка
А.Б. Корякин
г. Москва, Московский государственный технический университет им. Н.Э. Баумана
Имитационное моделирование является одним из методов экспериментального исследования реальных или проектируемых систем. Имитационные модели позволяют просто учитывать такие факторы, как наличие дискретных и непрерывных элементов, нелинейные характеристики элементов системы, многочисленные случайные воздействия и другое. Имитационное моделирование - один из методов получения информации о поведении системы, особенно на этапе ее проектирования.
В настоящее время известно большое количество различных программных комплексов для имитации дискретных систем. Процесс разработки модели можно разбить на два этапа: построение блочной модели, детальное описание алгоритмов поведения модели. Блочная модель - это совокупность графических блоков и связей между ними (визуальное представление модели). Описание алгоритмов производится с использованием дополнительного языка. Таким образом, происходит разделение между визуальным и текстовым представлением модели, аналогичным соответствующим методикам программирования: визуальным и классическим - текстовым. В большинстве систем имитационного моделирования описания модели осуществляется только в текстовом виде с помощью специального языка моделирования, что еще на ранних стадиях моделирования заставляет пользователя задумываться о ненужных деталях модели.
При построении модели объекта необходимо учитывать его сложность, и отсюда возникает вопрос декомпозиции системы на более мелкие подсистемы и использования библиотечных модулей с уже отлаженными простыми моделями. Большинство языков имитационного моделирования не имеют таких возможностей, что существенно усложняет построение модели, и заставляют
рассматривать сложную систему, как нечто целое, неделимое, не позволяя взглянуть на нее как на объект, состоящий из простых частей.
В рассматриваемой системе имитационного моделирования сделана попытка, решить эти и другие проблемы, возникающие перед экспериментатором при программировании модели сложной системы.
Математическая модель сложной дискретной системы строится на базовых понятиях теории массового обслуживания и некоторых дополнительных понятиях.
Основным понятием рассматриваемой сложной дискретной системы является понятие блока. Блок представляется в виде пятерки: множество атрибутов (параметров) блока, характеризующих его свойства; множество выходных связей, которые соединяют соседние блоки и являются маршрутами движения выходящих из блоков транзактов; множество событий, обрабатываемых блоком; множество обработчиков событий, элементами данного множества являются функции преобразования и обслуживания транзактов; отношение соответствия между элементами двух последних множеств.
Любое изменение состояния моделируемой системы связано с возникновением событий в системе, и дальнейшей обработки с помощью специальных функций. События делятся на три категории: события инициализации; события, привязанные к определенному времени срабатывания; условные события.
Управляющие алгоритмы рассматривают систему с точки зрения возникающих в системе событий, что говорит об использовании событийного подхода. При этом наличие условных событий, т.е. активных элементов, характеризуют систему моделирования, как ориентированную на сканирование активностей. Алгоритмы проверки условий срабатывания событий оптимизируются путем использования специальных индексных структур и массивов.
Описание модели производится в текстовом виде с помощью объектно-ориентированного языка. Он позволяет описывать модель, как в текстовом виде, так и в графическом, с помощью визуального представления сети массового обслуживания (см. рис. 1). Синхронизация представлений осуществляется автоматически.
Визуальное (графическое) представление
Текстовое представление
Gen">-
Que
<^Term
Dev
net DemoNet;
block CGenerateBlock Gen; block CQueueBlock Que; block CDeviceBlock Dev; block CTerminateBlock Term;
link (Gen, 0, Que); link (Que, 0, Dev); link (Dev, 0, Term);
Рис. 1. Двойное представление модели сложной дискретной системы на языке ВИСМО 2
Язык позволяет организовать модульную структуру модели. Каждый из модулей может содержать описание произвольных элементов модели. Организация модульной структуры позволяет группировать часть элементов по какому-либо принципу и так же организовать реализацию библиотечных модулей, в которых будут описываться стандартные функции, классы и другие элементы, которые могут использоваться не только в текущем проекте, но и в дальнейших исследованиях.