Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gpss_Методич_пособие_Дорошенко.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
363.52 Кб
Скачать

Вв матсн аа

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

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

.

Раздел IV. Особенности построения моделей дискретных

ПРОЦЕССОВ НА ЯЗЫКЕ GPSS

Общая схема программы на языке GPSS состоит из раздела объявлений, раздела операторов (блоков модели) и ряда управляющих операторов (обязательными из которых являются SIMULATE, START, END), располагающихся в следующем порядке:

[REALLOCATE]

Объявление имен

Объявление функций

Объявление переменных

Инициализация ячеек

Задание емкости памяти

SIMULATE

Последовательность блоков модели.

START

END

Далее рассматриваются особенности построения программ с учетом специфики языка GPSS и принципов моделирования дискретных систем во времени.

4.1. ИМЕНА В GPSS-ПРОГРАММЕ

Имена в GPSS-программе могут задаваться как символами (идентификаторами), так и числовыми кодами – номерами. Для установления однозначного соответствия имен и номеров объектов в разделе «объявление имен» каждому имени присваивается номер по форме:

имя EQU номер

где имя содержит не более 6 символов и располагается с первой позиции. Объектам каждого типа принято назначать номера, начиная с первого.

Примеры.

СР1 EQU 1

UST EQU 2

OZU EQU 1

Q1 EQU 1

Q2 EQU 2

Exp1 EQU 1

4.2. СЛУЧАЙНЫЕ ВЕЛИЧИНЫ В GPSS

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

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

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

Значения случайной непрерывной величины, распределенной по экспоненциальному закону с интенсивностью 1, в GPSS определяются с помощью функции, задаваемой точками, которые были рассчитаны по формуле y = 1- e x :

Exp1 FUNCTION RN$1,C14; Ехр1 – имя, С14-непрерывная, задаваемая 14 точками

0.,0./.1,.104/.3,.555/.5,.69/.6,.915/.7,1.2/.8,1.6/.85,1.95/.9,2.3/

.950,3./.98,3.9/.99,4.6/.995,5.3/.999,7.

При этом в качестве базового используется равновероятное распределение на интервале (0,1), задаваемое одной из восьми встроенных функций RN$i, i=1,2,…,8.

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

Пример.

GENER 25, FN$Exp1; генерируется поток заявок, имеющий пуассоновское распределение с интенсивностью lambda=1/25 или время появления транзакта равно 25*Exp1

ADVANCE 15,FN$Exp1; задается задержка транзакта 15*Exp1

Примечание.

Если в поле В блоков GENERATE и ADVANCEзадается не функция, а константа, то время задержки определяется как случайная величина, равномерно распределенная на интервале (А-В, А+В).

Примеры.

GENER 25, 15; генерируется поток заявок, появляющихся через интервалы

време ни, имеющие равномерное распределение на интервале (10; 40)

ADVANCE 15,7; задается задержка транзакта, значение которой выбирается из условий равновероятного распределения на интервале (8; 22).

    1. ИМИТАЦИЯ ДИСКРЕТНОГО ПРОЦЕССА В GPSS

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

Примечание.

Структура строки GPSS-программы аналогична структуре строки программы на ассемблере:

[метка] имя_блока список_полей [; комментарий после символа “точка с запятой”]

* Строка-комментарий начинается с первой позиции символом “звездочка”’ *

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

*

REALL XAC, 150, FAC,1, QUE,1; Оператор управления задает в модели 150 *транзактов, одно устройство и одну очередь.

*объявление имен очереди, устройства и функции:

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*описание функции ЕХР:

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1, .104/.2,.222/.3, .355/.4,.509/.5, .69/.6, .915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

* Операторная часть состоит из последовательности блоков модели :

GENERATE 5,3 ; генерируемые транзакты поступают в модель

* в случайные моменты времени, равновероятно распределенные на интервале 2..8

M1 QUEUE Q1; сбор статистики об ожидании транзактов в очереди Q1

* перед устройством UST1; метка должна занимать первую позицию строки

SEIZE UST1; вход транзакта в устройство UST1, если оно свободно

DEPART Q1 ; выход транзакта из очереди Q1

ADVANCE 4 , FN$ EXP; обслуживание транзакта в устройстве в течение

* некоторого случайного времени 4*FN$EXP, имеющего экспоненциальное

* распределение с интенсивностью (1/4)

RELEASE UST1; выход транзакта из устройства

TRANSFER .4, М1, М2; транзакт с вероятностью 0.4 переходит на М2,

* а с вероятностью 0.6 – на метку М1

М2 TERMINATE 1; транзакт уменьшает число завершений на 1 и при нулевом

START 50 ; значении числа завершений моделирование заканчивается

END

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

Рассмотрим варианты задания длительности моделирования применением специально выделенного сегмента. Предполагается, что время моделирования определяется только этим сегментом, поэтому блоки завершения TERMINATE во всех остальных сегментах модели не должны иметь поля A и, следовательно, при прохождении транзактов через эти блоки счетчик завершения не меняется.

Во всех приведенных ниже примерах задаваемое время моделирования одно и то же и равно 1000 условных единиц времени.

Пример 1.

REALL XAC, 150, FAC,1, QUE,1

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1, .104/.2,.222/.3, .355/.4,.509/.5, .69/.6, .915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

*Сегмент 1: имитация процесса обслуживания заявок (повторение предыдущего *примера)

GENERATE 5,3 ;

M1 QUEUE Q1

