Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






ОПИСАНИЕ МОДЕЛЕЙ С ПОМОЩЬЮ ЯЗЫКА GPSS

В дополнение к различным картам блоков и картам-описаниям для задания дополнительной информации симулятору GPSS требуются определенные управляющие карты (см. Приложение 5).

Карта SIMULATE. Если нужно провести счет по составленной модели системы, то должна быть карта SIMULATE. Допускается две формы заполнения этой карты: SIMULATE и SIMULATE m, где m — число минут машинного времени, по истечении которого моделирование будет прекращено. Например, оператор SIMULATE 5 определяет длительность счета модели, равную 5 мин. По истечении этого времени моделирование прекращается и на печать выдается накопленная к этому моменту статистическая информация. Если карты SIMULATE нет, то работа (JOB) будет закончена после окончания ассемблирования.

Карта START. Эта карта показывает симулятору GPSS, что все входные данные уже получены и можно начинать счет. Поле А определяет число транзактов, которые должны пройти через систему до выдачи окончательной статистики, называемой счетчиком числа завершений и обозначаемой TG1. Счет заканчивается в тот момент, когда TG1<0. Значение TG1 уменьшается на величину, заданную в поле А блока TERMINATE, при каждом входе сообщения в этот блок. Если требуется закончить моделирование после прохождения через модель 1000 транзактов, выводимых с помощью карты TERMINATE с единицей в поле А, то в поле А карты START записывается число 1000. Например:

START 1000

Поле В карты START может быть использовано для блокирования выдачи статистики в конце счета. Для этого нужно записать в поле В мнемоническое обозначение NP. При наличии такой записи в поле В сбор статистической информации в процессе счета не прекращается, блокируется только печать собранной информации по окончании счета. Если поле В пусто, печать происходит как обычно. Эта возможность часто полезна в том случае, когда модель запускается, но пользователь не хочет собирать статистику о начальном периоде счета. В этом случае за первой картой START следует вторая с несколько большим значением счетчика завершения для обычного счета с выдачей информации. Например, если требуется выдавать результаты моделирования через 400 и 600 единиц времени, то можно использовать следующий программный сегмент:

GENERATE 200

TERMINATE 1

START 1,NP

START 2„1

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

GENERATE 200

TERMINATE 1

START 3,,1

Поле D может содержать указание на то, что при выдаче информации (как в конце выдачи промежуточных результатов, так и в конце счета) нужно распечатывать списки текущих событий, будущих событий, список прерываний, а также списки пользователя. Значение «1» в поле D указывает на то, что пользователю нужна печать списков. В противном случае поле оставляют незаполненным.

Пример 1. Построить программу модели процесса прохождения 500 деталей, поступающих в промежутке времени 11 ± 5 единиц, распределенном по равномерному закону. Детали обрабатываются одним рабочим в течение 10 ± 7 единиц времени» распределенного по равномерному закону. После прохождения 300 деталей требуется выдавать статистику с интервалом в 25 деталей. Программа имеет вид (здесь и в других примерах моделирования справа дается комментарий):

SIMULATE Начать имитацию

GENERATE 11,5 Поступление деталей

SEIZE 1 Запуск

ADVANCE 10,7 Обработка

RELEASE 1 Выпуск

TERMINATE 1

START 275, NP Прогон без статистики

START 225„25 Интервальные статистики

END

Пользователю может понадобиться провести серию просчетов, т. е. несколько просчетов один за другим. Для облегчения задания такого режима введены три типа управляющих карт, в различной степени возвращающих модель к исходному состоянию: карта RESET, стирающая всю накопленную статистику, карта CLEAR, которая стирает всю статистику и все транзакты, и карта JOB, стирающая всю статистику, все транзакты и все блоки.

