
- •Лекции по gpss
- •Блоки и транзакты
- •Транзакт входит в блок, функцией которого является удаление транзакта из модели.
- •Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
- •Удаление транзактов из модели и завершение моделирования
- •Занятие и освобождение одноканального устройства
- •Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.
- •Сбор статистики
- •Управление продолжительностью моделирования
- •Логика работы интерпретатора
- •1. Он находится в каком-либо конкретном блоке.
- •2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
- •1) Единица модельного времени определяется разработчиком модели, который задает все временные интервалы в одних и тех же, выбранных им, единицах;
- •Занятие и освобождение многоканального устройства (памяти)
- •Абсолютное и относительное время. Команды clear и reset
- •0 Относительное
- •Изменение значений параметров транзактов
- •Числовые и символьные имена. Команда equ
- •Блоки, изменяющие маршруты транзактов
- •Блок transfer
- •Блок test
- •Блок gate
- •Блок loop
- •Команды table и qtable. Таблицы. Блок tabulate
- •Сохраняемые величины и матрицы сохраняемых величин
- •Initial Xj, значение
- •Initial mXj( a,b), значение
- •Арифметические переменные. Команды variable (fvariable)
- •Генераторы случайных чисел
- •1. Разыгрывается случайное число, равномерно распределенное в диапазоне 0;1;
- •2. Полученное число преобразуется в эквивалентное ему значение, но уже принадлежащее интересующей нас выборке.
- •Функции gpssw. Команда function
- •Модель смо
- •Блоки для работы со списками пользователя
- •Моделирование сетей массового обслуживания
- •1,2 Узел – 1 канал,3 узел – 2 канала
- •1,2 Устройства – одноканальные, 3-4 канала
- •Моделирование захвата прибора
- •Логические переключатели
- •Булевские переменные. Команда bvariable
- •Обработка транзактов, принадлежащих одному ансамблю
Initial mXj( a,b), значение
Здесь имя и j - соответственно имя и номер матрицы; a и b - номера соответственно строки и столбца, задаваемые константами; значение - присваиваемое элементу матрицы начальное значение, задаваемое также константой.
Для изменения значений элементов матриц в процессе моделирования служит блок MSAVEVALUE (сохранить значение элемента матрицы), имеющий следующий формат:
MSAVEVALUE A,B,C,D
В поле A указывается имя или номер матрицы, после которого, как и в блоке SAVEVALUE, может стоять знак + или -. В полях B и C указываются номера соответственно строки и столбца, определяющие изменяемый элемент матрицы. В поле D указывается величина, используемая для изменения заданного элемента матрицы. Например:
MSAVEVALUE 5,3,2,X1
MSAVEVALUE MTAB+,P$ROW,P$COL,1
Матрицы имеют единственный СЧА с названием MX, ссылка на который записывается в следующем виде:
MX$имя( a,b)
MXj ( a,b)
Здесь имя и j - соответственно имя и номер матрицы; a и 1 - номера соответственно строки и столбца, задаваемые константами или ссылками на СЧА параметров транзактов. Например:
MX5(2,1)
MX$MTAB(P$ROW,P$COL)
Арифметические переменные. Команды variable (fvariable)
Значение арифметической переменной в GPSS определяется в результате вычисления арифметического выражения. В последнем могут быть следующие арифметические операции (в порядке приоритета);
- унарные операции
^ - возведение в степень
# - умножение
/ - деление
\ - целочисленное деление
@ - деление по модулю
+ - сложение
- - вычитание.
Арифметические переменные являются системными числовыми атрибутами, обращение к которым осуществляется как V$имя или Vj.
Арифметические переменные объявляются командами VARIABLE или FVARIABLE. Действие этих команд различаются только в режиме совместимости GPSS World c GPSS/PC, который в настоящем пособии не рассматривается.
Примеры:
ADVANCE V$tper
Var4 FVARIABLE V$Var1#V$Var2-V$Var3
Приведем пример с применением FVARIABLE.
Вычислительная система обрабатывает запросы, поступающие с автоматизированных рабочих мест (АРМ) с интервалами, распределенными по экспоненте со средним значением 1 мин.
Вычислительная сложность запросов распределена по нормальному закону распределения с математическим ожиданием 50000000 операций/с и среднеквадратическим отклонением 150000 операций. Производительность вычислительной системы 500000 операций/с.
Необходимо построить имитационную модель для определения вероятности обработки запросов за 1 час.
Для построения используем следующие идентификаторы.
Mat, SreOtk – математическое ожидание и среднеквадратическое отклонение;
ProIBM – производительность вычислительной системы;
VrMod – вр. Моделирования;
VerObr – вероятность обр. запросов;
VrObr – время обработки запроса;
IBMr – вычислительная система.
Если вычислительная система свободна, блок Gate стоящий сразу после блока GENERATE, пропускает запрос на обработку, которое вычисляется с помощью арифметической переменной VrObr.
Вероятность обработки запросов рассчитывается как отношение количества обработанных запросов N$ObrZap к количеству всех поступивших запросов N$KolZap.
IntZap Equ 120
Mat Equ 50000000
SreOtk Equ 150000
ProIBM Equ 500000
VrMod Equ 3600
VerObr Fvariable N$ObrZap/N$KolZap
VrObr Fvariable(Normal(2,Mat,SreOtk))/ProIBM
;сегмент имитации обработки запросов
GENERATE (Exponential(123,0,IntZap)) ; источник запросов
KolZap Gate NU IBM,PotZap ; система свободна?
SEIZE IBM ; да, тогда занять систему
Advance V$VrObr ;обработка запроса
Release IBM ;освободить систему
ObrZap Terminate ;освободить запросы
PotZap Terminate ;потерянные запросы
;сегмент задания времени моделирования
; и расчета результиата моделирования
Generate VrMod
SAVEVALUE VerObr,V$VerObr ; вероятность обработки запроса
Terminate 1
start 1
Приведем пример модели многоканальной СМО с пуассоновским входным потоком , экспоненциальным временем обслуживания и с отказами. Модель предназначена для оценки средних значений характеристик загрузки СМО и вероятности отказа в обслуживании из-за занятости всех каналов.(Наше пособие 2, стр. 6).
POTK FVARIABLE N$OUT/(N$FINAL+N$OUT)
OBR FVARIABLE (Exponential (321,0,210))
INITIAL X$TARR, 100
STO3 STORAGE 3
GENERATE (Exponential (123,0,X$TARR))
GATE SNF STO3, OUT
ENTER STO3
ADVANCE V$OBR
LEAVE STO3
TEST E TG1, 1, FINAL
SAVEVALUE POTK, V$POTK
FINAL TERMINATE 1
OUT TERMINATE 1
Вероятность отказа вычисляется как отношение числа заявок, прошедших через блок OUT ( число потерянных заявок) к общему числу заявок (потерянных плюс обслуженных и прошедших через блок FINAL), и присваивается сохраняемой величине POTK в момент прихода последнего транзакта, когда значение счетчика завершений (СЧА – TG1) равно 1.