Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по самому GPSS - для студентов.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
153.76 Кб
Скачать

Лекции по gpss

Основными элементами GPSS являются транзакты и блоки, соответственно динамические и статические объекты.

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

Блоки и транзакты

Последовательность блоков GPSS-модели показывает направления, по которым перемещаются транзакты. Транзакты – это динамические объекты.

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

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

Магазин покупатель

Склад заявка

Телефонный узел сигнал вызова

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

После того, как транзакт закончит свое движение по блокам модели, его необходимо уничтожить (переполнение).

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

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

  1. Транзакт входит в блок, функцией которого является удаление транзакта из модели.

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

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

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

Ресурсы

Аналогами обслуживающих устройств в реальной моделируемой системе являются объекты УСТРОЙСТВА (одноканальные СМО), ПАМЯТИ (многоканальные СМО) и ЛОГИЧЕСКИЕ КЛЮЧИ.

Переменные

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

Функции

Функции в GPSS задаются табличным способом. Кроме того, в GPSSW в библиотеку процедур включено 24 вероятностных распределений (экспоненциальное, Пуассона, нормальное и т.д.).

Ячейки и матрицы сохраняемых величин

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

Очереди

Пользователь может специально определить точки модели, в которых необходимо собирать статистику об очереди. Тогда GPSS будет автоматически собирать статистику: длину очереди, среднее время нахождения в очереди и т.д. GPSS автоматически поддерживает дисциплину FIFO.

Таблицы

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

ОПЕРАТОРЫ

Операнды операторов в общем случае обозначаются A,B,C,D,E,F,G (<= 7).

Каждый объект в GPSS имеет свое имя и номер. Имя дается программистом, а номер присваивается автоматически. При необходимости имени любого объекта (не блока) можно поставить в соответствие любой номер с помощью оператора описания EQU:

имя EQU номер

Для ссылки на СЧА можно использовать один из способов:

СЧА$имя или СЧАj

где СЧА – название конкретного СЧА,

имя – имя объекта, j – номер объекта.

Например: N$OUT – счетчик блока с именем OUT, Q$WORKER – длина очереди с именем WORKER.

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

Поступление транзактов в модель

GENERATE (генерировать) –создание транзактов. Когда транзакт входит в модель из блока GENERATE, GPSS планирует время поступления следующего транзакта (путем розыгрыша случайного числа с соответствующим распределением интервалов поступления) на момент времени, равный текущему значению ТМВ плюс разыгранное значение. Формат блока

GENERATE [A],[B],[C],[D],[E]

  • A – среднее значение интервала времени между моментами поступления в модель двух последовательных транзактов.

  • В – модификатор среднего значения, который может быть модификатором-интервалом или модификатором-функцией.

В 1 случае интервал поступления – случайная величина с равномерным законом распределения, тогда B – половина допуска равномерно распределенного интервала.

GENERATE 6,4

Это - случай равномерно распределенного интервала времени, интервал [2;4].

В GPSSW в библиотеку процедур включено 24 вероятностных распределений. Это означает, что пользователю не обязательно задавать функцию распределения в виде таблицы (как было в более ранних версиях GPSS, например, в GPSS/PC), а можно воспользоваться библиотечной процедурой, написанной на встроенном в GPSSW языке PLUS. Однако следует помнить, что использование вероятностных распределений в табличном виде значительно ускоряет процесс моделирования.

Для экспоненциального распределения используется следующая запись:

(Exponential(A,B,C)

Здесь А - номер генератора случайных чисел, В – величина сдвига распределения, С - величина, используемая для сжатия или растяжения распределения. При этом С>0, В+С – среднее значение, при В=0 С – среднее значение.

Покажем, как для генерации потока транзактов можно использовать библиотечную процедуру экспоненциального распределения с параметром = 0,25 и использованием генератора случайных чисел №2 (количество генераторов случайных чисел в GPSSW неограниченно):

GENERATE (Exponential(2,0,(1/0.25)))

В случае модификатора-функции в поле B блока GENERATE должна быть записана ссылка на функцию (ее СЧА), и случайный интервал времени определяется, как произведение поля A на вычисленное значение функции (задаваемой таблично).

GENERATE 100,FN$EXP

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

D – общее число транзактов, которое генерируется блоком GENERATE.

E – приоритет транзакта (0 – 127), причем самый низкий – нулевой.

Примеры

GENERATE 20,4

GENERATE 10

GENERATE ,,,1 - в нулевой момент входит только один транзакт.

Задание: смоделируйте ситуацию, когда транзакты поступают в модель каждые 45+-15 мин., первый транзакт – на 20 минуте. Единица модельного времени 0,1 мин.

Ответ:

( GENERATE 450,150,200 )

СЧА транзактов – PR, M1 – резидентное время транзакта (с момента входа в модель из блока GENERATE), XN1 – внутренний уникальный номер транзакта.

Транзакты не могут входить в блок GENERATE.

Необходимо помнить! – В начальный момент времени в каждом блоке GENERATE производится подготовка к выходу одного транзакта. На этой стадии модель еще не полностью инициализирована. Поэтому все СЧА, описанные в GENERATE должны быть уже определены. В модели этому блоку должны предшествовать команды определения EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE. Например

SrInt EQU 47.2

Stan EQU 28.6

INITIAL X$Koltran, 43

………………………….

GENERATE SrInt, Stan, , X$Koltran

Транзакты могут входить в модель не только через блок GENERATE, но и путем создания копий уже существующих транзактов в блоке SPLIT (расщепить), имеющем следующий формат:

 SPLIT A,B,C

В поле A задается число создаваемых копий исходного транзакта (родителя), входящего в блок SPLIT. После выхода из блока SPLIT транзакт-родитель направляется в следующий блок, а все транзакты-потомки поступают в блок, указанный в поле B. Если поле B пусто, то все копии поступают в следующий блок.

Транзакт-родитель и его потомки, выходящие из блока SPLIT, могут быть пронумерованы в параметре, имя или номер которого указаны в поле C. Если у транзакта-родителя значение этого параметра при входе в блок SPLIT было равно k, то при выходе из блока оно станет равным k+1, а значения этого параметра у транзактов-потомков окажутся равными k+2, k+3 и т.д.

Например, блок

SPLIT 5,MET1,NUM

создает пять копий исходного транзакта и направляет их в блок с именем MET1. Транзакт-родитель и потомки нумеруются в параметре с именем NUM. Если, например, перед входом в блок значение этого параметра у транзакта-родителя было равно 0, то при выходе из блока оно станет равным 1, а у транзактов-потомков значения параметра NUM будут равны 2, 3, 4, 5 и 6.