Карта RESET. Результатом действия этой карты является то, что стирается вся статистическая информация, накопленная в процессе моделирования. Счетчики числа входов в блоки сбрасываются до «0», но содержимое счетчиков ожидания не изменяется. Коэффициенты использования устройств сбрасываются до «0», счетчики числа входов в устройство устанавливаются в соответствии с текущим состоянием устройства. Счетчик равен «0», если устройство свободно, «1» — если оно занято или обслуживание сообщения прервано, и «2» — если устройство занято и обслуживает прерывание. Коэффициенты использования памятей также сбрасываются до «0», а счетчики числа входов в память устанавливаются в соответствии с текущим содержимым каждой памяти. Коэффициенты использования очередей сбрасываются до «0», и счетчики числа входов устанавливаются равными текущей длине соответствующих очередей. Счетчики всех нулевых задержек сбрасываются до «0», а максимальные значения длины очереди устанавливаются равными текущей длине очереди. Все счетчики числа наблюдений интервалов таблиц, все средние значения и т. д. также сбрасываются до «0». Содержимое ячеек SAVEVALUE и состояние логических переключателей не изменяются. Датчик случайных чисел не возвращается к исходному числу.

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

Пример 2. Построить программу модели процесса прохождения деталей, посту­пающих через интервалы времени, распределенные равномерно в промежутке 7...11 единиц. Детали направляются к одному рабочему, обрабатывающему их со временем 8 ± 3 единицы, распределенным по равномерному закону. Прохождение деталей мо­делируется по трем интервалам, каждый на 480 единиц времени. После каждого интер­вала выдается вся статистика, затем вся информация стирается, кроме содержимого устройства и информации о нем. Для этого примера программа имеет вид:

SIMULATE Начать моделирование

GENERATE 9,2 Генерация деталей

SEIZE OBR Запуск на обработку

ADVANCE 8.3 Обработка

RELEASE OBR Окончание обработки

TERMINATE

GENERATE 480,,480

TERMINATE 1

START 1 Прогон 1

RESET Fl

START 1 Прогон 2

RESET Fl

START 1 Прогон 3

Карта CLEAR. В результате действия этой карты стирается вся накопленная в процессе моделирования статистика и из системы удаляются все транзакты. Счетчики числа входов и счетчики ожидания всех блоков сбрасываются до «0». Коэффициенты использования всех устройств и счетчики числа входов сбрасываются до «0» и все устройства переводятся в состояние «не занято». Коэффициенты использования памятей, счетчики числа входов и текущее содержимое сбрасывается до «0» для всех памятей.

Коэффициент использования очередей, счетчики числа входов, счетчики числа нулевых задержек, текущая и максимальная длина очереди сбрасываются до «0». Стирается вся информация в таблицах и ячейках SAVEVALUE. Все логические переключатели устанавливаются в «0», из системы удаляются все транзакты, а абсолютное и относительное время устанавливается в «0». Затем запускаются все блоки GENERATE. Начальные интервалы задержки, заданные в поле С блоков GENERATE, отсчитываются после завершения операций карты CLEAR. Счетчикам пределов, заданным в поле D, присваиваются их исходные значения. Работа этих счетчиков также начинается после выполнения операций карты CLEAR. Операции этой карты производятся в момент ее появления, причем действие карты CLEAR на следующие за ней карты входной колоды не распространяется. Перед первой картой START модели карта CLEAR не нужна. Датчик случайных чисел не возвращается к исходному числу.

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

Пример 3. Построить программу модели процесса прохождения деталей, посту­пающих со временем, распределенным равномерно в интервале 12... 24 единицы. Де­тали обрабатываются одним рабочим со временем 16 ± 3 единицы, распределенным по равномерному закону. Прохождение деталей моделируется по четырем интервалам на 480 единиц времени каждый. Подсчитывается количество деталей, изготовленных в каждом интервале времени, и нарастающая сумма изготовленных деталей по всем интервалам. После каждого интервала требуется вывод статистической информации о модели. Моделирование в интервалах независимо друг от друга. Для приведенного примера программа имеет вид:

SIMULATE Начало моделирования

GENERATE 18,6 Поступление деталей

SEIZE 1 Запуск деталей

ADVANCE 16,3 Обработка

RELEASE 1 Выпуск деталей

SAVEVALUE 1+,1,ХН Интервальная сумма

SAVEVALUE 11+,1,ХН Общая сумма

TERMINATE

GENERATE 480

TERMINATE 1

START 1 Интервал 1

CLEAR ХН11

START 1 Интервал 2

