Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Моделирование систем. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
221 Кб
Скачать

В случае если операндом А является стандартный числовой атрибут генератора случайных чисел RN, j = 1, 2, ..., 8, а операндом В является функция Fni, i = 1, 2, ..., распределение интервалов между транзактами модифицируется по правилу

D = RNj FNi.

Операнд С (необязательный) характеризует интервал смещения момента ввода в модель первого транзакта относительно нулевой отметки времени. В качестве операнда С может быть использовано целое число без знака R, стандартный числовой атрибут в форме СЧАj, СЧА@ИМЯ, например V1, V0TEM.

Операнд D задает максимальное число транзактов, которые могут быть введены в модель через данный блок GENERATE в течение всего времени моделирования. Операнд D является либо целым числом, либо СЧАj, либо СЧА@ИМЯ. Операнд Е (необязательный) определяет уровень приоритета транзакта. Он может быть либо целым числом R, либо СЧА в форме СЧАj, либо СЧА@ИМЯ.

Операнд F (необязательный) определяет число параметров транзакта. Он может быть либо целым числом K, либо СЧАj, либо СЧА@ИМЯ.

Операнды В, С, Д, Е, Р при спецификации блока могут быть опущены. В этом случае значения параметров блока определяются по умолчанию. По умолчанию значения операндов следующие: В = 0, С = 0, D = ∞, Е = 0, F = 12.

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

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

Команда START в моделируемой системе всегда одна. Значение операнда поля А этой команды определяет начальное значение счетчика завершений.

11

Блок ADVANCE (задержать). Блок ADVANCE в GPSS является основным блоком для моделирования устройств или приборов обслуживания. Он позволяет задерживать двигающиеся в блок-схеме транзакты. Для каждого входящего в блок транзакта вычисляется длительность задержки в соответствии с операндами полей А и В транзакта.

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

Блоки SEIZE-RELEASE (занять-освободить), PREEMPTRETURN (захватить-вернуть). Для моделирования и регистрации процессов использования устройств в GPSS предусмотрены блоки SEIZE, RELEASE, PREEMPT, RETURN.

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

Указанные блоки всегда используются попарно. Первую пару образуют блоки SEIZE-RELEASE, вторую – блоки PREEMPT-RETURN. Все блоки являются вспомогательными и необязательными для моделирования использования устройств, однако они позволяют провести более тщательный анализ работы моделирующей программы. Блоки, собственно моделирующие работу устройств (например, блок ADVANCE, рассмотренный выше), размещаются обычно между блоками SEIZE-RELEASE или PREEMPT-RETURN.

В результате входа транзакта в блок SEIZE устройство, указанное в поле А операндов этого блока, будет занято. Оно будет занято, пока тот же транзакт не пройдет соответствующий блок RELEASE. Если какой-либо транзакт занимает устрой-

12

ство, описанное в поле А блока SEIZE, то никакой другой транзакт не может войти в этот блок. Между блоками SEIZE и RELEASE может быть расположено любое число блоков GPSS. Блок RELEASE служит для фиксации момента времени и освобождения устройства, которое было занято прошедшим через блок транзактом. Устройство, указанное в блоке RELEASE, должно быть занято именно тем транзактом, который вошел в блок SEIZE. Никакой другой транзакт не может освободить данное устройство.

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

Блок PREEMPT предназначен для моделирования процессов использования устройств в случае приоритетного обслуживания.

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

Если устройство в момент входа транзакта в блок уже обслуживает прерывание, то вновь пришедший транзакт задерживается на входе блока PREEMPT. В этом случае, как только закончится прерывание (т.е. в момент, когда обслуживаемый устройством транзакт войдет в блок RETURN), устройство будет занято транзактом, задержанным на входе блока PREEMPT, а не прерванным транзактом.

Моделирование параллельной обработки. Блоки ENTER (войти), LEAVE (выйти)

