Научная статья на тему 'Методика иерархического исследования сложных дискретных устройств средствами визуального моделирования'

Методика иерархического исследования сложных дискретных устройств средствами визуального моделирования Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
74
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Методика иерархического исследования сложных дискретных устройств средствами визуального моделирования»

Методика иерархического исследования сложных дискретных устройств средствами визуального моделирования

И.В. Рудаков

Кафедра «Программное обеспечение ЭВМ и информационные технологии» Московский государственный технический университет им. Н.Э. Баумана E-mail:irudakov@yandex.ru, тел. 144-92-68

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

При анализе и проектировании структур сложных систем с очередями используется блочно-иерархический метод, который предусматривает расчленение процесса проектирования на ряд последовательных уровней и сведения задачи большей размерности к совокупности задач значительно меньшей размерности.

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

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

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

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

При формализации процесса функционирования структуры сложной системы как иерархической, она должна отвечать следующим требованиям:

- последовательное вертикальное расположение моделей, составляющих данную систему;

- приоритетное воздействие моделей верхнего уровня;

- зависимость функционирования моделей верхнего уровня от функционирования моделей нижнего уровня.

При описании макромодели функционального блока как иерархической системы в виде логической сети необходимо учитывать:

- множество входных и выходных воздействий, поступающих на блок в соответствии с алгоритмом функционирования -PS (P,T) и множество выходных воздействий, вызываемых блоком после реализации алгоритма - QS(P,T) с учетом вероятностного (Р) и временного характера параметров блока;

- множество связей между макромоделью функционального блока и моделями элементов VS(P,T) с учетом множества обратных связей WS(P,T);

- множество состояний макромодели функционального блока - Ф(Р,Т).

Тогда функционирование макромодели функционального блока можно

описать следующим выражением:

PS(P, T) х WS(P, T) х Ф(P, T) ^ QS(P, T)

Практическая реализация иерархического исследования сложных дискретных структур опирается на технологию объектно-ориентированного программирования (ОПП). В качестве инструментального средства анализа и верификации структуры разработан язык моделирования на базе Visual C++, ориентированный на транзакты.

Программное обеспечение иерархического проектирования структур с очередями функционирует в рамках ОС Windows98 и выше.

Для формализации процесса функционирования сложного дискретного устройства в виде логической сети в графическом виде введена следующая классификация блоков:

1. блок GENERATE - создание транзактов;

2. блок TERMINATE - уничтожение транзактов;

3. блок DEVICE - обслуживание транзактов;

4. блок QUEUE - организация очередей транзактов;

5. блок BRANCH - ветвление маршрута движения транзак

6. блок COLLECT - объединение маршрутов движения транзактов.

Сеть моделируется при использовании механизма планирования событий (событийный подход). Считается, что изменения системы происходят в некоторые дискретные моменты времени - моменты наступления событий. Изменение состояния происходит мгновенно. Состояние системы характеризуется совокупностью переменных. Начальное состояние устанавливается путем задания значений этих переменных. События, возникающие в модели, связаны с каждым блоком в отдельности. В некоторых случаях возникновение событие характеризуется интервалом временем, через которое оно должно произойти, и планируется заранее (в моменты определения интервала времени). К такому виду событий относятся события создания (блок GENERATE) и обслуживания (блок DEVICE) транзактов. В остальных случаях явно задать время возникновения событий не возможно, поэтому их наступление описывается с помощью условий (выход транзакта из блока QUEUE). Наличие условных событий приводит к тому, что помимо использования техники планирования событий необходимо использовать технику сканирования активностей. Учитывая то, что условные события связаны с состоянием системы (блок свободен/занят и т.д.), то и проверять условия срабатывания нужно только в моменты изменения состояния.

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

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

Список будущих событий представляет собой набор списков событий, каждый элемент которого связан с конкретным временем моделирования. Это время характеризует моменты времени, в которые должны произойти события, описанные в связанном списке.

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