CLEAR ХН11

START 1 Интервал 3

CLEAR ХН11

START 1 Интервал 4

Карта JOB. Эта карта должна помещаться между последова­тельными рабочими вычислениями, являющимися частями одной работы. Она выполняет все функции карты CLEAR, а также стирает все описания блоков, функций, переменных, таблиц и памятей. Перед первой работой карта JOB не нужна. Карта JOB возвращает датчик случайных чисел к исходному числу.

Пример 4. Построить. программу модели процесса прохождения деталей, поступающих на склад, затем со склада на обработку к одному рабочему со временем 20 ± 12 единиц,, распределенным по закону равномерной плотности. Время обработки 19 ± 15 единиц распределено по равномерному закону. Определить коэффициенты занятости рабочего для двух моделей: первая — без отграничения мест на складе, вторая — с ограничением (два места). Во второй модели подсчитывается количество отказов. Промоделировать прохождение 100 деталей в каждой модели. В этом случае программа имеет вид:

SIMULATE Начало первой модели

SKL STORAGE

GENERATE 20,12

ENTER SKL

SEIZE ОВR

LEAVE SKL

ADVANCE 19,15

RELEASE OBR

TERMINATE 1

START 100 Запуск первой модели

JOB Начало второй модели

SKL STORAGE 2

GENERATE 20,12

GATE SNF SKL,FINAL

ENTER SKL

SEIZE OBR

LEAVE SKL

ADVANCE 19,5

TOLEASE OBR

TERMINATE 1

FINAL SAVEVALUE 2+,1,XH

TERMINATE 1

START 100 Запуск второй модели

END

Карта END. Эта карта указывает на конец входной колоды, в которой может содержаться несколько работ. Во входной колоде должна быть только одна карта END. Когда симулятор GPSS доходит до этой карты, он автоматически передает управление супервизору системы.

 

В языке GPSS разным объектам можно давать одно и то же имя. Например:

QUEUE СНАN

SEIZE СНАN

Возможности языка расширяет косвенная адресация и косвенное описание, в которых используются индексы, применяемые в качестве номера п аргумента блока и в качестве индекса п СЧА, указываемого в некоторой из карт описания. Например: Q10— текущее содержимое очереди 10; S9— текущее содержимое памяти 9; FN2— значение функции 2.

Для записи индекса надо использовать знак «*» и число после него. Индекс определяется значением параметра Рn транзакта, номер которого записан после *. Например:

SEIZE *6

(т. е. занять устройство, индексный номер которого записан в параметре 6);

Q *3

(т. е. текущее содержимое очереди, индексный номер которой записан в параметре 3).

Косвенная адресация и косвенное описание могут быть использованы совместно и порознь практически для любых аргументов различных типов блоков. Не могут быть описаны косвенно следующие аргументы: модификатор блока ADVANCE; номер параметра; приращение блока INDEX; мнемонические обозначения нижнего и верхнего предела блока PRINT; режим работы (допустимы только стандартные мнемонические обозначения); а также следующие блоки полей В и С в режиме ALL блока TRANSFER; начальный интервал задержки; счетчик числа генерируемых данным блоком транзактов; приоритет; модификатор блока GENERATE.

ОПИСАНИЕ ОБЪЕКТОВ GPSS

Для описания некоторых характеристик отдельных объектов GPSS (например, емкости памяти, переменных операторов, параметров таблиц) используются карты описания объектов. Формат этих карт подобен формату карт описания блоков.

Язык GPSS оперирует с тремя типами объектов аппаратной категории: устройствами, памятями и логическими ключами.

Устройства. Эти объекты аппаратной категории GPSS применяются для описания таких элементов, которые могут использоваться только одним транзактом в данный момент времени. Каждое устройство предполагает использование четырех СЧА (см. Приложение 3).

Кроме того, каждое устройство имеет шесть стандартных логических атрибутов (СЛА): Un[5] — истина, если устройство используется, т. е. занимается посредством блока SEIZE или посредством блока PREEMPT; NUn — истина, если устройство не используется ни блоком SEIZE, ни PREEMPT; In[6] — истина, если устройство занимается с помощью блока PREEMPT; NIn—истина, если устройство не занимается блоком PREEMPT; FVn — истина, если устройство доступно; FNVn —, истина, если устройство недоступно.