Команда описания STORAGE (накопитель). Для моделирования процессов параллельной обработки транзактов используются блоки двух типов – ENTER и LEAVE. Эти блоки определяют номер накопителя и число единиц памяти, которые транзакт должен занять или освободить. Когда транзакт

13

входит в блок ENTER, содержимое накопителя увеличивается на соответствующее число единиц. Блок LEAVE соответственно уменьшает содержимое накопителя.

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

Команда описания накопителя является обязательной. При ее отсутствии емкость накопителя определяется по умолчанию. При обращении к неописанным накопителям считается, что они имеют объем 231 – 1 единиц. В начале процесса моделирования все накопители считаются пустыми.

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

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

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

Блок LEAVE служит для уменьшения содержимого накопителя на заданное число единиц.

Поле А определяет номер накопителя, а поле В – число единиц, которое надлежит освободить при входе сообщения в этот накопитель.

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

При прохождении блока LEAVE задержка транзактов не возникает. Если в поле В стоит ноль, то при прохождении блока LEAVE транзакт не освобождает накопитель.

14

Моделирование очередей. Блоки QUEUE (встать в очередь) и DEPART (покинуть очередь). Для сбора статистических данных о транзактах, задержанных в процессе моделирования блоками GPSS, служат блоки QUEUE и DEPART. Как уже отмечалось выше, в процессе моделирования при своем движении по схеме транзакты могут задерживаться на входах в блоки SEIZE, ENTER и др. Задержанные транзакты интерпретатор ставит в очередь. Если сведения об очереди представляют интерес, то следует перед указанными блоками поместить блок QUEUE.

Блок QUEUE собирает следующие статистические данные об очередях:

1)среднюю длину очереди;

2)общее число входов в очередь;

3)число нулевых входов в очередь, т.е. число транзактов, вошедших в блоки после QUEUE без ожидания;

4)процент нулевых входов;

5)среднее время ожидания для задержанных транзактов;

6)среднее время ожидания с учетом нулевых входов;

7)текущую и максимальную длину очереди.

Операндом поля А блока QUEUE является номер или символическое имя очереди. Значение операнда поля В характеризует число единиц, на которое увеличивается текущая длина очереди. Если операнд поля В отсутствует, то по умолчанию длина очереди увеличивается на 1 для каждого задержанного транзакта.

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

Условные переходы. Блок TRANSFER (передать).

Блок TRANSFER при моделировании на GPSS используется для организации условных и безусловных переходов транзактов в схеме моделирования. Режим использования блока TRANSFER определяется операндом поля А. Содержание полей В, С, D зависит от режима использования блока TRANSFER.

В простейшем случае блок TRANSFER используется в режиме безусловного перехода. В этом случае поле А не запол-

15

няется, в поле B используется имя блока либо номер блока, к которому должен перейти транзакт после блока TRANSFER. В качестве операнда поля В может быть использован стандартный числовой атрибут в одной из следующих форм – СЧАj, СЧА@ИМЯ, в том числе арифметическая переменная и функция. В последнем случае номер блока, к которому переходит транзакт, определяется значением функции, а в поле А необходимо отметить режим FN.

Если в поле А указан режим BOTH (ОБА), блок TRANSFER отсылает транзакт к блоку, указанному в поле С. В случае если оба блока заняты, транзакт задерживается на входе блока TRANSFER до освобождения одного из них.

16

Методические рекомендации к выполнению лабораторных работ

После запуска командного файла вводят имя исполняемой программы. При этом результат моделирования на экран не выводится, а записывается в файл с расширением LST. Ниже приведены наиболее важные сегменты стандартного вывода GPSS:

yy распечатка исходной программы;

yy словарь соответствия числовых имен и числовых эквивалентов; ассемблированная модель;

yy относительное и абсолютное время моделирования (Relative clock и Absolute clock); при отсутствии в модели режима сброса значения относительного и абсолютного времени должны совпадать;

yy ошибки;

yy счетчик блоков.

