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

Имитационное моделирование систем. Учебное пособие

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

время

выполнения

имеют равномерное

распределение со

средними ТА и TS соответственно.

 

 

 

Для упрощения

описания

модели положим

ТА=10000,

TS=800

секунд, а

интервалы

изменения

ТА

иTS равны

соответственно 600,1400 и К300,1300.

При построении модели примем, что одна единица модельного времени имитирует одну секунду реального времени,

а для получения статистически

достоверных

оценок

коэффициента

загрузки

ВС

достаточно

1000

измерений.

Тогда GPSS-модель ВС может быть

построена в виде

следующей последовательности блоков:

 

 

GENERATE

1000,400

 

 

 

 

SEIZE

COMPU

 

 

 

 

ADVANCE

800,500

 

 

 

 

RELEASE

COMPU

 

 

 

 

TERMINATE

1

 

 

 

 

START

1000

 

 

 

 

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

выходном листинге будет приведена таблица соответствия

символических имен и порядковых номеров устройств.

 

 

В модели

транзакты порождаются

блоком GENERATE до

тех пор,

пока

через

блок TERMINATE не

пройдет

1000

транзактов.

Отсюда

следует, что общее число транзактов,

выданных

блоком

GENERATE,

из-за

 

возможности

возникновения очереди перед блоком SEIZE будет больше 1000.

Выходные данные модели:

 

 

 

 

 

LABEL

LOC

BLOCK TYPE

ENTRY COUNT CURRENT COUNT RETRY

 

 

1

GENERATE

1001

 

 

0

0

 

 

2

SEIZE

1001

 

 

1

0

 

 

3

ADVANCE

1000

 

 

0

0

 

 

4

RELEASE

1000

 

 

0

0

 

 

5

TERMINATE

1000

 

 

0

0

 

FACILITY ENTRIES

UTIL.

AVE. TIME AVAIL. OWNER PEND INTER RETRY

COMPU

1001

 

0.792

793.885

1

1001

0

0

0

41

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

TAB1 TABLE M1,200,200,15 ; ОПИСАНИЕ ТАБЛИЦЫ

GENERATE

1000,400

 

SEIZE

COMPU

 

ADVANCE

800,500

 

RELEASE

COMPU

;ЗАНЕСЕНИЕ ДАННЫХ В ТАБЛИЦУ

TABULATE

TAB1

TERMINATE

1

 

START

1000

 

Выходные данные модели:

LABEL LOC

BLOCK TYPE

ENTRY COUNT CURRENT COUNT RETRY

1

GENERATE

1001

0

0

2

SEIZE

1001

1

0

3

ADVANCE

1000

0

0

4

RELEASE

1000

0

0

5

TABULATE

1000

0

0

6

TERMINATE

1000

0

0

FACILITY

ENTRIES UTIL.

AVE. TIME

AVAIL. OWNER PEND INTER RETRY

COMPU

1001

0.792

 

793.885

1

1001

0

0

0

TABLE MEAN STD.DEV.

RANGE

 

RETRY FREQUENCY CUM.%

 

TAB1 949.632

402.243

 

-

400.000

 

0

6.90

 

 

 

200.000

 

69

 

 

 

400.000

-

600.000

 

146

21.50

 

 

 

600.000

-

800.000

 

151

36.60

 

 

 

800.000

-

1000.000

 

191

55.70

 

 

 

1000.000

-

1200.000

 

209

76.60

 

 

 

1200.000

-

1400.000

 

125

89.10

 

 

 

1400.000

-

1600.000

 

54

94.50

 

 

 

1600.000

-

1800.000

 

25

97.00

 

 

 

1800.000

-

2000.000

 

12

98.20

 

 

 

2000.000

-

2200.000

 

8

99.00

 

 

 

2200.000

-

2400.000

 

5

99.50

 

 

 

2400.000

-

2600.000

 

2

99.70

 

 

 

2600.000

-

2800.000

 

1

99.80

 

 

 

2800.000

-

_

 

 

2

100.00

 

Используя команду Tabulate можно получить данные о требуемом параметре (TAB1 TABLE M1). Чтобы получить гистограмму необходимо пройти по менюWindow > Simulation window > Table window (рис. 8).

