Системы имитационного моделирования. Технология имитационного моделирования (Разделы 9-10 учебного пособия "Моделирование систем"), страница 2

          Объекты дискретного моделирования. При дискретном моделировании симфор работает с объектами четырех типов: события, постоянные объекты, временные объекты, списки объектов.

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

Временный объект может быть порожден и уничтожен средствами пакета.

Структурной единицей списков является запись. Длина записи совпадает с длиной ATRIB. Запись в списках рассматривается в логическом порядке с помощью аппарата указателей, занесенных в двумерный массив NSET(2,MMTRY). где MMTRY - общее число записей в списках. Элемент NSET(1,I) хранит указатель записи, предшествующей текущей, NSET(2,I) - записи, следующей за текущей. Указатель - ссылка на первый элемент записи.

Свободные места списков упорядочены с помощью списка "свободных записей".

9.4. СЛАМ  II

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

СЛАМ характеризуется, помимо прочего, наличием специальной группы (входных) операторов. В них разработчик (пользователь)  определяет требования к модели: название, дату оформления и т. д. Признаками этой группы операторов являются служебные слова  GEN - начало, и FIN - конец. Программа процессно-ориентированной модели СЛАМ полностью представляет собой группу входных операторов. Она сопровождается сетевой блочной структурой.

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

Пример: процессно-ориентированная модель.

 Имеется линия приема и обработки заявок. Ее сетевая модель показана на рис.9.2.

Блок-схема: задержка: INT(1),Блок-схема: задержка: BET. 


Здесь запросы клиентов обрабатываются  последовательно двумя операторами. В информационной сети могут находиться одновременно не более 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 - метка блока.

Программа модели:

          GEN, PRITSKER, SERIAL WORK STATIONS, 7/14/83, 1;

          LIMITS, 2, 1, 11;

          NETWORK;

                     CREATE, EXPON(.4), , 1;

                     QUEUE(1), 0, 4, BALK(SUB);

                     ACT/1, EXPON(.25);

                     QUEUE(2), 0, 2, BLOCK;

ACT/2, EXPON(.5);

                     COLT, INT(1), TIME IN SYSTEM, 20/0/.25;

TERM;

          SUB  COLT, BET., TIME BET. BALKS;

                     TERM;

                     END;

          INIT, 0, 300;

          FIN;

После GEN: фамилия, название модели, дата, число прогонов. После  LIMITS: число файлов очередей, число атрибутов, число компонентов, которые могут одновременно находиться в модели, NETWORK - начало сетевых операторов. После CREATE: распределение интервалов прибытия TBC, время первого поступление TF (0 - так как , ,), номер атрибута для регистрации времени прибытия. После 1-го QUEUE: номер файла данной очереди, начальное количество заявок, максимально допустимое количество заявок (объем накопителя - базы данных первого оператора), отказ по метке SUB. После 1-го ACT: номер действия, закон обработки. После 2-го QUEUE (помимо данных, аналогичных для 1-го QUEUE) - возможность блокировки. После 1-го COLT - данные гистограммы. 1-й TERM - выход обработанных запросов. После SUB: определение функции блока, собираемая информация, название документа.