Изменение параметров транзакта



Каждый транзакт может иметь до 100 параметров (атрибутов). Значения параметрам присваиваются с помощью блока ASSIGN. В поле А этого блока указывается номер параметра и вид его изменения, в поле В определяется записываемое в параметр значение.

Приписывая к номеру параметра в поле А символ + или -, можно обеспечить не запись значения поля В в параметр, а добавление или вычитание этого значения из значения параметра. В поле В значение может быть задано как целым числом, так и СЧА. Например:

ASSIGN 1,10 занести 10 в Р1

ASSIGN 2+,V$VAR1 добавить в Р2 значение переменной VAR1

ASSIGN 3-,S$STR вычесть из Р3 значение текущего содержимого памяти

Используя блок ASSIGN, можно организовывать циклы в программе. Например, если необходимо прогнать транзакт 10 раз через блок ADVANCE, это можно осуществить следующим образом:

ASSIGN 1,10 занести 10 в Р1 транзакта

PROD ADVANCE 52

ASSIGN 1-,1 вычесть 1 из Р1

IF P1>0,PROD продолжить цикл, пока счетчик не обнулился

Статистические таблицы

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

Для того, чтобы таблицы можно было использовать в модели, они должны быть описаны.

Для описания таблицы используется блок TABLE. В поле метки этого блока задается имя таблицы, в поле А - аргумент таблицы в виде СЧА. Здесь аргументом таблицы является исследуемая случайная величина. Исключением может быть время, проводимое транзактом в очереди. Если необходимо исследовать это время, то в поле А блока TABLE указывается имя очереди, время нахождения в которой нас интересует. В поле В указывается верхняя граница первого частотного интервала, в поле С - ширина интервалов, а в поле D - их число, включающее оба полубесконечных интервала. Например, если нас интересует гистограмма времени, проводимого одним транзактом в очереди LIN, то мы можем описать таблицу следующим блоком:

TBL TABLE LIN,10,20,5

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

 

 

Если таблица описана, то транзакты могут фиксировать в ней информацию с помощью блока TABULATE.

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

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

Синхронизация транзактов

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

Блок SPLIT предназначен для моделирования одновременного начала нескольких процессов. В момент входа транзакта в блок SPLIT создается несколько копий этого транзакта. Число копий задается в поле А. Все копии переходят в блок, определенный в поле В. Исходный (порождающий) транзакт переходит к блоку, следующему за SPLIT. Если поле С блока SPLIT пустое, то все копии идентичны породившему их транзакту. Например, при входе транзакта в блок

SPLIT 4,NEXT

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

Если поле С непустое, то его значение интерпретируется как номер параметра транзакта. Пусть N - значение этого параметра в момент входа транзакта в блок SPLIT. Тогда в момент выхода из SPLIT данный параметр у исходного транзакта будет иметь значение N+1, а у копий транзактов соответственно N+2, N+3,..., N+K, где К - общее число вышедших из блока SPLIT транзактов. Например, если транзакт, имеющий нуль в десятом параметре, войдет в блок

SPLIT 2,АВСD,10,

то параметр Р10 у этого транзакта приобретет значение 1, а у копий - соответственно 2 и 3.

Транзакты-копии могут двигаться в модели независимо друг от друга. Копии могут проходить блоки SPLIT и порождать новые копии.

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

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

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

Прерывание работы устройства

Блок PREEMPT - захватить устройство. Транзакт, попадающий в блок PREEMPT, захватывает устройство, имя которого указано в поле А блока. Если при захвате устройства оно свободно, то транзакт просто занимает устройство, в этом случае блок PREEMPT работает аналогично блоку SEIZE. Если при входе транзакта в блок PREEMPT устройство занято другим транзактом, то в этом случае транзакт входит в блок PREEMPT, а устройство прерывает обслуживание занимающего его транзакта и переключается на обслуживание транзакта, вошедшего в блок PREEMPT. При этом из состояния “занято” устройство переходит в состояние “захвачено”. Когда транзакт, захватывающий устройство, освободит его, устройство возобновит прерванное обслуживание другого транзакта и перейдет в состояние “занято”.

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

Все транзакты, задержанные при обращении к устройству, упорядочиваются по приоритету. Кроме поля А, в блоке PREEMPT могут быть заданы операнды В, С, D и Е. Операнд В записывается в виде обозначения РR, задающего приоритетный режим работы блока. В этом режиме транзакт захватывает устройство, если оно свободно или обслуживает менее приоритетный транзакт. Прерывание обслуживания менее приоритетного транзакта происходит с последующим дообслуживанием. Для определения последующего движения прерванных транзактов используются другие операнды. В поле С может быть указана метка какого-либо блока, на который будет передан прерванный транзакт. При этом прерванный транзакт продолжает претендовать на данное устройство. В поле D блока может быть задан номер параметра транзакта. Тогда, если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток времени обслуживания (время дообслуживания), и полученное значение помещается в параметр, заданный в поле D. Прерванный транзакт при этом будет послан в блок, указанный в поле С. Прерванный транзакт продолжает претендовать на данное устройство. Если в поле Е блока записано обозначение RE, то прерванный транзакт больше не будет претендовать на данное устройство.

Блок RETURN - освободить устройство. Этот блок используется в паре с блоком PREEMPT. Если транзакт захватил устройство посредством блока PREEMPT, то освободить его он может только в блоке RETURN. Имя освобождаемого устройства задается в поле А блока.