Измерение загрузки прибора - времени, в течение которого транзакт проходит по модели - производится сразу же

42

после

начала

моделирования. Очевидно,

что

для

оценки

эффективности функционирования

ВС

нужны

оценки

для

стационарного (установившегося) режима;

после же

начала

моделирования некоторое время

потребуется

для

достижения

этого стационарного режима модели. Измерения,

полученные

в начале

моделирования, могут дать статистически смещенные

оценки;

поэтому измерения, полученные

в начальный период

моделирования,

следует отбросить, стереть

из памяти

ЭВМ.

Это выполняется с помощью специальной управляющей карты

RESET.

Рис. 8. Гистограмма распределения времени прохождения транзакта по модели

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

43

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

TAB1 TABLE M1,200,200,15 ; ОПИСАНИЕ ТАБЛИЦЫ

GENERATE

1000,400

 

SEIZE

COMPU

 

ADVANCE

800,500

 

RELEASE

COMPU

;ЗАНЕСЕНИЕ ДАННЫХ В ТАБЛИЦУ

TABULATE

TAB1

TERMINATE

1

;ВЫХОД НА СТАЦИОНАРНЫЙ РЕЖИМ

START

300,NP

RESET

1000

START

В модели длина начальной реализации задается первым блоком START - после обслуживания 300 транзактов произойдет сброс накопленных статистик, при этом печать результатов будет подавлена. На выходном листинге будут получены результаты обработки измерений коэффициента загрузки прибора

с

именем

COMPU

и

времени

 

прохождения

по

модели

транзактов,

полученными при пропуске 1000

транзактов через

модель,

что задает

второй блок START, входящий в состав

модели.

 

 

 

 

 

 

 

 

 

 

 

Вопросы

выбора

длины

реализации

статистической

модели

 

в

настоящих

методических

 

указаниях

не

рассматриваются;

они достаточно полно отражены в [2,4].

LABEL LOC

BLOCK TYPE

 

ENTRY COUNT CURRENT COUNT RETRY

 

 

1

 

GENERATE

 

1000

 

0

 

0

 

 

2

 

SEIZE

 

 

1001

 

1

 

0

 

 

3

 

ADVANCE

 

1000

 

0

 

0

 

 

4

 

RELEASE

 

1000

 

0

 

0

 

 

5

 

TABULATE

 

1000

 

0

 

0

 

 

6

 

TERMINATE

 

1000

 

0

 

0

 

FACILITY ENTRIES

UTIL.

AVE. TIME AVAIL. OWNER PEND INTER RETRY

COMPU

1001

0.795

793.795

1

1301

0

0

0

44

TABLE

MEAN

STD.DEV.

RANGE

 

RETRY FREQUENCY CUM.%

TAB1

933.365

367.148

200.000

-

400.000

0

6.10

 

 

 

61

 

 

 

400.000

-

600.000

154

21.50

 

 

 

600.000

-

800.000

152

36.70

 

 

 

800.000

-

1000.000

196

56.30

 

 

 

1000.000

 

- 1200.000

209

77.20

 

 

 

1200.000

 

- 1400.000

133

90.50

 

 

 

1400.000

 

- 1600.000

52

95.70

 

 

 

1600.000

 

- 1800.000

25

98.20

 

 

 

1800.000

 

- 2000.000

10

99.20

 

 

 

2000.000

 

- 2200.000

7

99.90

 

 

 

2200.000

 

- 2400.000

1

100.00

 

Результаты моделирования

Таблица 20

 

 

 

Модель

Mean

 

Std. Dev.

 

 

не стационарный

949.632

 

402.243

 

 

стационарный

933.365

 

367.148

 

 

Сравнивания

результаты

проведенных

моделирований,

можно заметить различия в среднем значении времени егои среднеквадратичном отклонении приведено в табл. 20.

8. Моделирование вероятностных функций распределения

 

(ОПК-2, ПК-23)

 

 

 

В GPSS World в библиотеку процедур включено 24

 

вероятностных

распределения.

При

вызове