SEIZE UST1;

DEPART Q1 ;

ADVANCE 4 , FN$ EXP;

RELEASE UST1;

TRANSFER .4, М1, М2;

М2 TERMINATE

* Сегмент 2: задание времени моделирования

GENERATE 1000

TERMINATE 1

START 1

END

Примечание. В последующих трех примерах текст первого сегмента опущен, так как полностью совпадает с примером 1.

Пример 2.

* Сегмент 2: задание времени моделирования

GENERATE 200

TERMINATE 1

START 5

END

Пример 3.

* Сегмент 2: задание времени моделирования

GENERATE 100

TERMINATE 2

START 20

END

Пример 4.

* Сегмент 2: задание времени моделирования

GENERATE 10.

TERMINATE 1

START 100

END

Итак, время моделирования, задаваемое в примерах 1 – 4, одно и то же, равное 1000 условных единиц времени Однако длительность работы моделирующего алгоритма (процессорного времени компьютера) будет для этих вариантов различной: время работы ПЭВМ в последнем случае будет наибольшим, так как через каждые 10 единиц модельного времени возникает новый транзакт (выполняется подпрограмма блока GENERATE). Дапее выполняетсяподпрограмма блока TERMINATE. Эти действия повторяются 100 раз, в то время как в примере 1 сегментом 2 задания времени моделирования создается только один транзакт, поступающий в блок TERMINATE через 1000 единиц модельного времени и останавливает процесс моделирования. Следовательно быстродействие модели в примере 1 будет наивысшим.

    1. . МОДЕЛИРОВАНИЕ ПРОЦЕССОВ, СВЯЗАННЫХ ПО УСТРОЙСТВУ ОБСЛУЖИВАНИЯ

Для имитации обслуживания нескольких потоков заявок в одном устройстве в GPSS-программе следует предусмотреть генерацию этих потоков, имеющих в общем случае различные интенсивности и законы появления заявок и поэтому реализуемых различными блоками GENERATE. Дисциплины обслуживания, интенсивности и законы обслуживания в устройстве также могут быть различными. При этом под дисциплиной обслуживания понимается способ назначения транзакта для обслуживания в устройстве. В теории массового обслуживания рассматриваются три типовые дисциплины обслуживания: бесприоритетное обслуживание – в порядке поступления в очередь (FIFO), обслуживание с относительным приоритетом, то есть в соответствии с уровнем приоритета, но без прерывания, обслуживание с абсолютным приоритетом – дисциплина LIFO, то есть с прерыванием обслуживания заявки, не имеющей абсолютного приоритета. Ниже приводятся примеры построения программ моделирования работы устройства, обслуживающего два потока транзактов, с вариацией дисциплин обслуживания.

Пример1.

Программа формирования двух потоков транзактов, образующих очереди Q1, Q2 и имеющих одинаковые приоритеты, с выборкой транзактов из очередей по правилу FIFO для обслуживания одним и тем же устройством U1. В модели принято, что длительность обслуживания транзактов второго потока в среднем в два раза больше длительности обслуживания транзактов первого потока.

*

Q1 equ 1

Q2 equ 2

U1 equ 1

SIMULATE

GЕNERATE 20,15; начало первого сегмента

QUEUE Q1

SEIZE U1 ; занять устройство U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15 ; начало второго сегмента

QUEUE Q2

SEIZE U1 ; занять устройство U1

DEPART Q2

ADVANCE 10,6

RELEASE U1

TERMINATE

GENER 2000; начало сегмента задания длительности моделирования

TERM 1

START 1

END

Пример2.

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

*

U1 equ 1

Q1 equ 1

Q2 equ 2

SIMULATE

GENERATE 10,5 ; начало первого сегмента

* по умолчанию приоритет транзактов равен 0

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15; начало второго сегмента

PRIORITY 1 ; транзактам присваивается приоритет, равный 1;

*возможно задание приоритета при генерации транзакта: GENERATE 20,15,,,1

QUEUE Q2

SEIZE U1

DEPART Q2

ADVANCE 10,6

RELEASE U1

TERMINATE

GENERATE 5000; начало сегмента задания длительности моделирования

TERMINATE 1

START 1

END

Пример 3.

Обслуживание с абсолютным приоритетом, т.е. с прерыванием процесса обслуживания транзакта, не имеющего абсолютного приоритета и занявшего устройство до появления транзакта с абсолютным приоритетом.

U1 equ 1

Q1 equ 1

Q2 equ 2

SIMULATE

GENERATE 10,5 ; начало первого сегмента

QUEUE Q1

SEIZE U1

DEPART Q1

ADVANCE 5,3

RELEASE U1

TERMINATE

GENERATE 20,15; начало второго сегмента

QUEUE Q2

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

DEPART Q2

ADVANCE 10,6

RETURN U1 ; завершение обслуживания и освобождение устройства

*с последующим дообслуживанием прерванного транзакта

TERMINATE

GENERATE 5000; начало сегмента задания длительности моделирования

TERMINATE 1

START 1

END

4.5. МОДЕЛИРОВАНИЕ И СИНХРОНИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ

При моделировании ВС следует различать параллельные процессы трех типов:

  • независимые параллельные процессы (не связанные по данным и по управлению);

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

  • параллельные процессы, зависимые по управлению.

Ниже рассмотрены средства имитации параллельных процессов в GPSS.

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

4.5.1. МОДЕЛИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ НЕЗАВИСИМЫХ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]