Управляющие блоки

Блок SIMULATE означает начало имитации и указывает симулятору на необходимость выполнения моделирования. В этом блоке может использоваться поле А, в котором в этом случае указывается количество повторений моделирования. Например, SIMULATE 5 показывает, что модель должна быть выполнена пять раз. По умолчанию модель выполняется один раз.

Блок START воспринимается как команда симулятору начать выполнение прочитанной части модели. В этом блоке в поле А также задается начальное значение счетчика транзактов. Здесь также может быть использовано поле В в значении NP, что означает - не выводить статистику по окончании моделирования. Если задан блок START 1,NP, то подается вывод всей информации об устройствах, памятях, очередях, таблицах и ячейках. В этом случае выводится только информация о переменных, указанных в блоках PRINT. Блок PRINT выводит информацию о переменных, СЧА которых указано в поле А этого блока.

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

Например, при использовании карты START 5,,1 совместно с блоком TERMINATE 1 выдача статистики в процессе моделирования будет произведена 5 раз.

Блок RESET предназначается для стирания в заданный момент времени статистики о предыстории процесса. Достигнутое состояние объектов при этом сохраняется.

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

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

Блок CLEAR переводит всю модель - всю статистику и все объекты - в исходное состояние. Исключением является лишь датчик случайных чисел - он не возвращается к начальному значению. Применение блока CLEAR позволяет осуществить независимые реализации моделируемого случайного процесса.


Практическая часть

Создание объекта «Модель»

Пример 1. В информационно-техническое подразделение с одним каналом могут поступать неисправные средства связи (СС) двух типов. СС первого и второго монтируются одними и теми же специалистами подразделения. Интервалы времени поступления СС первого типа распределены равномерно 20±10 часов. Распределение интервалов времени поступления СС второго типа 15±8 часов. Поступающие СС ремонтируются в последовательности: первым поступило — первым обслужено. На обработку СС первого типа затрачивается 6±2 часа, второго типа — 8±4 часов.

Функционирование информационно-технического подразделения можно промоделировать посредством двух независимых сегментов или последовательностей блоков. Первая последовательность моделирует обслуживание СС первого типа, а вторая - второго типа. В качестве единицы модельного времени взята 1 мин. Время моделирования — 3 суток (72 часа).

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

О Reml —подразделение с одним каналом обслуживания;

О RemQ — общая очередь необслуженных СС,

О RemQl — очередь неисправных СС первого типа;

О RemQ2 — очередь неисправных СС второго типа;

О VrRem — имя таблицы, в которой будет табулироваться общее время нахождения неисправного СС в ремонте;

О VrReml — имя таблицы, в которой будет табулироваться время нахождения в ремонте неисправного СС первого типа;

О VrRem2 — имя таблицы, в которой будет табулироваться время нахождения в ремонте неисправного СС второго типа.


Запуск GPSS World

 

Запуск GPSS World производится двойным щелчком мыши на его значке, который после установки программы располагается на рабочем столе.

Окно Notices (Заметки) появляется самостоятельно. Оно (рис. 2) содержит текущую информацию об обновлениях и другие полезные сведения.

 

Рисунок 2 - Окно Notices (Заметки)

 

После закрытия окна Notices появляется главное окно (рис. 3) GPSS World.

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

В самойнижней части главного окна размещена строка состояния, разделенная на три части. Левая часть строки состояния показывает подсказки с информацией об используемых пунктах меню. Средняя часть строки состояния показывает сообщения об ошибках. Правая часть строки состояния имеем небольшую область, используемую для отображения модельного времени в процессе выполнения модели. Включение или выключение показа модельного времени (таймера) для каждого объекта «Процесс моделирования» производится установкой или сбросом флажкаView Simulation Сlock (Вид Модельное время).

 

Рисунок 3 - Главное окно GPSS World

 

Все объекты GPSS World имеют меню в их собственных окнах. Однако большинство действий запускается из главного окна с помощью основного меню (File, Edit, View, Windows, Help (Файл, Правка, Поиск, Вид, Окно, Справка)). Каждый пункт основного меню имеет команды подменю, большинство из которых доступны для использования только в определенных случаях. Это сделано для оказания помощи в выборе правильных действий. В недоступном (отключенном) состоянии команды меню отображаются серым цветом и не могут быть выбраны.

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

o выбор с помощью мыши последовательности пунктов меню;

o нажатие клавиши [Alt] для активизации меню с последующим нажатием подчеркнутого символа в названии каждого пункта меню;

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

Нам необходимо создать новый объект «Модель». Операторы модели написаны. Теперь нужно их ввести.

Ввод операторов модели

 

Для обработки текста GPSS World имеет текстовый редактор. Выберем File ► New (Файл ► Новый). После этого появится меню:

 

Рисунок 4 - Меню выбора объекта типа «Модель» или текстового объекта

 

Так как нужно создать объект «Модель», выберем Model. Откроется окно текстовогоредактора:

 

Рисунок 5 - Окно текстового редактора

 

Приведем программу на GPSS Примера 1.

Пример 1

Определение таблиц

VrRem1TableM1,420,180,5

VrRem2TableM1,420,180,5

VrRemTableM1,420,180,5


Дата добавления: 2018-09-23; просмотров: 325; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!