Имитационное моделирование систем. Учебное пособие
.pdfвремя |
выполнения |
имеют равномерное |
распределение со |
||
средними ТА и 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
