9.4. Слам II
Это универсальная система для любых концептуальных моделей и способов моделирования на основе фортрана. Модели оформляются либо в виде сетевой блочной структуры, либо как совокупность системных и пользовательских процедур, написанных на фортране.
СЛАМ характеризуется, помимо прочего, наличием специальной группы (входных) операторов. В них разработчик (пользователь) определяет требования к модели: название, дату оформления и т. д. Признаками этой группы операторов являются служебные слова GEN - начало, и FIN - конец. Программа процессно-ориентированной модели СЛАМ полностью представляет собой группу входных операторов. Она сопровождается сетевой блочной структурой.
Дискретно-событийные и непрерывные (включая комбинированые непрерывно-дискретные) модели, написанные на универсальном языке FORTRAN в виде пакета процедур, включают группу входных операторов как составную часть модели.
Пример: процессно-ориентированная модель.
Имеется линия приема и обработки заявок. Ее сетевая модель показана на рис.9.2.
CREATE
QUEUE
QUEUE
TBC
MA
IQ
ACTIVITY
BLOCK
TF
1
0
4
0
2
EXPON
(0.25)
EXPON
(0.5)
1
2
1
2
MC
N
N
M
QC
IFL
TERMINATE
TERMINATE
TIME IN SYSTEM
INT(1)
TIME BET. BALKS
SUB
BET.
M
M
COLT
COLT
Рис.9.2
Здесь запросы клиентов обрабатываются последовательно двумя операторами. В информационной сети могут находиться одновременно не более 8 заявок: до 4 - в базе данных первого оператора, до 2 - в базе данных второго оператора и по одной на ЭВМ у каждого оператора. Если заявка не может быть принята базой данных первого оператора из-за недостатка места, она отсылается в другой сервер, расположенный вне рассматриваемой сети. Переполнение базы данных второго оператора приводит к блокированию (прерыванию) процесса обработки первого оператора. Интервалы между поступлениями запросов в сеть распределены случайно экспоненциально с математическим ожиданием 0.4 единицы времени. Времена обработки на рабочих местах распределены также экспоненциально, причем на 1-м рабочем месте среднее время обработки равно 0.25 единиц, а на втором - 0.5. Время работы сети - 300 единиц. Необходимо определить время нахождения каждой заявки в сети и интервалы отказа в приеме заявок. Принятые СЛАМ-обозначения:
CREATE - генератор компонентов (заявок);
TF - время первого поступления (0- по умолчанмю);
TBC - интервал поступления (будет указан в программе);
MA - элемент массива ATRIB, запоминающий время поступления;
MC - предельное количество поступающих заявок (не ограничено);
M - максимальное количество выходов, по которым компоненты могут поступать дальше (, но задействован только один выход);
QUEUE - Q-узел (очередь);
IQ - начальное количество запросов;
QC - максимально допустимое количество компонентов;
IFL - номер файла очереди;
ACTIVITY - действие;
EXPON(0.25) - закон распределения времени обработки;
1 в квадрате - номер рабочего места (оператора);
N - число рабочих мест с данным типом работ;
BLOCK - символ блокировки;
COLT - блок сбора статистики;
INT(1) - системная переменная - интервал времени между моментом поступления (1 - первый атрибут) и текущим временем TNOW;
TIME IN SYSTEM, TIME BET. BALKS - название документов статистики;
TERMINATE - выход;
BET. - интервалы поступления отказных запросов;
SUB - метка блока.
MATLAB
Система MATLAB является интерактивной системой, ориентированной на работу с массивами данных. Допускает обращение к программам, написанным на языках FORTRAN, С и С++. Это одновременно и операционная среда, и язык программирования. Содержит коллекции М-файлов (расширение - m) для решения многих задач или проблем из различных областей знания. Пользователь сам может написать специализированные функции и программы в виде М-файлов для многократного использования. М-файлы являются текстовыми файлами на языке MATLAB интерпретируемого характера. Переменные, записываемые в рабочую область памяти MATLAB, могут быть сохранены в двоичном формате в MAT-файлах (расширение - mat) для последующего вызова и использования. Все функции, разработанные на внешнем по отношению к MATLAB языке, оформляются в виде MEX-файлов [6].
Визуальные средства MATLAB содержат большую библиотеку блоков, выполняющих ряд функций, которые можно переносить в рабочее поле монитора и собирать в виде замкнутой системы или совокупности субсистем с входами и выходами, служащими для обмена информацией.
Дополнительно MATLAB содержит программное средство The MATLAB Notebook, позволяющее создать посредством Microsoft Word интерактивные текстовые продукты (М-книги), непосредственно связанные с MATLAB.
Важной частью системы MATLAB являются демонстрационные модули, показывающие структуру моделей, используемые команды и работу функциональных блоков.
MATLAB содержит большое количество программных подсистем, предназначенных для обслуживания конкретных предметных областей и имеющих определенное целевое назначение.
Подсистема Simulink - интерактивная среда для имитационного моделирования и анализа широкого класса динамических систем, использующая графический язык блок-диаграмм. Предоставляет возможность моделирования непрерывных, дискретных и гибридных систем. Включает в себя библиотеку блоков (непрерывные и дискретные элементы, математические функции, нелинейные элементы, источники и приемники сигналов, дополнительные блоки), которые можно использовать для создания новых систем. Позволяет объединять блок-диаграммы в составные блоки (SubSystem), что обеспечивает иерархическое представление структуры модели. Содержит средства для создания блоков и библиотек, определяемых пользователем. Дает возможность моделировать подсистемы, имеющие изменяемую во времени структуру. Simulink-модели оформляются в виде файлов с расширением mdl.
Процесс построения модели Simulink включает в себя компоновку и задания необходимых параметров. Компоновка заключается в выборе из библиотек Simulink необходимых блоков, размещении их в поле модели и задании межблочных связей. Далее для каждого блока устанавливаются соответствующие параметры, отвечающие требованиям моделируемой системы.
Библиотечный Simulink-блок представляет собой систему типа вход-выход-состояние (иногда только вход или выход) и может быть как простым, так и составным. С точки зрения объектно-ориентированной структуры каждый блок библиотеки является классом, а блок модели - экземпляром класса. В этом экземпляре пользователь может задавать свои параметры в зависимости от требований, предъявляемых к моделируемой системе.
В пакете Simulink различают два "времени": непрерывное и дискретное. Для последнего необходимо задать величину шага приращения скалярной величиной.
Для реализации гибридного поведения модели в пакете Simulink предусмотрены специальные средства, реагирующие на особые события и вырабатывающие специальные сигналы. К этим средствам относятся блоки Enable (доступен), Trigger (скачок) и Hit Crossing (локализация момента смены знака). Первый реагирует на появление у переменной отрицательных значений и отключает блок, внутри которого он расположен, до тех пор, пока значение переменной опять не станет положительным. Второй имеет два входа и реагирует на "скачок", подаваемый на специальный вход, запоминая при этом значение переменной, подаваемой на второй ход. Третий способен найти значение времени, при котором входной сигнал принимает нулевое значение, и выдать соответствующий сигнал.
Simulink Extras - библиотека расширения Simulink, содержащая специализированные средства визуализации спектрального анализа, отображения корреляционных характеристик, преобразования числовых величин и координат, моделирования двустабильных ячеек, решения задач линеаризации.
DSP Blockset - библиотека моделирования дискретных систем, связанных с цифровой обработкой процессов, корреляционным анализом, линейным предсказанием и сжатием информации. Блоки накопителей данной библиотеки позволяют описывать накопление и хранение поступающей информации или заявок на обслуживание. Эти блоки могут быть использованы при моделировании запоминающих устройств вычислительных систем и систем массового обслуживания. Queue-блоки обеспечивают сохранение величин в регистрах, имеющих формат FIFO. Stack-блок сохраняет входные данные в регистре формата LIFO. Блок Distributor накапливает N значений и выдает их одновременно на N каналов (период выдачи данных в N раз меньше периода поступления). Statistics - блоки, непосредственно включаемые в структуру модели и позволяющие автоматизировать анализ процессов.
Пример. Предположим, что интересующая нас информация находится в Интернете на одном из двух Web-узлов - Сайт 1 и Сайт 2. Результаты поиска нужно отобразить. Все данные (результат анализа сайтов и факты сообщений) имеют бинарные значения - 1, 0. Число выборок - 4.
Составим таблицу состояний системы (табл.9.1).
Таблица 9.1. Входные и выходные данные
Наличие нужной информации |
Факт сообщения |
|
Сайт 1 |
Сайт 2 |
|
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Осуществим ручной ввод данных с помощью блоков-источников постоянных величин (Constant). Таких блоков нужно два - по числу источников информации (Сайт 1 - Siti1, Сайт 2 - Siti2). Для первой выборки необходимо в поле параметров этих блоков ввести соответственно числа 0, 0. Набор состояний пользователя Интернета легко описывается блоком Combinatorial Logic. В поле параметров этого блока укажем по два входных набора и один выходной (всего четыре тройки чисел): [0 0 1;0 1 1;1 0 1;1 1 1], отобразив таким образом результаты поиска и факт сообщения. В качестве приемника сообщений выберем блок цифровых дисплеев - два дисплея для отображения входных данных, один - для вывода факта сообщения. Так как такой совокупности дисплеев нет в библиотеке Simulink, необходимо перенести библиотечный блок Display в модель, заказать его характеристики и увеличить блок по высоте. В этом случае при первом запуске модели на выполнение в поле блока Display автоматически появятся все три дисплея (так как выход блока Combinatorial Logic - вектор). Поскольку информация от двух источников передается через одного пользователя, потребуется также блок мультиплексора - Mux (рис.9.3).
0
0
0
Сайт 1
Constant
. . .
. . .
Сайт 1
0
1
Факт сообщения
Combinatorial Logic
Mux
Constant 1
Display
Рис.9.3
Вводя любые входные наборы, можно последовательно исследовать реакцию модели для четырех выборок.
Для визуального упрощения сложных Simulink-моделей, кроме SubSystem, в определенных случаях целесообразно использовать маскированные подсистемы (Mask Subsystem), куда помещают часть всей модели и которые нельзя увидеть на блок-диаграмме. Это обычные блоки SubSystem, которые введены в Simulink-модели из библиотеки и обработаны редактором маски (Mask Editor). Для запуска последнего необходимо в меню Edit окна блок-диаграммы Simulink выбрать команду Mask Subsystem.