Смекни!
smekni.com

Методические указания по выполнению лабораторных работ по дисциплине «Имитационное моделирование экономических процессов» для студентов специальности (стр. 5 из 8)

Сущность метода имитационного моделирования для СМО:

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

ПРИЛОЖЕНИЕ 3.

Функциональная структура GPSS

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

- верхний уровень, определяемый комбинацией функциональных основных объектов: устройств, памятей, ключей, очередей;

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

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

1.1.Блоки

Разработчик конструирует модель из блоков, прибегая, как правило, к наглядной форме ее отображения в виде блок-схемы. Для удобства графического представления модели каждый блок GPSS имеет принятое стандартное обозначение. Построенная схема является одновременно программой на языке GPSS. Для ее ввода в ЭВМ необходимо последовательность блоков представить в виде списка операций, добавив к названиям блоков требуемые операнды.

Каждый блок GPSS имеет входы и выходы, с помощью которых осуществляется их связь в модели. Существуют два особых блока: GENERATE, имеющий только выход, и TERMINATE, имеющий только вход. Через блок GENERATE транзакты вводятся в модель. Блок TERMINATE удаляет транзакты из модели. Любую модель на языке GPSS можно представить в виде совокупности блоков:

TERMINATE

блоки модели

СВЯЗАННЫЕ СЧА:

N$j - общее число входов в блок j ;

W$j - текущее число транзактов в блоке j.

1.2.Транзакты

Функционирование объекта отображается в модели в виде перемещения транзактов от блока GENERATE в блок TERMINATE через промежуточные блоки. Транзакты, или сообщения, являются абстрактными подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п. Перемещаясь между блоками модели, транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п. С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта; номер блока, в котором в данный момент находится транзакт; номер следующего блока; время перехода в следующий блок; приоритет, характеризующий очередность обработки транзактов в определенных случаях; а также набор параметров, с помощью которых каждому транзакту можно присвоить числовые значения, выражающие желаемые свойства или характеристики моделируемых объектов: вес, скорость, объем, цвет, время обработки и т.п.

МОДЕЛИРУЮЩИЕ БЛОКИ:

Основные блоки:

GENERATE A,B,C,D,E

Вводит транзакты в модель.

А - среднее значение интервала времени (необязательный операнд);

В - разброс или модификатор среднего значения (необязательный операнд);

С - время появления первого транзакта (необязательный операнд);

D - общее число генерируемых транзактов (необязательный операнд);

Е - уровень приоритета каждого транзакта (необязательный операнд).

TERMINATE А

Удаляет активный транзакт из процесса моделирования.

А – величина уменьшения счетчика завершения (необязательный операнд).

ADVANCE А,В

Задерживает транзакт.

А - среднее время задержки;

В - разброс или модификаторсреднего значения (необязательный операнд).

Блоки, изменяющие значения параметров транзактов:

ASSIGN А,В,С

Изменяет значение параметра транзакта.

А - номер изменяемого параметра;

В - новое значение параметра;

С – номер функции (необязательный операнд).

INDEX А,В

Обновляет параметр активного транзакта.

А - номер параметра;

В – числовое значение, которое должно быть добавлено к содержимому параметра.

MARK А

Записывает в параметр активного транзакта значение абсолютного модельного времени.

А – номер параметра (необязательный операнд).

PRIORITY А,В

Устанавливает приоритет активного транзакта.

А – новое значение приоритета;

В – BU (необязательный операнд).

Блоки, управляющие движением транзактов:

GATE 0 А,В

Изменяет маршрут движения транзактов в зависимости от состояния некоторого объекта.

О - Условие в виде стандартного логического атрибута (FNV,FV, I, LS, LR, M, NI, NM, NU, SE, SF, SNE, SNF, SNV, SV,U);

А - номер проверяемого объекта;

B - номер блока перемещения транзакта в случае невыполнения условия (необязательный операнд).

LOOP А,В

Изменяет параметр и управляет местом назначения активного транзакта на основании результата.

А – параметр, содержащий число;

B – номер следующего блока, если число после уменьшения не ноль (необязательный операнд).

TEST 0 А,В,С

Сравнивает значения, обычно СЧА и управляет местом назначения активного транзакта, основываясь на результате сравнения.

О – оператор отношения (E, G, GE, L, LE, NE);

А – проверяемое значение;

B – контрольное значение;

С – номер блока назначения (необязательный операнд).

TRANSFER А,В,C,D

Обеспечивает переход активного транзакта к новому блоку.

А – режим (BOTH, ALL, PICK, FN, P, SBR,SIM) (необязательный операнд);

B - номер или метка блока (необязательный операнд);

C – номер или местоположение блока (необязательный операнд);

D –приращение номера блока для режима ALL (необязательный операнд).

Блоки, работающие с транзактами в списке пользователя:

LINK А,В,С

Управляет размещением активного транзакта в списке пользователя.

А - номер списка пользователя;

В – упорядочивание списка;

С – местоположение следующего блока (необязательный операнд).

UNLINK О А,В,С,D,E,F

Управляет удалением активного транзакта из списка пользователя.

О– оператор отношения (E, G, GE, L, LE, NE);

А – номер списка пользователя;

В – номер блока назначения для удаленных транзактов;

С – максимальное количество транзактов, которое можно удалить (необязательный операнд);

D – проверяемое значение (необязательный операнд);

E – контрольное значение (необязательный операнд);

F – номер блока (альтернативное место назначения для входящего транзакта) (необязательный операнд).

Блоки, связанные с трассировкой транзактов:

TRACE

Устанавливает индикатор трассировки активного транзакта.

UNTRACE

Сбрасывает индикатор трассировки активного транзакта.

Блоки, работающие с копиями транзактов:

ASSEMBLE А

Ожидает и уничтожает транзакты.

А – счетчик транзактов.

GATHER А

Накапливает транзакты, являющиеся членами семейства.

А - счетчик транзактов, которые должны быть накоплены.

MATCH А

Пара сопряженных блоков MATCH заставляет транзакты ожидать друг друга.

А – номер блока, который проверяется на наличие транзакта.

SPLIT А,В,С

Создает транзакты того же семейства, что и активный транзакт.

А – количество создаваемых транзактов;

В – номер блока (необязательный операнд);

С – номер параметра (необязательный операнд).

СВЯЗАННЫЕ СЧА:

A1 – указатель семейства активного транзакта;

MB$j – СЧА равен 1, если в блоке j находится транзакт, который принадлежит тому же семейству, что и активный;

MPj – разница между текущим значением абсолютного модельного времени и значением времени, записанным в параметре j;

М1 –время пребывания транзакта в системе;

Pj – значение параметра с номером j;

PR – приоритет активного транзакта;

XN1 - номер активного транзакта.

1.3. Списки

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

Существует несколько видов списков:

1) Список будущих событий

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