Список условных событий - это набор пар вида: событие и условие его срабатывания. Условие характеризует моменты наступления события. Как только выполняется условие, возникает соответствующее событие.

Блок А

Маршруты движения транзактов

Список будущих событий, ориентирванный на время

Связи системных объектов

Блок В

Атрибут 1

Атрибут 2

Атрибут N

Блок С

Текущ.время

Время 1

Время 2

Время N

Событие XI

Событие ХЫ

Событие У1

Событие УЫ

Событие Z1

Событие ZN

Метод 1

Метод 2

Оператор 1

Оператор 2

Список условных событий Индекс

Параметр 1

Параметр 2

Параметр 3

Параметр 4

Параметр N

п

Ожидание (Параметр! + ПараметрЗ < 0)

Событие W1

Событие W2

Событие W3

Событие W4

Событие W5

Событие W6

Событие W7

Событие WN

Метод К

Блок D

Рис.1. Структурная организация хранения событий и механизмы управления

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

Массив параметров формируется перед началом моделирования, во время моделирования этот массив не меняется. Изменения происходят в связанных индексных списках при добавлении и выборки событий из списка условных событий. В массив параметров первым элементом добавляется индексный список событий, условия срабатывания которых не удалось разбить по зависящим параметрам. Этот список хранит ссылки на события, условия которых проверяются каждый раз.

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

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

При разработке программного комплекса был выделен ряд основных объектов, которые в дальнейшем были взяты за основу при построении структуры классов.

К основным объектам сети относятся следующие:

1. Блок - это базовое понятие, объединяющее в себе моделирующие и интерфейсные атрибуты и методы;

2. Транзакт - содержит описание заявок, поступающих в сеть ;

3. Значение - базовое понятие, используемое в качестве значений переменных, параметров выражений, результатов вычисления выражений;

4. Переменная - объект, предназначенный для хранения некого значения, для ссылки на это значение используется идентификатор переменной;

5. Выражение описывает метод вычисления определенного значения;

6. Оператор является минимальным элементом языка моделирования;

7. Исполняемый модуль содержит описание набора операторов, выполняемого при возникновении какого-либо события при моделировании сети;

8. Таблица (гистограмма) - объект хранящий информацию о заданном количестве интервалов, содержит массив, элементы которого хранят число попавших в данный интервал значений.

9. Библиотека - описание внешней библиотеки сети и методов по работе с функциями этой библиотеки;

10. Логическая сеть- описание моделируемой сети является объединением всех предыдущих понятий.

При построении программного комплекса была разработана определенная модульная структура, изображенная на рис.2, состоящая из трех частей:

- статическая библиотека ^а1иез.НЬ), которая содержит описание такого понятия, как значение, и некоторые функции для работы с ним; данная библиотека подключается ко всем динамическим, используемых для расширения возможностей языка;

- системная динамическая библиотека (SysLib.dll), которая содержит описание базовых функций для работы с значениями, к таким функциям относятся функции сравнения значений, базовые арифметические функции (сложение, вычитание, умножение, деление), функции преобразования и функции генерации случайных величин;

- основной модуль (NetMassServ.exe), который несет на себе всю функциональную нагрузку, содержит описание объектов сети МО, алгоритмов

функционирования этих объектов, поведение комплекса при редактировании и моделировании сети.

Рис.2. Модульная структура программного комплекса

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

Язык моделирования

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Типы данных

Целые числа опц

Действительные числа (Double)

Логические числ а (Bool)

Строки (String)

Вызова функции

Присваивания

Условия 00

Цикла (while)

Составной

Работы с гистограммой

Пустой

Исполняемые элементы

Операторы Выражения

Константы

Целочисленные

— Логические

—| Действительные] I Строковые I

Переменные

— Локальные

— Блоков

Сети

Вызовы функций

Параметры транзактов

Рис.3 Основные понятия языка

Ключевыми понятиями языка моделирования являются тип данных, выражения и операторы.

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