Для всех блоков, используемых в модели, выводятся следующие значения: Number – номер блока; Adr. – имя или метка; Oper. – оператор.

Current – текущее число транзактов, находящихся в блоке в момент окончания моделирования.

Total – число транзактов, входивших в блок за все время моделирования:

yy устройства; yy очереди;

yy памяти.

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

17

Лабораторная работа 1 Основные сведения о языке моделирования

GPSS

(2 часа)

1.1. Цель работы

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

1.2. Теоретическое введение

Транзакт – элемент системы массового обслуживания. Работа программы GPSS заключается в перемещении транзактов от блока к блоку. Транзакты входят в модель в определенные моменты времени, в соответствии с логическими потребностями, и подобным образом покидают ее. В общем случае в модели существует большое число транзактов, однако в один момент времени двигается только один транзакт, пока не будут достигнуты условия для его остановки. В это время другой транзакт начинает перемещаться по своим правилам. Передвижение транзактов по блок-схеме происходит на фоне модельного времени. Особенностью модельного времени является изменение его в соответствии с моментами событий.

Таймер GPSS характеризуется следующими особенностями:

1)таймер регистрирует только целые значения времени;

2)единицу времени (t) задает разработчик (если t = l минута, то нельзя зафиксировать t = 40 секунд, для этого необходимо задать t в секундах);

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

Основные сведения о блоках, используемых в CPSS, приведены ниже.

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

2.Операциями блоков являются глаголы, описывающие основное функциональное назначение блоков, например:

18

GENERATE – генерировать, ASSIGN – назначить, QUEUE – вставить в очередь.

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

Блоки могут содержат различные, связанные с ними операнды, которые задают информацию, специфичную для действия данного блока (под значениями операндов можно подразумевать значения аргументов). Число операндов зависит от типа блока, но всегда меньше 7, обычно оно составляет 1 либо 2.

Операнды должны быть символьными или целыми неотрицательными числами.

Блок GENERATE (генерировать)

GENERATE – блок, через который транзакты входят в модель. В программе может быть несколько блоков GENERATE.

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

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

GENERATE A, B, C, D, E.

При этом операнды задают следующие параметры:

yy А – среднее время между последующим приходом транзактов в блок;

yy В – половину поля допуска интервала времени прибытия; yy С – смещение интервалов для прихода первого транзакта; yy D – значение общего числа транзактов;

yy Е – уровень или класс приоритета каждого транзакта.

19

Например, блок GENERATE 5,3 означает, что время прихода заявки может быть равно 2, 3, 4, 5, 6, 7, 8;

GENERATE 3,3,10,5,4 – момент первого прихода заявки равен 10, далее через интервал времени t = 3 + 3 будут приходить другие транзакты, но их будет только 5 и все с приоритетом 4.

Блок TERMINATE (завершить)

Выход транзактов из модели осуществляется в блоке TERMINATE. Их может быть несколько в программе. Стандартное описание данного блока представлено, как TERMINATE А, где А – уменьшение счетчика завершений.

Счетчик завершения – это ячейка памяти ЭВМ, которая хранит положительное целое число, заданное в начале моделирования. При достижении им нулевого значения моделирование завершается.

Счетчик завершения должен быть один, хотя блоков TERMINATE может быть несколько. Для определения начального значения времени моделирования следует использовать операнд А карты START.

Пример. Разработчик выбрал 1 мин в качестве единицы времени и хочет моделировать процесс в течение 8 ч. Такую модель можно реализовать двумя способами:

START 480 GENERATE 480

GENERATE 1 TERMINATE 1 TERMINATE 1 START 1

1.3. Задание для выполнения лабораторной работы

Получите результаты моделирования в программе GPSS на основе следующих данных:

GENERATE 60

TERMINATE 1

START 8

На основе полученных результатов дайте ответы на следующие вопросы.

yy В какой момент завершится моделирование, если в поле операнда блока START записано 8?

20

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