Памяти[7]. Эти объекты GPSS описывают такие устройства, которые обслуживают одновременно несколько транзактов. Посредством этого объекта можно представить, например, очередь людей у кассы; рейд, где корабли ожидают освобождения места для разгрузки в порту, и т. д. Каждой памяти присущи семь СЧА (см. Приложение 3).

Емкость каждой памяти определяется в начале процесса испытаний модели с помощью карты STORAGE. Используются два формата — для определения одной или нескольких памятей, Например:

1 STORAGE 237

(в «поле метки» записывается номер памяти, а в «поле операндов» — объем этой памяти).

STORAGE S1,100/S2,200

(«поле метки» пустое, а в «поле операндов» описываются памяти и их емкости). Емкости описываются по следующим правилам: 1) номер памяти обозначается через СЧА Sn; 2) номер памяти отделяется от значения ее емкости запятой; 3) несколько памятей одной и той же емкости могут определяться одним значением, их номера разделяются знаком «—»; SI—S10, 100; 4) отдельные значения емкости разделяются знаком «/».

Каждый объект типа «память» использует шесть СЛА: SEn — истина, если память пуста, т. е. Sn = 0, Rn = вся емкость; SNEn — истина, если Sn > 0, Rn < вся емкость; SFn — истина, если Sn = вся емкость, Rn = 0; SNFn — истина, если Sn < вся емкость, Rn > 0; SV — истина, если память доступна; SNV — истина, если память недоступна.

Ключи. Эти объекты используются для описания двоичных состояний логического или физического характера. В процессе работы модели один транзакт может установить ключ в определенное положение, другой может изменить его состояние, а третий — использовать это состояние при принятии определенных решений. С этим объектом связаны два СЛА: LRi[8] — истина, если ключ i выключен, и ложь, если он включен; LSi[9] — истина, если ключ i включен, и ложь, если он выключен.

 

В вычислительной категории используются объекты трех типов: арифметические переменные, булевские переменные и функции. При построении модели некоторой системы S необходимо выразить арифметические и логические соотношения между атрибутами. Для этого используются арифметические и булевские переменные, которые представляют стандартными числовыми атрибутами V и BV.

Арифметические переменные (определяются перед началом моделирования).

Целые арифметическиепеременные описываются картой

Метка Операция A

j VARIABLE выражение

j - имя переменной, используемое для ссылок на неё, обозначается индексом номера или символом. Выражение - арифметическое выражение, включающее в себя различные стандартные числовые атрибуты, а также другие переменные. Результат каждой промежуточной операции в целых переменных преобразуется к целому типу путём отбрасывания дробной части. Для обозначения алгоритмических операторов используются пять символов: «+» — алгебраическое суммирование; «—» — алгебраическое вычитание; «*»[10] — алгебраическое умножение; «/» — алгебраическое деление; @ — деление по модулю. Все указанные действия в выражении осуществляются по тем же правилам и в том же порядке, как, например, в языке ПАСКАЛЬ. Деление на 0 не считается ошибкой (результат при этом равен 0). В выражении не допускаются пробелы (первый пробел означает конец выражения), нет ограничений на количество чисел, но последнее число должно кончаться в колонке 71. Если выражение не помещается на одной карте, то используют несколько карт с дополнительным определением вспомогательных переменных.

Например:

10 VARIABLE Q9+3—P7*FN3

где переменная 10, которая обозначается V10, вычисляется добавлением к длине очереди 9 (Q9) константы 3 и вычитанием результата произведения параметра 7 (Р7) текущего транзакта на функцию 3 (FN3).

Действительные переменные:

j FVARIABLE выражение

Действие аналогично VARIABLE, за исключением того, что отдельные элементы и промежуточные результаты не округляются, округляется конечный результат выражения.

Например:

1 FVARIABLE 10(11/3)

1 VARIABLE 10(11/3)

где первая переменная с плавающей запятой равняется 36, т. е. произведение 3,67 • 10 = 36,7 ограничивается до 36, а вторая переменная равна 30, т. е. 3,67 ограничивается до 3 и умножается на 10.

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