Исполняемые элементы бывают следующих типов: это выражения и операторные блоки. Операторный блок - это набор операторов, исполняемый в момент возникновения какого-либо события, и является дополнительным механизмом обработки события.

Синтаксис языка описывается по следующим правилам:

<блок операторов> ::= <объявление локальных переменных> <набор операторов>

<объявление локальных переменных> ::= <пусто> | <объявление переменной>;<объявление локальных переменных>

<объявление переменной> ::= <тип переменной> <имя переменной> <выражение> ::= <константа> | <переменная> | <параметр транзакта> | <вызов функции>

<вызов функции> ::= @<имя функции>(<параметры>) | @<имя функции>() <параметры> ::=<выражение> | <выражение>,<параметры>

<оператор вызова функции> ::= <вызов функции>

<оператор присваивания значения> ::= <ссылка на значение> = <выражение> <ссылка на значение> ::= <переменная> | <параметр транзакта> <оператор условия> ::= if (<выражение>) <оператор> <оператор цикла> ::= while (<выражение>) <оператор> <составной оператор> ::= { <набор операторов> } <набор операторов> ::= <пусто> | <оператор>;<набор операторов>; <оператор работы с гистограммой> ::= #TABLE <номер таблицы>, <выражение>

< пустой оператор > ::= <пусто>

Данный программный комплекс имеет возможность подключения внешних

динамических библиотек. Это позволяет достаточно просто расширять возможности языка.

Данная библиотека имеет определенный формат. Должны выполняться следующие требования:

1. библиотека обязательно должна содержать следующие функции:

• LONG GetFunctionsList(

char** aStrList, // Массив имен функций LONG iCount) // Максимальный размер массива Функция через параметр aStrList возвращает список имен экспортируемых

функций, iCount - максимальный размер массива aStrList. Функция возвращает

число доступных функций в библиотеке.

• CHECK_RESULT CheckFunction(

const CString& sFuncName, // Имя функции

VALUE_TYPE& vtRetType, // Тип возвращ. значения

VALUE_TYPE* vtParamsType, // Массив типов значений параметров,

передаваемых в функцию LONG iParamCount, // Число параметров

CString& sErrorStr) // Строка с ошибкой

Функция производит контроль вызовов функции sFuncName с

параметрами vtParamsType, число которых iParamCount, и возвращает в

vtRetType тип значения функции и строку с ошибкой sErrorStr, если она была.

• void DeleteBlock(void* pBlock)

Функция удаляет блок памяти pBlock, выделенный внутри библиотеки.

2. подключаемые функции должны иметь следующий прототип:

typedef LPValue (*TExecuteFunction) (const CValueArray& aParams //Массив параметров);

3. все вышеописанные функции должны быть экспортируемыми.

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

Список литературы

1. Питерсон Дж. Теория сетей Петри и моделирование систем: Пер. с англ. -М.: Мир, 1984, - 264 с.

2. Котов В.Е. Сети Петри. - М.: Наука. Главная редакция физико-математической литературы, 1984, - 160 с. ,

3. Магрупов Т.М. Графы, сети, алгоритмы и их приложения. Ташкент: Фан, 1990, - 120 с

4. Nance R.E. A history of discrete event simulation programming languages. ACM SIGPLAN Notices, Volume 28, No. 3, March 1993

5. Nance R.E. Simulation programming languages: an abridged history. Proceedings of the 1995 Winter Simulation Conference.

6. Banks J., Chair P. Simulation in the future. Proceedings of the 2000 Winter Simulation Conference.

7. Новосельцев В.Н. Математическое моделирование в век компьютеров. http://lgkb.kazan.ru/00_1_4/.

8. Chien L., Huang R. Design of an efficient frame-based modeling and simulation tool. ISBN 0-8186-6440-1, IEEE, 1994.

9. Soliman H.M. On the selection of the state saving strategy in time warp parallel simulations. Transactions, 1999, Volume 16, Number 1, pp. 32-36.

i Надоели баннеры? Вы всегда можете отключить рекламу.