вероятностного

распределения требуется найти аргументStream (может быть

 

выражением), который определяет номер генератора случайных

 

чисел. При

моделировании

генераторы

случайных

чисел

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

ЕXPON FUNCTION RN1,C24 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 GENERATE EXPON,7

45

Либо можно воспользоваться встроенными функциями GPSS. Например, равномерный закон задается записью в поле

операндов

соответствующей

функцииUNIFORM

(A,B,C);

экспоненциальный

закон

функциейEXPONENTIAL

(A,B,C);

нормальный закон

функциейNORMAL (A,B,C). Специальный

эрланговский закон можно ввести частным случаем - гамма

распределения

с

помощью

функцииGAMMA

(A,B,C,D).

Треугольный

закон

можно

ввести

с

помощью

функции

TRIANGULAR(A,B,C,D).

В

аргументе

А

данных

законов

записывается номер генератора равномерно распределенных случайных чисел в диапазоне от 0 до 1, который рекомендуется

выбирать из диапазона от 1 до 7. Для равномерного закона в

 

аргументе

В

записывается

левый

предел

диапа

существования, а

в

аргументе –С правый

предел.

Для

 

экспоненциального закона аргумент В принимается равным0, а в

 

аргументе С записывается среднее значение. Для нормального

 

закона в операнде В записывается среднее значение, а в операнде

 

С-стандартное отклонение. Отметим, что для нормального закона

 

стандартное отклонение должно быть не более0,2 от среднего

 

значения (при невыполнении этого условия возможно появление

отрицательных чисел, что недопустимо для имитации временных

 

переменных). Для специального эрланговского закона аргумент B

 

принимается

равным 0,

в

аргумент C

записывается среднее

значение, а в аргумент D записывается количество фаз. Для

 

треугольного закона в операндеB записывается левый предел

диапазона распределения,

в

операнде C

– правый

предел

и

в

операнде D – мода, т.е. наиболее часто встречающееся значение. Например, сгенерировать тракзакты по экспоненциальному

закону распределения, в среднем 65 тракзактов:

GENERATE (Exponential(1,0,65))

или задержку:

ADVANCE (Normal(7,100,15)),

46

где 100 – математическое ожидание и15 – стандартное отклонение распределения.

9. Основные операторы языка GPSS

(ПК-5)

9.1.Операторы описания блоков

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

определенный

оператор

описания

.блокаПри

обработке

 

исходного текста модели GPSS присваивает последовательные

 

номера блокам. Таким образом, с каждым блоком будет связан

 

идентифицирующий номер. Если в модели к какому-либо

 

блоку происходит обращение, то во избежание

работы

с

номерами

блоков

можно

 

 

идентифицировать

егометкой

 

(совокупностью алфавитно-цифровых символов), а ассемблер

 

данной метке поставит в соответствие номер. В дальнейшем к

 

данному блоку можно будет обращаться по метке.

 

 

 

В

поле

операции

 

пользователь

должен

 

записат

обозначение блока,

например,

GENERATE,

ASSIGN,

 

MSAVEVALUE,

TERMINATE,

 

SPLIT, PRIORITY,

ENTER.

 

Задание

исходных

данных, необходимых

 

для

выполнения

 

операций,

соответствующих

 

блоку, производится

в

поле

операндов. Всего может быть семь операндов, эти операнды

 

обозначаются

буквами A,B,C,D

и т.д.

Значение

каждого

 

операнда определяется типом блока. Если у блока несколько

 

операндов,

они

разделяются

 

запятыми. Не

все

операнды

 

являются обязательными, и если они опущены, то вместо

 

пропущенного операнда ставится запятая.

 

 

 

 

 

Ниже приводится список блоков GPSS и дается их краткая

 

характеристика.

 

 

 

 

 

 

 

 

 

 

ADVANCE - задержка сообщения на определенное время, с

 

включением его в список будущих событий. Блок ADVANCE

 

имеет следующий формат записи:

 

<A>,[<B>]

 

 

 

 

 

 

 

ADVANCE

 

 

 

 

 

47