· Логические операторы используются для определения состояния объектов аппаратной категории и рассматриваются при описании стандартных логических атрибутов «устройств» и «памятей». Например:

3 ВVARIABLE FNI2

4 BVARIABLE SF2

где булевская переменная 3 (BV3) равна 1, если устройство 2 не занимается блоком PREEMPT, а булевская переменная 4 равна 1, если память 3 заполнена.

· Условные операторы сравнивают алгебраические операнды, которые могут быть константами либо СЧА: G — больше; L — меньше; Е—равно; NE—не равно; LE—меньше либо равно; GE—больше либо равно. Например:

11 BVARIABLE V2'G'5

(здесь ВVII равна 1, если V2>5).

· Булевские операторы обозначают следующее: «+»—ИЛИ; «*» — И. Например:

7 BVARIABLE (V2'G'7)*(FNI2+LR7)

(т. е. BV7 равна 1, если V2>7 при условии, что устройство 2 не занято блоком PREEMPT или логический переключатель LR7 включен).

Функции. Как и переменные, функции не связаны с определенными блоками. Существует пять типов функций:[11] 1) непрерывные числовые значения Сn; 2) дискретные числовые значения Dn; 3) перечень числовых значений Ln; 4) дискретные значения атрибутов Еn; 5) перечень значений атрибутов Мn. Первые два типа функции, являются основными. На рис. 5 показана непрерывная функция.

 
 

Каждая функция определяется посредством карты, имеющей вид

Метка Операция A B

j FUNCTION Arg Cn

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

Каждая карта FUNCTION сопровождается картами, содержащими значения отдельных точек функции (пары Xi и Yi). Каждая из этих карт может содержать шесть пар Xi и Yi), расположенных на 12 шестисимвольных полях. Например, функцию, показанную на рис. 5, можно представить следующим образом:

Метка Операция

1 FUNCTION RN1,C5

X1,Y1/X2,Y2/X3,Y3/X4,Y4/X5,Y5

Значения Xi и Yi могут быть нецелыми числами. Значения Х должны удовлетворять условию Xi < Xi+1.

Пользователь может представить координаты функции в свободном формате, а не по шесть на каждой карте. Для этого нужно, чтобы: 1) первое число начиналось с колонки 1; 2) последнее число кончалось до или в 71-й колонке; 3) координаты Xi и Yi отделялись друг от друга запятой; 4) пары координат отделялись друг от друга знаком «/».

Например, если необходимо, чтобы случайная величина получала значения 1, 4, 5 с относительной частотой 0,40; 0,10; 0,50, то дискретная функция может иметь вид

15 FUNCTION RN8,D3

0.4,1/.5,4/1,5

Графическое представление данной функции приведено на рис. 6

У функции аргументом может необязательно RNj. Например, аргументом может быть любой СЧА. При использовании аргументов, отличных от RNj, существуют ограничения:

1. Значениями аргумента должны быть только целые числа;

2. Когда значение аргумента выходит за пределы, указанные в описании функции, то значение последней берется равным ближайшим описанным значениям.

Генерация случайных чисел в GPSS имеет следующие особенности. Все случайные равномерно распределенные числа, используемые в GPSS, получаются в результате расчета, который исходит из набора восьми основных чисел, называемых исходными. Пользователь может задать любое из этих чисел (RN1, ...,RN8). В случаях, когда обращение к датчику случайных чисел подразумевается, используется RNj. Начальные значения и, следовательно, последовательности псевдослучайных чисел, получаемые во всех системных датчиках (RN1, .,.,RN8), одинаковы. Для получения различных последовательностей необходимо изменять их начальное значение.

Моделирование пуассоновских потоков в GPSS. Наступление событий часто подчиняется следующим условиям:

1. Вероятность того, что наступление события возникает на некотором интервале, пропорционально длине этого интервала.

2. Вероятность того, что возникнут два и более событий в течение малого промежутка времени, пренебрежимо мала (ординарный процесс).

3. Все интервалы наступления независимы друг от друга (процесс с ограниченным последействием)

