Объекты дискретного моделирования. При дискретном моделировании симфор работает с объектами четырех типов: события, постоянные объекты, временные объекты, списки объектов.
Постоянные объекты модели представлены переменными пользователя. Работа с постоянными объектами возлагается на пользователя, симфор лишь обеспечивает средства для сбора статистики о них.
Временный объект может быть порожден и уничтожен средствами пакета.
Структурной единицей списков является запись. Длина записи совпадает с длиной ATRIB. Запись в списках рассматривается в логическом порядке с помощью аппарата указателей, занесенных в двумерный массив NSET(2,MMTRY). где MMTRY - общее число записей в списках. Элемент NSET(1,I) хранит указатель записи, предшествующей текущей, NSET(2,I) - записи, следующей за текущей. Указатель - ссылка на первый элемент записи.
Свободные места списков упорядочены с помощью списка "свободных записей".
9.4. СЛАМ II
Это универсальная система для любых концептуальных моделей и способов моделирования на основе фортрана. Модели оформляются либо в виде сетевой блочной структуры, либо как совокупность системных и пользовательских процедур, написанных на фортране.
СЛАМ характеризуется, помимо прочего, наличием специальной группы (входных) операторов. В них разработчик (пользователь) определяет требования к модели: название, дату оформления и т. д. Признаками этой группы операторов являются служебные слова GEN - начало, и FIN - конец. Программа процессно-ориентированной модели СЛАМ полностью представляет собой группу входных операторов. Она сопровождается сетевой блочной структурой.
Дискретно-событийные и непрерывные (включая комбинированые непрерывно-дискретные) модели, написанные на универсальном языке FORTRAN в виде пакета процедур, включают группу входных операторов как составную часть модели.
Пример: процессно-ориентированная модель.
Имеется линия приема и обработки заявок. Ее сетевая модель показана на рис.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 - метка блока.
Программа модели:
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: определение функции блока, собираемая информация, название документа.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.