Блок ADVANCE задерживает продвижение сообщения на заданный период времени. В поле А задается среднее время пребывания сообщения в блоке ADVANCE. Содержимое поля А может быть именем, любым целым числом, в том числе и 0, СЧА или СЧА*<параметр>. Если время задержки pавно 0, сообщение помещается в список текущих событий перед сообщениями таким же приоритетом. Сообщения с положительным временем задержки помещаются в список будущих событий. В поле В указывается способ модификации среднего значения, заданного в поле А. Операнд В может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

Может быть два типа модификаторов:

-модификатор-интервал;

-модификатор-функция.

ALTER - проверка и модификация сообщений в группе. Блок ALTER имеет следующий формат записи:

ALTER [<X>] <A>,[<B>],<C>,<D>,[<E>],[<F>],[<G>]

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

- изменять значение заданного атрибута всех членов группы;

-изменять значение заданного атрибута для определенного числа членов группы;

-изменять значение заданного атрибута сообщения, определенного числа членов группы;

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

Указатель отношения <X> определяет, какое явное условие следует рассматривать. Если указатель отношения не задан, предполагается отношение равенства (Е).

Поле А задает номер группы, членом которой являются сообщения с изменяемыми атрибутами. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>.

В поле В задается число изменяемых сообщений. Поле В должно быть пустым, если указателем отношения являются MIN или MAX. По умолчанию принимается значение"ALL".

48

Операнд может быть "ALL", именем, положительным целым, СЧА, СЧА*<параметр>.

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

Операнд С может быть "PR", именем, положительным целым, СЧА, СЧА*<параметр>.

Поле D задает значение, которое заменяет значение атрибута поля С. Операнд может быть именем, целым, СЧА, СЧА*<параметр>.

Вполе Е указывается номер параметра сообщения или мнемоника "PR", используемые для нахождения в группе сообщения, атрибут которого подлежит изменению. Операнд может быть "PR", именем, положительным целым, СЧА, СЧА* <параметр>.

Вполе F задается значение, сравниваемое со значением, описанным в поле Е для того, чтобы определить, удовлетворяет сообщение заданному условию или нет. Поле F должно быть пустым, если заданы указатели отношения MIN или MAX. Операнд может быть именем, целым, СЧА, СЧА*<параметр>.

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

Операнд может быть именем, положительным целым, СЧА, СЧА*<параметр>.

Например:

ALTER 1,ALL,PR,100

Заменить на 100 значения приоритетов всех сообщений, принадлежащих к группе 1.

ASSEMBLE - вывод из модели одного или нескольких сообщений. Блок ASSEMBLE имеет следующий формат:

ASSEMBLE <A>

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

49

которое переходит в следующий по номеру блок. В одном и том

же

блоке ASSEMBLE возможна

одновременная

сборка

сообщений нескольких семейств. Когда сообщение входит в

блок

ASSEMBLE, интерпретатор

просматривает семейство, к

которому принадлежит это сообщение,

и проверяет, есть

ли

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

ASSEMBLE.

 

 

 

 

ASSIGN - модификация

параметров сообщений. Блок

ASSIGN имеет следующий формат записи:

ASSIGN <A>,<B>,[<C>]

Блок ASSIGN заменяет, увеличивает или уменьшает текущее значение параметра сообщения на заданное значение.

В поле А задается номер параметра, которому присваивается значение. Операнд А может быть именем, положительным целым числом, СЧА, СЧА*<параметр> и следующими за ними знаками+,- . Если значение параметра нужно увеличить или уменьшить, то справа в поле А ставится знак сложения или вычитания. Поле В определяет значение, которое следует добавить или вычесть из значения параметра, заданного аргументом поля ,Аили заменить его. Если такой параметр не сущeствует, то он создается. Операнд В может быть именем, любым целым числом, СЧА, или СЧА*<параметр>.

Пример:

ASSIGN 2000+,-3

В этом примере значение поля В, равное -3, добавляется к значению параметра с номером2000, который задан операндом А. Если такой параметр в сообщении отсутствует, то он создается со значением, равным 0, до того как будет произведено

добавление. Тогда значение параметра сообщения становится равным -3.

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

50

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