Для указанных условий выведена зависимость (закон Пауссона), характеризующая скорость наступления событий

k = 0, 1, 2, ...

где Pk(T) – вероятность того, что ровно k событий произойдет за время T; l - средняя интенсивность наступления событий. Когда интенсивность наступления распределена по закону Пауссона, соответствующие значения интервалов времени наступления распределены по экспоненциальному закону: ИВН = ИВНср×[-ln(1-RNi)], где ИВНср – средний интервал времени наступления, RNi – случайное число (RNi Î[0, 1]). Знак минус принят в выражении потому, что значение логарифма отрицательно. Вычисление натурального логарифма в GPSS не предусмотрено и выражение -ln(1-RNi) аппроксимируется ломаной прямой, заданной координатами 24 точек

EXPON FUNCTION RN1,C24  
0,0/.100,.104/.200,.222/.300,.355/.400,.509/.500,.690 .600,.915/.700,1.200/.750,1.380/.800,1.600/.840,1.830/.880,2.120 .900,2.300/.920,2.520/.940,2.810/.950,2.990/.960,3.200/.970,3.500 .980,3.900/.990,4.600/.995,5.300/.998,6.200/.999,7/1,8

График функции EXPON показан на рис. 7.

Например, необходимо смоделировать пуассоновский входящий поток со средним значением 6 заявки в течение каждых 24 часов. Единица измерения – 1 мин. В таком случае блок GENERATE будет иметь вид

GENERATE 240,FN$EXPON


Операнд A получен путем преобразования интенсивности в соответствующее ей среднее время между последовательными поступлениями заявок: 4 часа или 240 мин. Например, если значение RNj равно 0,55, значение функции FN$EXPON будет равно 0,8025. Произведение 0,8025×240 равно 192,6. Следовательно, следующая заявка поступит в модель через 192 мин. Так как, для пуассоновского потока принято предположение, что интервал между двумя последовательными поступлениями не может равен нулю, то рекомендуется значение операнда A блока GENERATE брать не менее 50.

 

В GPSS предусмотрен сбор и обработка типовых статистических данных по каждому объекту (максимальная и средняя длина очереди, коэффициент загрузки устpойства, памяти, сpеднее вpемя обpаботки в устройстве и ожидания в очеpеди и дp.), а также дополнительной статистики, заложенной программистом в модели. Процесс имитации функционирования системы во времени (динамика процесса функционирования) может быть представлен и в графическом виде, что особенно эффективно для учебных целей.

В статистической категории GPSS используется два типа объектов: очереди и таблицы.

Очереди. Транзакт помещается в очередь в том случае, когда некоторое устройство не в состоянии обслужить его немедленно (например, устройство занято, либо память перепол­нена). Статистические данные об очередях могут быть получены в разных точках модели. Для изменения длины очереди в выбранных точках размещается два типа блоков: блок QUEUE и блок DEPART. Блок QUEUE может быть помещен перед любым блоком диаграммы, в котором может возникнуть задержка. При этом транзакты увеличивают длину очереди при входе в блок QUEUE и уменьшают ее при входе в блок DEPART. В GPSS транзакт может входить в несколько блоков QUEUE одновременно. Каждая очередь имеет семь стандартных числовых атрибутов (см. прил. 3).

Таблицы. Статистические таблицы используются для получения частотных распределений определенных аргументов, которыми могут быть некоторые СЧА (например, времени задержки транзакта в модели в целом или в отдельных ее частях; длин очередей; содержимого памяти и т. д.). У каждой таблицы имеются определенные области значений аргумента. Число попаданий аргумента в каждую из этих областей регистрируется. В конце эксперимента с моделью результаты в таблицах выводятся на печать. С помощью карты TABLE пользователь определяет аргумент и области частотных интервалов. Карта TABLE имеет следующий формат:

 

Метка Опе-рация Табулируе-мый аргумент Верхняя граница первого интерва­ла Размер интер-валов Коли-чество интер-валов
    А В C D
j TABLE СЧАi Кn Кn Кn
    СЧА*n
    СЧАi
    СЧА*n —
    RT
    IA

Знак «—» после СЧА показывает, что используется разностный режим. Табулируемый аргумент RT[12] указывает на режим «RT», а IA[13] — на режим «IA». В режиме RT добавляется поле E, в котором указывается интервал времени, относительно которого измеряется интенсивность (автомобилей в час, сообщений в сутки и т.д.). Например, если за единицу модельного времени принята одна минута, то карта

TABRT TABLE RT,0,5,10,60

означает, что значение интенсивности указывает на число приходов за 60 минут.

Каждая таблица имеет три СЧА (см. прил. 3): TBn — средние значения аргумента, которые накапливаются в таблице с послед­ней карты RESET или CLEAR; TDn — стандартное отклонение, равняющееся корню квадратному из дисперсии аргументов; ТСn — счетчик входов в таблицу, т. е. общее число табулированных аргументов.

 

Объекты запоминающей категории(ячейки и матрицы) обеспечивают обращения к сохраняемым значениям.

Ячейки. Эти объекты используются в модели для сохранения отдельных значений СЧА, чтобы в дальнейшем можно было обращаться к ним. Для этого необходимо резервировать ячейки оперативной памяти ЭВМ, в которых эти значения будут храниться посредством карты SAVEVALUE[14]. При принятии определенных решений отдельные транзакты могут обращаться к этим ячейкам и использовать хранящуюся в них информацию. Ячейка SAVEVALUE может сохранять числовое значение в размере формата «слова», «полуслова», «байта», «плавающей точки» в зависимости от ее типа. Ячейкам SAVEVALUE каждого типа соответствует один СЧА (см. прил. 3).

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

Поле А интерпретируется как номер ячейки SAVEVALUE, значение которой изменяется в результате прохождения блока.

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

В поле В задается значение, которое надо записать в данную ячейку. Ячейки SAVEVALUE могут иметь символические имена. Например:

SAVEVALUE PROCE,PH2,XH

(т. е. значение параметра 2 транзакта, вошедшего в блок SAVEVALUE, записывается в ячейку SAVEVALUE с именем PROCE формата «полуслово»). Или

SAVEVALUE XB4 — 12,10,ХН

(где блок SAVEVALUE записывает число 10 в ячейки формата «полуслово», начиная с той, номер которой записан в ячейку формата «байт», и кончая ячейкой 12-го формата «полуслово». Число, записанное в ячейке 4, должно быть меньше 12, иначе заданный диапазон номеров окажется ошибочным).

Формат ячейки SAVEVALUE задается в поле С. Допускаются следующие записи: X, XF, или пробел (ячейка формата «слово»), Н или ХН (ячейка формата «полуслово»), ХВ (ячейка формата «байт») и XL (ячейка формата «плавающая точка»). Если записываемое значение превышает максимально допустимое для ячейки SAVEVALUE .данного формата, выдается предупреждающее сообщение. Например:

SAVEVALUE HTOT,156,XН

(т. е. в ячейке SAVEVALUE формата «полуслово с именем НТОT записывается число 156);

SAVEVALUE RLCLK,Cl,XF

(когда текущее значение условного времени записывается в ячейку SAVEVALUE формата «слово»);

SAVEVALUE QUELN,Q*PB10,XF

(т. е. длина очереди, определяемой: параметром 10 формата «байт», записывается в ячейку формата «слово» с именем QUELN).

Содержимое ячеек SAVEVALUE можно изменить заменой добавлением и вычитанием значений. Если за номером ячейки в поле А стоит знак «+», значение, записанное в поле В, добавляется к текущему содержимому ячейки. Знак «—» определяет вычитание значения, записанного в поле В, из текущего содержимого этой ячейки. Отсутствие символа означает замену содержимого. Например:

SAVEVALUE CROSS,V$RSLT,XF

(т. е. текущее содержимое ячейки GROSS формата «слово» заменяется значением переменной RSLT);

SAVEVALUE GROSS+,V$RSLT,XF

(в этом случае значение переменной RSLT добавляется к текущему содержимому ячейки GROSS).

Матрицы. Эти объекты дают возможность упорядочить значения, которые нужно сохранить в виде матриц m ´ n, где т — число строк; n — число столбцов. Пользователь может определить число строк и столбцов, а также размер информации, которая будет храниться (формат «слово», «полуслово», «байт», «плавающая точка») с помощью карты MATRIX. С этим типом объекта связаны СЧА (см. прил.3).

Матрицы. Эти объекты дают возможность упорядочить значения, которые нужно сохранить в виде матриц m ´ n, где т — число строк; n — число столбцов. Пользователь может определить число строк и столбцов, а также размер информации, которая будет храниться (формат «слово», «полуслово», «байт», «плавающая точка») с помощью карты MATRIX. С этим типом объекта связаны СЧА (см. прил.3). Блоки MSAVEVALUE присваивают, или изменяют значения элементов матриц.

Карта MATRIX определяет матрицу GPSS.

Метка Операция A B C

j MATRIX A B C

j - имя матрицы. А - неиспользуемое поле (для совместимости с прежними версиями GPSS). B - количество строк матрицы. Обязателен. Операнд должен быть константой. С - количество столбцов матрицы. Обязателен. Операнд должен быть константой. Например:

ARRAY MATRIX ,100,5

Этот карта определяет матрицу ARRAY, которая имеет 100 строк и 5 столбцов.

Размер матрицы ограничен -он может содержать не более 8191 элемента. Если есть необходимость в большем количестве элементов нужно определить дополнительную матрицу.

Изменение элементов матриц во время моделирования производится блоком:

MSAVEVALUE A B C D

А - имя или номер матрицы, В - номер строки, С - номер столбца, D - новая величина элемента матрицы.

 

К группирующей категорииотносятся два типа объектов: списки и группы.

Списки. Транзакты GPSS хранятся в списках. Существует пять видов списков в одном из которых в любой момент времени может находиться транзакт: 1) текущих событии; 2) будущих событий; 3) пользователя; 4) прерываний; 5) синхронизируемых транзактов.

В списке текущих событий транзакты расположены в порядке убывания приоритета; внутри класса транзакты с одинаковыми приоритетами располагаются в порядке поступления их в список Каждый транзакт в списке текущих событий может находиться либо в активном состоянии (т. е. просматриваться в данный момент условного времени), либо в состоянии задержки.

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

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

Таким образом, заблокированный транзакт (например, блоке SEIZE из-за занятости устройства) будет переведен в состояние задержки и помещен в список задержки «устройство занято» для данного устройства. Когда другой транзакт освободит устройство, все транзакты списка задержки «устройство занято» для данного устройства будут переведены в активное состояние, и симулятор GPSS отметит, что произошло изменение состояния устройства. Как только завершается обработка активного транзакта, запускается процедура просмотра, и все транзакты, получившие возможность двигаться, в результате изменения состояния устройства будут продвинуты. То же происходит с любым из перечисленных выше списков задержки в момент, когда соответственно изменяется состояние объекта аппаратной категории.

Пользователю следует учитывать, что для транзактов, заблокированных в блоке TEST или пытающихся выйти из блока TRANSFER (в режимах BOTH, ALL), списков задержки не существует. В этих случаях транзакты остаются в активном состоянии в списке текущих событий и участвуют во всех просмотрах.

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

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

Список прерываний содержит транзакты, обслуживание которых прервано на одном или более устройствах. Транзакты в списке прерываний расположены в порядке поступления. Этот список никогда не обрабатывается как списковая структура; транзакты по мере надобности заносятся в этот список и извлекаются из него. Все транзакты, захватившие устройства (пройдя блок SEIZE) и прерванные другими транзактами (прошедшими блок PREEMPT), помещаются в этот список до тех пор, пока не будут сняты все условия прерываний. Если условия прерывания не снимаются, транзакт может оставаться в списке прерывании неопределенно долго.

Список синхронизируемых транзактов содержит транзакты, которые ожидают в блоках ASSEMBLE или GATHER прихода заданного числа транзактов из той же группы: находятся в блоках MATCH в ожидании поступления транзакта той же группы на сопряженный блок MATCH. Этот список также никогда не обрабатывается как списковая структура и представляет собой поднабор набора транзактов.

Последнее изменение этой страницы: 2016-07-22

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...