Практическая работа № 1 - Северо

advertisement
МОДЕЛИРОВАНИЕ СИСТЕМ
Методические указания
к выполнению практических работ
для студентов направления подготовки 230100.62
«Информатика и вычислительная техника»
Составитель А. А. Будаева
ВЛАДИКАВКАЗ 2015
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФГБОУ ВПО СЕВЕРО-КАВКАЗСКИЙ ГОРНО-МЕТАЛЛУРГИЧЕСКИЙ ИНСТИТУТ
(ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ)
Кафедра автоматизированной обработки информации
МОДЕЛИРОВАНИЕ СИСТЕМ
Методические указания
к выполнению практических работ
для студентов направления подготовки 230100.62
«Информатика и вычислительная техника»
Составитель А. А. Будаева
Допущено редакционно-издательским советом
Северо-Кавказского горно-металлургического
института (государственного технологического
университета).
Протокол заседания РИСа № 1 от 17.01.2014 г.
ВЛАДИКАВКАЗ 2015
1
УДК 004.94.(07)
ББК 73
Б90
Рецензент:
Кандидат технических наук, доцент Северо-Кавказского горно-металлургического
института (государственного технологического университета)
Даурова А. А.
Б90
Моделирование систем. Методические указания к выполнению практических работ для студентов направления подготовки 230100.62 «Информатика и вычислительная техника» / Сост.: А. А. Будаева; Северо-Кавказский
горно-металлургический институт (государственный технологический
университет). – Владикавказ: Северо-Кавказский горно-металлургический
институт (государственный технологический университет). Изд-во «Терек»,
2015. – 106 с.
УДК 004.94.(07)
ББК 73
Методические указания содержат описание практических занятий, соответствующих рабочей программе по дисциплине «Моделирование систем»
для студентов направления подготовки «Информатика и вычислительная
техника» 230100.62.
Методические указания способствуют формированию практических
навыков моделирования систем с различным характером функционирования;
приобретению навыков и умений имитационного моделирования систем, обработки результатов моделирования, а также реализации и анализа моделей в
инструментальных средах (на примере программной среды GPSS).
Редактор: Иванченко Н. К.
Компьютерная верстка: Кравчук Т. А.
 Составление. ФГБОУ ВПО «Северо-Кавказский
горно-металлургический институт (государственный
технологический университет)», 2015
 Будаева А. А., составление, 2015
Подписано в печать 26.02.2015. Формат бумаги 60х84 1/16. Бумага офсетная. Гарнитура «Таймс».
Печать на ризографе. Усл. п.л. 6,16. Уч.-изд.л. 5,74. Тираж 20 экз. Заказ № ____.
Северо-Кавказский горно-металлургический институт (государственный
технологический университет). Изд-во «Терек».
Отпечатано в отделе оперативной полиграфии СКГМИ (ГТУ).
362021. Владикавказ, ул. Николаева, 44.
2
Оглавление
Практическая работа № 1. Создание модели непрерывной системы
в виде дифференциального уравнения ...............................................................5
Пример решения задачи .......................................................................................Варианты заданий .................................................................................................6
Контрольные вопросы ..........................................................................................7
Практическая работа № 2. Построение и исследование моделей
в виде конечных автоматов ..................................................................................8
Варианты заданий .................................................................................................11
Контрольные вопросы ..........................................................................................17
Практическое занятие № 3. Сети Петри. Построение моделей простых
объектов .................................................................................................................18
Варианты для самостоятельной работы .............................................................21
Контрольные вопросы ..........................................................................................22
Практическое занятие № 4. Создание и исследование датчика
случайных чисел (ДСЧ) ........................................................................................23
Задание 1 ................................................................................................................Задание 2 ................................................................................................................24
Задание 3 ................................................................................................................27
Задание 4 ................................................................................................................31
Контрольные вопросы ..........................................................................................44
Практическое занятие № 5. Преобразование СВ, равномерно
распределенной на интервале [0;1] в СВ с заданным законом распределения ....45
Метод обратных функций ....................................................................................Варианты заданий .................................................................................................47
Практическая работа № 6. Модели систем массового обслуживания .........58
Теоретические сведения .......................................................................................Пример выполнения задания ...............................................................................66
Задачи для самостоятельного решения...............................................................69
3
Практическая работа № 7. Имитационное моделирование систем
массового обслуживания ......................................................................................71
Теоретические сведения .......................................................................................Примеры моделирования с помощью языка GPSS ...........................................74
Варианты для самостоятельной работы .............................................................82
Контрольные вопросы ..........................................................................................86
Список литературы ...............................................................................................87
Приложение. Основные сведения о системе имитационного моделирования
GPSS/Word. Пояснения к работе .........................................................................88
4
Практическая работа №1
СОЗДАНИЕ МОДЕЛИ НЕПРЕРЫВНОЙ СИСТЕМЫ
В ВИДЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ
Цель: приобретение практических навыков построения моделей
непрерывно-детерминированных систем.
Задание: смоделировать непрерывную систему с помощью дифференциального уравнения.
Для проведения моделирования непрерывных систем или процессов
следует составить дифференциальное уравнение. Для его составления
необходимо установить зависимость между переменными величинами по
условиям физического или технического задания. Эта связь выражается в
виде зависимости между величинами и их бесконечно малыми приращениями. Часто эта зависимость заложена по определению в некоторой физической величине, например, скорости. При составлении уравнений
первого порядка эти приращения заменяются производными:
v
ds
S.
dt
Пример решения задачи
В некоторой емкости содержатся 100 л бензина и
1 л масла. При этом каждую минуту в емкость поступает 3 л бензина и вытекает 2 л смеси. Необходимо
определить, сколько масла будет находиться в емкости через 60 минут.
бензин
Решение
смесь
Пусть х – количество масла. Для упрощения решения задачи предположим, что масло равномерно перемешано в бензине, а поступающий бензин моментально перемешивается. Время будем
считать дискретным, и за единицу дискретизации примем 1 минуту. Тогда в момент dt в системе dx масла.
x
Концентрация масла –
.
101  t
2x
dt  dx .
За время dt вытекло –
101  t
5
2
 101  t dt   
2 ln(
dx
x
101  t
1
)  ln
101
x
101  t 2 1
1
(
)  x
 0, 4(л)
(101  60) 2
101
x
101
ВАРИАНТЫ ЗАДАНИЙ
1. Пусть в озере изначально 10 000 м3 и 1 000 кг соли, во время паводка каждый час в озеро поступает 100 м3 воды и вытекает 50 м3 соленой
воды. Сколько соли будет в озере через сутки?
2. Пусть в помещении гаража 55 м3 воздуха, пригодного для дыхания,
и 0,5 м3 СО. Работающий двигатель автомобиля добавляет каждую секунду 0,01 м3 СО, через вентиляцию уходит 0,1 м3 воздушной смеси из помещения. Какая будет концентрация СО через 20 минут?
3. Пусть в бассейне изначально 1 000 м3 воды, в бассейн каждую секунду поступает 0,01 м3 хлорки и 0,5 м3 воды и вытекает 0,3 м3 хлорированной воды. Какова будет концентрация хлорки через 0,5 часа?
4. Пусть в помещении бани при закрытой печной заслонке было 50 м3
воздуха. После закрытия заслонки каждую секунду начало образовываться 0,001 м3 угарного газа. Через вентиляцию стало выходить 0,01 м3 воздушной смеси. Какова будет концентрация угарного газа через 10 минут?
5. Пусть в абсолютно теплоизолированной емкости находится 30 м3
воды с температурой 20 0С, в течение 1 минуты из емкости вытекает
0,01 м3 воды и втекает 0,02 м3 кипятка с температурой 100 0С. Какова
температура воды в емкости будет через час?
6. Пусть в озере изначально 20 000 м3 и 3 000 кг соли, во время паводка каждый час в озеро поступает 200 м3 воды и вытекает 150 м3 соленой воды. Сколько соли будет в озере через сутки?
7. Пусть в помещении гаража 75 м3 воздуха пригодного для дыхания
и 0.8 м3 СО. Работающий двигатель автомобиля добавляет каждую секунду 0.03 м3 СО, через вентиляцию уходит 0,4 м3 воздушной смеси из помещения. Какая будет концентрация СО через 30 минут?
8. Пусть в бассейне изначально 2 000 м3 воды, в бассейн каждую секунду поступает 0,03 м3 хлорки и 0,7 м3 воды и вытекает 0,5 м3 хлорированной воды. Какова будет концентрация хлорки через 0,75 часа?
6
9. Пусть в помещении бани при закрытой печной заслонке было 60 м3
воздуха. После закрытия заслонки каждую секунду начало образовываться 0,002 м3 угарного газа. Через вентиляцию стало выходить 0,03 м3 воздушной смеси. Какова будет концентрация угарного газа через 15 минут?
10. Пусть в абсолютно теплоизолированной емкости находится 50 м3
воды с температурой 20 С, в течение 1 минуты из емкости вытекает
0,02 м3 воды и втекает 0,03 м3 кипятка с температурой 100 С. Какова
температура воды в емкости будет через час?
Контрольные вопросы
1. В чем особенность функционирования непрерывно-детерминированных систем?
2. Как описывается динамика развития непрерывно-детерминированных систем?
3. Параметры, необходимые для описания D-схемы.
7
Практическая работа №2
ПОСТРОЕНИЕ И ИССЛЕДОВАНИЕ МОДЕЛЕЙ
В ВИДЕ КОНЕЧНЫХ АВТОМАТОВ
Цель работы – изучение форм представления конечных детерминированных автоматов и их анализ.
Основные понятия и определения
Автомат представляет собой устройство, на которое подаются входные сигналы и снимаются выходные, имеющие внутренние состояния,
изменяемые в процессе его функционирования. Математические модели в
виде конечного автомата получили название F-схем от английского finite
automate – конечный автомат.
Абстрактный конечный автомат характеризуется шестью элементами:
конечным множеством Х входных сигналов (входной алфавит), конечным
множеством Y выходных сигналов (выходной алфавит), конечным множеством Z внутренних состояний (внутренний алфавит или алфавит состояний), функцией переходов φ(χ, z), функцией выходов ψ(χ, z) и
начальным состоянием Z 0 (z0, z). Таким образом, конечный автомат
определяется шестеркой.
В зависимости от закона функционирования абстрактные автоматы
подразделяются на автоматы первого и второго рода.
Для F-автомата первого рода, называемого автоматом Мили, можно
записать:
Для F-автомата второго рода новое состояние и выходной сигнал
определяются как:
Автомат второго рода, выходной сигнал которого определяется его
состоянием y (t) =ψ(t)], называется автоматом Мура.
Для задания конечного F-автомата необходимо описать все элементы
множества
, т. е. его алфавиты, функции и начальное
состояние в момент времени t = 0.
Существует несколько способов задания F-автомата, из которых
наиболее часто используются табличный, графический и матричный.
8
Табличный способ описания абстрактных автоматов определяет таблицы переходов и выходов, в которых строки соответствуют входным
сигналам Х автомата, а столбцы – его состояниям Z. На пересечении i-ой
строки и k-го столбца таблицы переходов располагается значение  (X j,
Z k ) функции переходов, а в таблице выходов – значение ψ(Χ,, Z k ) функции выходов (таблицы 1 и 2).
Таблица 1
Функции переходов
Таблица 2
Функции выходов
Для F-автомата Мура обе таблицы можно совместить и получить таблицу переходов (таблица 3), в которой ставится взаимнооднозначное соответствие между выходными сигналами автомата его внутренними состояниями.
Таблица 3
Функции переходов и выходов
9
Графическое представление автомата использует понятие ориентированного графа, в котором вершины соответствуют состояниям автомата, а
дуги – переходам из одного состояния в другое. Дуги, соединяющие две
вершины Z ί Η Z j, помечаются входным сигналом X k , вызывающим переход автомата из состояния Z ι в состояние Zj. Таким образом, задается
функция переходов. Аналогично определяется и функция выходов – дуги
графа помечаются соответствующими выходными сигналами.
При решении задач моделирования нередко используют матричное
задание конечного автомата. Матрица соединений автомата C = || Cij || является квадратной, размером N x N, где N – число состояний автомата.
Строки матрицы соответствуют исходным состояниям автомата, столбцы
– состояниям перехода. На пересечении i-ой строки и j-го столбца указывается пара X k / Y s , соответствующая входному сигналу, вызывающему переход автомата из состояния в состояние Z , и выходному
сигналу, выдаваемому при этом переходе. Для автомата Мура элементы
содержат только входные сигналы, а выход автомата описывается вектором выходов:
Порядок выполнения работы
1. Пусть задан абстрактный автомат
.
В предположении, что автомат является автоматом первого рода, построить:
а) таблицы переходов и выходов;
б) графоид;
в) матрицу соединений.
2. Пусть дан автомат Мура
. Построить:
а) отмеченную таблицу переходов;
б) графоид;
10
в) матрицу соединений;
г) автомат Мили, интерпретирующий автомат Мура (таблицы
переходов и выходов, алгебраическую форму).
3. Для автомата Мили постройте эквивалентный ему автомат Мура.
Для полученного автомата Мура постройте эквивалентный ему автомат
Мили.
ВАРИАНТЫ ЗАДАНИЙ
Вариант 1
1.
отображение F множества Q в себя определяется следующим образом:
,
, при-
2.
чем
3.
Вариант 2
11
Вариант 3
12
Вариант 4
Вариант 5
13
Вариант 6
Вариант 7
14
Вариант 8
15
Вариант 9
Вариант 10
16
Контрольные вопросы
1. Каким образом представляются детерминированные и вероятностные автоматы в виде ориентированных графов?
2. Как на основе графовой модели можно составить формализованное
описание конечного детерминированного (вероятностного) автомата?
3. Каким образом можно представить стохастическую дискретную
систему (вероятностный автомат) в виде детерминированной дискретной
системы (детерминированного автомата) со случайным входом?
17
Практическое занятие №3
СЕТИ ПЕТРИ.
ПОСТРОЕНИЕ МОДЕЛЕЙ ПРОСТЫХ ОБЪЕКТОВ
Цель занятия:
1. Изучить основные элементы сетей Петри, правила функционирования сети, освоить методику построения моделей параллельных процессов и систем.
2. Освоить алгоритм построения дерева достижимости маркировок
для заданной сети Петри, а также методику исследования основных
свойств сетей с помощью построенного дерева.
Подготовка
Для выполнения работы необходимо знать:
 основные элементы сетей Петри: позиция, переход, дуга, фишка, а
также правила срабатывания переходов сети;
 представление последовательных, конвейерных, альтернативных,
параллельных процессов, потребляемых, возобновляемых и частичнопотребляемых ресурсов, динамику сети с кратными дугами.
 основные свойства сетей Петри: ограниченность, безопасность, достижимость, живость, стойкость, а также свойства псевдомаркировок и
алгоритм построения дерева достижимости маркировок сети Петри.
Задание 1
Изучить правила срабатывания переходов сети: для заданной сети
Петри (фрагмента сети) указать возбужденные переходы и маркировки,
полученные в результате срабатывания разных переходов.
Пример
Переход разрешен
Переход не разрешен
18
Задание 2
Построить граф достижимых маркировок заданной сети Петри.
Пример
Задана сеть Петри следующего вида.
Граф достижимости заданной сети имеет вид:
Задание 3
С помощью дерева достижимости маркировок определить, является
ли заданная сеть ограниченной, консервативной, стойкой, живой.
Пример для сети из задания 2:
- сеть неограниченная, так как дерево содержит символы ω;
- сеть потенциально живая, так как есть дуги, обозначенные символами каждого из переходов;
- сеть не живая, так как дерево содержит терминальные (тупику)
вершины;
19
- сеть не стойкая, так как срабатывание перехода t3 в маркировке
(0,0,1) делает невозможным дальнейший запуск возбужденного в этой
маркировке перехода t4.
Задание 4
С помощью дерева достижимости маркировок определить достижимость указанных маркировок в сети.
Пример для сети задания 2:
- маркировка (0, 7, 1) достижима в сети; действительно, дерево содержит покрывающую маркировку (0, ω, 1) по которой может быть построена последовательность срабатывания переходов t1t2, которая переводит сеть в указанную маркировку;
- маркировка (0, 1, 7) недостижима в сети, так как дерево не содержит для нее покрывающую маркировку.
20
ВАРИАНТЫ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
21
Контрольные вопросы
1. Перечислите основные элементы сети Петри.
2. Укажите основные области применения сетей Петри.
3. Сформулируйте условие возбуждения перехода сети Петри.
4. В чем заключается срабатывание перехода сети Петри?
5. Опишите коротко процесс функционирования сети Петри.
6. Укажите способы наглядного представления динамики сети Петри.
7. Что представляет собой графа достижимых маркировок сети Петри?
8. Какие сети Петри называют ординарными?
9. Укажите особенности построения псевдомаркировок сети Петри.
10.Сформулируйте основные шаги алгоритма построения дерева достижимости маркировок сети Петри.
11. Вершины каких типов содержит дерево достижимости маркировок?
12. В каком случае конкретную маркировку позиции заменяют символом ω?
13. Какие свойства сетей Петри позволяет определить дерево достижимости маркировок?
14. Каким образом можно определить живость сети с помощью дерева достижимости маркировок?
15. Каким образом можно определить достижимость маркировки с
помощью дерева достижимости маркировок?
16. Какой размер может иметь дерево достижимости маркировок?
22
Практическое занятие №4
СОЗДАНИЕ И ИССЛЕДОВАНИЕ
ДАТЧИКА СЛУЧАЙНЫХ ЧИСЕЛ (ДСЧ)
Цель работы: изучение основных методов генерации последовательностей случайных чисел и их исследование.
Задание 1
Построить среднеквадратичный датчик случайных чисел.
Пример решения задачи
Построить среднеквадратичный датчик случайных чисел с Х0 = 5639.
Обозначим число 5639 как последовательность чисел m0 m1m2 m3 , тогда
следующими числами будут:
Х1 = (m1m2 ) 2 = (63) 2 = 3969
Х2 = (96) 2 = 9216
Х3 = (21) 2 = 0441
Х4 =(44) 2 = 1936
Х5 =(93) 2 = 8649
Х6 =(64) 2 = 4096
Х7 =(9) 2 = 0081
Х8 =(8) 2 = 0064
Х9 =(6) 2 = 0036
Х10=(3) 2 = 0009
Х11=(0) 2 = 0000
Для нормирования ДСЧ разделим каждое число на 10000, чтобы оно
стало меньше единицы.
В результате нормирования ДСЧ будет иметь вид:
0 0,5639 0,3969 0,9216 0,0441 0,1936 0,8649 0,4096 0,0081
0,0064 0,0036 0,0009
Варианты к заданию 1
1. Построить среднеквадратичный датчик случайных чисел с Х0 = 12345678
2. Построить среднеквадратичный датчик случайных чисел с Х0 =12654378
3. Построить среднеквадратичный датчик случайных чисел с Х0 =12563478
4. Построить среднеквадратичный датчик случайных чисел с Х0 =12364578
5. Построить среднеквадратичный датчик случайных чисел с Х0 =12635478
6. Построить среднеквадратичный датчик случайных чисел с Х0 =12637878
23
7. Построить среднеквадратичный датчик случайных чисел с Х0 =12368778
8. Построить среднеквадратичный датчик случайных чисел с Х0 =12564378
9. Построить среднеквадратичный датчик случайных чисел с Х0 =12872178
10. Построить среднеквадратичный датчик случайных чисел с Х0=12878978
11. Построить среднеквадратичный датчик случайных чисел с Х0 =12868578
12. Построить среднеквадратичный датчик случайных чисел с Х0 = 12883478
13. Построить среднеквадратичный датчик случайных чисел с Х0 = 12348878
14. Построить среднеквадратичный датчик случайных чисел с Х0 = 12835678
15. Построить среднеквадратичный датчик случайных чисел с Х0 = 12329778
16. Построить среднеквадратичный датчик случайных чисел с Х0 = 12973278
17. Построить среднеквадратичный датчик случайных чисел с Х0 = 12912378
18. Построить среднеквадратичный датчик случайных чисел с Х0 = 12198878
19. Построить среднеквадратичный датчик случайных чисел с Х0 = 12824578
20. Построить среднеквадратичный датчик случайных чисел с Х0 = 12894378
21. Построить среднеквадратичный датчик случайных чисел с Х0 = 12278478
22. Построить среднеквадратичный датчик случайных чисел с Х0 = 12578278
23. Построить среднеквадратичный датчик случайных чисел с Х0 = 12748378
24. Построить среднеквадратичный датчик случайных чисел с Х0 = 12717978
25. Построить среднеквадратичный датчик случайных чисел с Х0 = 12276978
26. Построить среднеквадратичный датчик случайных чисел с Х0 = 12249578
27. Построить среднеквадратичный датчик случайных чисел с Х0 = 12639278
28. Построить среднеквадратичный датчик случайных чисел с Х0 = 12649178
29. Построить среднеквадратичный датчик случайных чисел с Х0 = 12947278
30. Построить среднеквадратичный датчик случайных чисел с Х0 = 12963878
Задание 2
Построить конгруэнтный мультипликативный ДСЧ.
Конгруэнтные датчики случайных чисел являются достаточно распространенными. Случайная последовательность формируется в соответствии со следующим алгоритмом:
Хn = (а  Хn-1 + c) mod m,
где а, с – специально подобранные коэффициенты.
Операция mod m – операция выделения остатка, полученного в результате деления на m.
Наиболее часто используемая разновидность конгруэнтных ДСЧ –
это конгруэнтный мультипликативный ДСЧ:
Хn = (а  Хn-1 ) mod2 m
24
В качестве m обычно выбирается длина разрядной сетки ЭВМ. Х0
определяет всю последовательность случайных чисел, изменяя Х0, изменяется последовательность.
Пример решения задачи
Построить конгруэнтный мультипликативный ДСЧ с:
Х0 = 4421,
а = 3881,
m = 6.
Вычисляя по формуле Хn = (а  Хn-1) mod 2m, получаем следующие
значения:
Х1 = (а  Х0 ) mod 2m= (3881  4421) mod 2 6 = 13
Х2 = (3881  13) mod 2 6 = 21
6
Х3 = (3881  21) mod 2 = 29
Х4 = (3881  29) mod 2 6 = 37
Х5 = (3881  37) mod 2 6 = 45
Х6 = (3881  45) mod 2 6 = 53
Х7 = (3881  53) mod 2 6 = 61
Х8 = (3881  61) mod 2 6 = 5
Х9 = (3881  5) mod 2 6 = 13
На числе Х9 ДСЧ начинает повторяться, следовательно, последним
числом последовательности СЧ будет Х8.
В результате нормирования ДСЧ (деления каждого числа на 100) будет иметь вид (Х0 не включаем в эту последовательность):
0,13 0,21 0,29
0,37 0,45
0,53 0,61 0,05
Варианты к заданию 2
1. Построить конгруэнтный мультипликативный датчик с
Х0 = 2431, а = 3561, m = 6.
2. Построить конгруэнтный мультипликативный датчик с
Х0 = 4312, а = 3821, m = 6.
3. Построить конгруэнтный мультипликативный датчик с
Х0 = 6472, а = 4827, m = 6.
25
4. Построить конгруэнтный мультипликативный датчик с
Х0 = 3927, а = 7293, m = 6.
5. Построить конгруэнтный мультипликативный датчик с
Х0 = 6291, а = 1926, m = 6.
6. Построить конгруэнтный мультипликативный датчик с
Х0 = 3729, а = 9273, m = 6.
7. Построить конгруэнтный мультипликативный датчик с
Х0 = 4728, а = 8274, m = 6.
8. Построить конгруэнтный мультипликативный датчик с
Х0 = 8921, а = 1298, m = 6.
9. Построить конгруэнтный мультипликативный датчик с
Х0 = 6278, а = 8726, m = 6.
10. Построить конгруэнтный мультипликативный датчик с
Х0 = 4623, а = 3264, m = 6.
11. Построить конгруэнтный мультипликативный датчик с
Х0 = 7634, а = 4367, m = 6.
12. Построить конгруэнтный мультипликативный датчик с
Х0 = 6743, а = 3476, m = 6.
13. Построить конгруэнтный мультипликативный датчик с
Х0 = 8346, а = 6438, m = 6.
14. Построить конгруэнтный мультипликативный датчик с
Х0 = 3216, а = 6123, m = 6.
15. Построить конгруэнтный мультипликативный датчик с
Х0 = 8763, а = 3678, m = 6.
16. Построить конгруэнтный мультипликативный датчик с
Х0 = 7623, а = 3267, m = 6.
17. Построить конгруэнтный мультипликативный датчик с
Х0 = 5734, а = 4375, m = 6.
18. Построить конгруэнтный мультипликативный датчик с
Х0 = 5782, а = 2875, m = 6.
19. Построить конгруэнтный мультипликативный датчик с
26
Х0 = 2764, а = 4672, m = 6.
20. Построить конгруэнтный мультипликативный датчик с
Х0 = 2347, а = 7432, m = 6.
21. Построить конгруэнтный мультипликативный датчик с
Х0 = 6472, а = 2746, m = 6.
22. Построить конгруэнтный мультипликативный датчик с
Х0 = 8345, а = 5438, m = 6.
23. Построить конгруэнтный мультипликативный датчик с
Х0 = 7983, а = 3897, m = 6.
24. Построить конгруэнтный мультипликативный датчик с
Х0 = 8273, а = 3728, m = 6.
25. Построить конгруэнтный мультипликативный датчик с
Х0 = 6534, а = 4356, m = 6.
26. Построить конгруэнтный мультипликативный датчик с
Х0 = 6823, а = 3286, m = 6.
27. Построить конгруэнтный мультипликативный датчик с
Х0 = 9853, а = 3589, m = 6.
28. Построить конгруэнтный мультипликативный датчик с
Х0 = 7893, а = 3987, m = 6.
29. Построить конгруэнтный мультипликативный датчик с
Х0 = 2394, а = 4932, m = 6.
30. Построить конгруэнтный мультипликативный датчик с
Х0 = 3487, а = 7843, m = 6.
Задание 3
Провести сравнительный анализ полученных ДСЧ:
 определить длину отрезка апериодичности;
 провести исследование случайных чисел последовательности на независимость, используя коэффициент автокорреляции;
 провести исследование распределения случайных чисел на “равномерность”.
Простейшая проверка качества СЧ заключается в определении оценок неслучайных числовых характеристик генерируемых СЧ и сравнении
27
их с теоретическими. Оценки математического ожидания и дисперсии
можно вычислить по формулам:
1 N
   i ;
N i1
1 N 2 1 N
D()   i  ( i ) 2 ,
N i1
N i1
здесь N – общее число используемых при моделировании СЧ, достаточное для получения заданной точности.
При выбранном значении N с доверительной вероятностью , близкой к 1, оценки должны находиться в определенных пределах. Так,
например, при  = 0,95 пределы для оценки математического ожидания:
1
1
   0,5 
.
3N
3N
0,5 
Одним из основных требований к последовательности СЧ является
независимость входящих в нее чисел. Ввиду трудоемкости проверку на
независимость СЧ заменяют проверкой на некоррелированность. В общем случае корреляционный момент дискретных СВ X и Y определяется
по формуле:
K xy   ( xi  mx )( yi  my ) pij ,
i
j
здесь pij – вероятность того, что двумерная СВ (X, Y) примет значение ( xi , yi ).
Корреляционный момент K xy характеризует рассеивание СВ Х и Y и
их линейную статическую зависимость. Если случайные числа независимы, то K xy = 0. Коэффициент корреляции СВ находится путем деления
K xy на среднеквадратическое отклонение  x и  у т. е.
 xу 
K xy
xу
.
Для нахождения оценки коэффициента корреляции при исследовании
независимости СЧ на ЭВМ удобно следующее выражение:
1 N 
1
i i  

N   i 1
( N  ) 2
xy () 
[i ][i  ]
28
N 
N 
 
i 1
i
i 1
i 
,
(1)
где
N 
1 N  2
1
i 
(  )2 ,

2  i
N   i 1
( N  ) i 1
(2)
N 
1 N  2
1
[i ] =
 i  
(  )2 .

2  i 
N   i 1
( N  ) i 1
(3)
[i ] 
При достаточно большом N и любом   0 , с доверительной вероятностью  справедливо соотношение
()  
1
N.
Если найденное эмпирическое значение () располагается в указанных пределах, то с вероятностью  можно утверждать, что полученные
СЧ удовлетворяют гипотезе некоррелированности.
Важными характеристиками качества псевдослучайной последовательности квазиравномерных чисел является период P и отрезок апериодичности L. Экспериментально значения P и L находят следующим образом: задается достаточно большое число N = (1…5)10 6 и запускается
программа генерации ПСЧ с целью определения  N . После этого программа запускается повторно с начального значения 0 и проверяется истинность события 0 =  N . Для некоторых значений 1 и  2 условие оказывается выполненным, тогда P =  2 – 1 ( i1  i2  N ) .
Далее осуществляется запуск программы с начальными числами  0 и
 р и фиксируется минимальный номер i  i3 , при котором выполнено событие t  i p ; тогда отрезок апериодичности L = i3  P. Если в пределах
отрезка [0, N] событие  i =  N ложно при всех значениях i < N, то L > N.
При использовании последовательностей максимальной длины P = L эти
параметры находятся, как правило, теоретически. При необходимости использования большого количества СЧ, в процессе решения одной задачи,
можно периодически или случайно “возмущать” программу, например,
использовать спаренные программы, различающиеся своими алгоритмами.
Пример решения задачи
Провести сравнительный анализ ДСЧ:
0,123 0,099 0,003 0,043 0,075 0,091
0,051 0,083 0,027 0,059 0,115 0,067.
29
0,011 0,035 0,107
0,019
Запишем последовательность СЧ по-другому:
0,123
0,099
0,003
0,043
0,075
0,091
0,011
0,035
0,107
0,019
0,051
0,083
0,027
0,059
0,115
0,067
1. Длина отрезка апериодичности: L = 16.
2. Для нахождения оценки коэффициента корреляции при исследовании независимости СЧ воспользуемся выражениями [1, 2, 3], где
  8, N = 16.
1
(0,1232  0,0992  0,0032  0,0432  0,0752  ...  0,0352 ) ... 
16  8
1
 ... 
(0,123  0,099  0,003  0,043  0,075  ...  0,035) 2
2
(16  8)
[i ] 
[i ]  0,04068
1
(0,107 2  0,0192  0,051 2 0,0832  0,027 2  ...  0,067 2  ... 
[i ]  8
1
 ...  (0,107  0,019  0,051  0,083  0,027  ...  0,067) 2
64
[i ]  0,03236
1
1
(0,123  0,107  ...  0,035  0,067)  (0, 48  0,528)
64
xy ()  8
,
0,04068  0,03236
xy ()  0,00018
Принимая доверительную вероятность  = 0,95, проверим гипотезу
некоррелированности:
30
()  
1
N
Так как найденное значение xy () < 0,2375, то с вероятностью
 = 0,95 можно утверждать, что полученные СЧ удовлетворяют гипотезе
некоррелированности.
3. Для исследования распределения случайных чисел на «равномерность» найдем оценку математического ожидания:
1 N
   i ;
N i1

1
( 0,123  0,099  0,003  0,043  0,075  0,091  ...  0,115  0,067)
16
  0,063
При выбранном значении N с доверительной вероятностью  = 0,95
оценка математического ожидания должна находиться в пределах:
0,5 
1
1
   0,5 
.
3N
3N
Найденная оценка математического ожидания находится в данных
пределах, следовательно, последовательность СЧ распределена равномерно.
Задание 4
Провести сравнительный анализ ДСЧ на “равномерность” с помощью
критериев согласия Колмогорова и Пирсона.
Часто возникает необходимость проверки распределения случайных
чисел на соответствие более сложным законам распределения. Для этого
используют критерии согласия.
Критерий согласия Колмогорова сравнивает теоретические и эмпирические функции распределения. В основе лежит функция выборки
D  sup | Fn ( x)  F0 ( x) |
  x  ,
31
F(x)
причем Fn (x) – эмпирическая функция распределения, а F0 ( x) – гипотетическое распределение. В процессе сравнения вычисляют максимум
расхождения между этими функциями.
Используя контрольную величину   D n , где n – число СВ, определяют по таблице -распределения Колмогорова, вероятность того, что
эмпирические и теоретические законы распределения совпадают, а существующая разница D возникла из-за ограниченности количества СВ в последовательности.
Критерий согласия 2 (Критерий Пирсона) основан на сравнении
функций плотности вероятности теоретической, эмпирической. Эмпирическая функция плотности вероятности графически изображается в виде
гистограммы.
X
Рис. 1. Гистограмма эмпирических вероятностей попадания
Количество отрезков гистограммы определяется по формуле:
k  lg n  1 .
Количество СЧ, попавших в отрезок:
Pi* 
mi
.
n
Pi  Pi* 2
Контрольная величина   n (
) .
P
i 1
i
Число степеней свободы
k
2
Г = к – S,
где к – количество отрезков гистограммы,
32
S – число независимых условий, накладываемых на конкретный закон
распределения.
По таблице 2 -распределения, используя полученные значения 2 и
Г, вычисляют вероятность того, что теоретический и эмпирический законы распределения совпадают.
Пример решения задачи
Провести сравнительный анализ ДСЧ на «равномерность» с помощью критериев согласия Колмогорова и Пирсона:
0,437
0,895
0,243
0,315
0,738
0,92
0,38
0,015
0,137
0,229
0,578
0,227
0,605
0,306
0,827
0,663
0,553
0,708
0,066
0,629
0,411
0,585
0,109
0,873
0,493
0,956
0,218
0,573
0,504
0,628
0,494
0,851
0,3
0,497
0,177
0,169
0,548
0,696
0,452
0,741
0,155
0,127
0,509
0,132
0,341
0,311
0,19
0,598
0,62
0,079
0,785
0,688
0,952
0,368
0,808
0,178
0,855
0,805
0,641
0,61
0,606
0,028
0,802
0,284
0,457
0,625
0,576
0,545
0,072
0,001
0,056
0,527
0,895
0,098
0,566
0,912
0,409
0,654
0,101
0,132
0,798
0,744
0,094
0,184
0,728
0,466
0,105
0,863
0,864
0,145
0,361
0,931
0,555
0,668
0,153
0,227
0,747
0,722
0,402
0,229
1. Проводим сравнительный анализ ДСЧ на «равномерность» с помощью критерия согласия Пирсона.
Строим гистограмму эмпирической вероятности попадания
Рис. 2. Гистограмма эмпирических вероятностей попадания
33
Вероятности распределения
0.15
0.16
0.13
0.14
0.12
0.1
0.1
0.09
0.1
0.1
0.1
0.1
0.1
0.08
0.07
0.08
0.1 0.1
0.13
0.11
0.1
0.1
0.09
0.1
0.05
0.06
0.04
0.02
0
1
2
3
4
5
6
Теоретическая вероятность
7
8
9
10
Эмпирическая вероятность
Рис. 3. Гистограмма эмпирических и теоретических вероятностей
попадания результатов в заданный интервал
Pi – это вероятность того, что числа имеют равномерное распределение на интервале (0, 1).
Вычислим
10
Pi  Pi* 2
Pi  Pi* 2
  n (
) =100 (
) 
P
P
i 1
i 1
i
i
k
2
2
2
2
2
2
 0,1  0,09   0,1  0,15   0,1  0,07   0,1  0,08   0,1  0,1 
 2
   0,1    0,1    0,1    0,1  
0,1

 
 
 
 

2
2
2
 0,1  0,13   0,1  0,11   0,1  0,05 
2 
   0,1   
 
0,1
0,1

 
 

 0,02  0,25  0,09  0,04  0,18  0,01  0,25  0,84
Взяв Г = 3, находим по таблице 2 -распределения, что с вероятностью 0,85 теоретический и эмпирический законы распределения совпадают.
2. Проводим сравнительный анализ ДСЧ на «равномерность» с помощью критерия согласия Колмогорова.
Проведем сравнение теоретической и эмпирической функций распределения.
34
Рис. 4. График функций распределения
Вычислим разницу теоретической и эмпирической функций распределения:
D = sup | Fn ( x)  F0 ( x) | = sup | 0,24  0,09 | = 0,15
По формуле   D n вычислим  :
 = 0,15 100 = 1,5
По таблице  -распределения Колмогорова определили, что с вероятностью  = 0,9778 эмпирические и теоретические законы распределения совпадают.
ВАРИАНТЫ К ЗАДАНИЮ 4
Провести сравнительный анализ ДСЧ на «равномерность» с помощью критериев согласия Колмогорова и Пирсона:
35
Вариант 1.
0,268 0,193 0,585 0,35 0,823 0,174 0,71 0,304 0,091 0,147 0,989
0,119 0,892 0,532 0,602 0,166 0,451 0,057 0,783 0,52 0,876 0,956
0,539 0,462 0,862 0,78 0,997 0,611 0,266 0,84 0,376 0,677 0,882
0,276 0,588 0,838 0,485 0,744 0,599 0,735 0,572 0,152 0,425 0,517
0,752 0,169 0,492 0,7
0,148 0,142 0,693 0,427 0,967 0,153 0,822
0,191 0,817 0,156 0,732 0,28 0,682 0,722 0,123 0,835 0,517 0,426
0,949 0,55 0,472 0,847 0,456 0,983 0,739 0,196 0,839 0,501 0,027
0,573 0,531 0,043 0,658 0,842 0,11 0,314 0,286 0,14 0,835 0,6
0,253 0,162 0,806 0,211 0,553 0,114 0,543 0,427 0,696 0,361 0,221
0,599
Вариант 2.
0,725 0,694 0,655 0,098 0,05 0,464 0,728 0,68 0,372 0,05 0,17
0,311 0,212 0,485
0,44 0,606 0,401 0,843 0.623 0,053 0,864
0,306 0,027 0,391 0,031 0,858 0,402 0,612 0,875 0,595 0,793 0,591
0,569 0,673 0,01 0,342 0,771 0,87 0,726 0,894 0,536 0,78 0,197
0,797 0,849 0,629 0,617 0,251 0,629 0,617 0,251 0,788 0,714 0,082
0,855 0,307 0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371 0,223
0,232 0,971 0,023 0,152 0,007 0,644 0,415 0,091 0,699 0,658 0,535
0,054 0,26 0,863 0,087 0,864 0,293 0,645 0,829
0,872 0,913 0,44 0,354 0,428 0,006 0,774 0,09 0,684 0,154 0,048
0,019 0,648 0,914 0,432 0,243
Вариант 3.
0,138 0,55 0,463 0,301 0,343 0,608 0,984 0,151 0,712 0,776 0,621
0,688 0,567 0,548
0,246 0,493 0,67 0,613 0,799 0,989 0,629
0,591 0,506 0,45 0,94 0,252 0,73 0,625
0,641 0,556 0,446
0,996 0,601 0,173 0,332 0,654 0,427 0,679 0,498 0,803 0,005 0,376
0,827 0,891 0,651 0,734 0,957 0,363 0,905 0,455 0,869 0,039 0,936
0,165 0,117 0,307 0,118 0,58 0,732 0,67 0,809 0,997 0,204 0,388
0,581 0,96 0,382 0,581 0,96 0,382
0,121 0,046 0,761 0,002
0,426 0,461 0,749 0,559 0,922 0,857 0,491 0,747 0,256 0,792
0,553 0,522 0,704 0,732 0,914 0,797 0,701 0,05 0,184 0,156 0,078
0,119 0,248 0,814
Вариант 4.
0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371 0,223 0,232 0,971
0,023 0,152 0,007 0,644 0,415 0,091 0,699 0,658 0,535 0,054 0,26
0,863 0,087 0,864 0,293 0,645 0,829
0,872 0,913 0,44 0,354
0,428 0,006 0,774 0,09
0,684 0,154 0,048 0,019 0,648 0,914
36
0,425 0,517 0,752
0,153 0,822 0,191
0,517 0,426 0,949
0,174 0,71 0,304
0,553 0,592 0,714
0,119 0,248 0,814
0,169
0,817
0,55
0,091
0,832
0,662
0,492 0,7
0,156 0,732
0,472 0,847
0,147 0,989
0,914 0,797
0,053
0,148 0,142 0,693
0,28 0,682 0,722
0,268 0,193 0,585
0,119 0,892 0,532
0,781 0,55 0,284
0,427 0,967
0,123 0,835
0,35 0,823
0,156 0,078
Вариант 5.
0,647 0,264 0,46 0,352 0,477 0,404 0,028 0,597 0,432 0,383 0,01
0,868 0,7
0,602
0,56 0,378 0,937 0,964 0,584 0,407 0,499
0,875 0,782 0,588 0,279 0,874 0,301 0,867 0,191 0,89 0,029 0,059
0,257 0,116 0,495 0,049 0,338 0,516 0,814 0,803 0,898 0,269 0,229
0,875 0,845 0,041 0,184 0,449 0,894 0,546 0,523 0,999 0,867 0,147
0,284 0,974 0,717 0,645 0,736 0,125 0,375 0,915 0,032 0,449 0,229
0,157 0,502 0,754 0,213 0,771 0,557 0,852 0,539 0,869 0,226 0,371
0,035 0,398 0,325 0,202 0,125 0,894 0,222 0,56
0,424 0,864 0,267 0,682 0,959 0,788 0,818 0,136 0,104 0,256 0,978
0,126 0,448 0,819 0,634 0,155
Вариант 6.
0,412 0,601 0,476 0,951 0,835 0,804 0,87 0,937 0,934 0,183 0,473
0,027 0,45 0,027
0,455 0,136 0,213 0,797 0,658 0,781 0,842
0,499 0,076 0,356 0,41 0,288 0,745 0,058 0,359 0,159 0,129 0,181
0,249 0,347 0,665 0,933 0,105 0,556 0,895 0,872 0,388 0,679 0,281
0,982 0,595 0,132 0,601 0,355 0,478 0,948 0,983 0,514 0,898 0,326
0,571 0,348 0,29 0,923 0,807 0,687 0,765 0,722 0,342 0,484 0,838
0,547 0,569 0,64 0,76 0,158 0,786 0,438 0,509 0,069 0,226 0,982
0,616 0,398 0,368 0,202 0,86 0,242 0,052 0,176
0,224 0,111 0,267 0,182 0,959 0,789 0,918 0,444 0,344 0,216 0,578
0,626 0,248 0,719 0,555 0,665
Вариант 7.
0,863 0,747 0,38 0,551 0,956 0,177 0,132 0,957 0,028 0,056 0,132
0,864 0,72 0,015
0,708 0,218 0,225 0,997 0,758 0,711 0,942
0,499 0,276 0,456 0,581 0,211 0,845 0,358 0,359 0,159 0,129 0,181
0,249 0,347 0,665 0,933 0,105 0,556 0,895 0,872 0,388 0,679 0,169
0,341 0,368 0,802 0,521 0,797 0,147 0,408 0,137 0,005 0,573 0,548
0,311 0,808 0,289 0,895 0,744 0,361 0,229 0,221 0,142 0,584 0,666
0,947 0,609 0,164 0,72 0,258 0,186 0,338 0,519 0,269 0,126 0,992
0,676 0,498 0,358 0,102 0,89 0,742 0,352 0,976
0,024 0,141 0,567 0,882 0,909 0,789 0,777 0,442 0,354 0,916 0,678
0,226 0,348 0,819 0,755 0,065
37
Вариант 8.
0,129 0,181
0,679 0,281
0,898 0,326
0,498 0,358
0.909 0,789
0,601 0,476
0,45 0,027
0,356 0,41
0,517 0,426
0,174
0.249 0,347 0,665 0,933 0,105 0,556 0,895 0,872
0,982 0,595 0,132 0.601 0,355 0,478 0,948 0,983
0,571 0,348 0,186 0,338 0,519 0,269 0.126 0,992
0,102 0,89 0,742 0,352 0,976 0,024 0,141 0,567
0,777 0,442 0,354 0,916 0,678 0,226 0,348 0,819
0,951 0.835 0,804 0,87 0,937 0,934 0,183 0,473
0,455 0,136 0,213 0,797 0.658 0,781 0,842 0,499
0,288 0,745 0,058 0,732 0,28 0,682 0,722 0,123
0,949 0,55 0,472 0,847 0,268 0,193 0,585 0,35
0,388
0,514
0,676
0,882
0,412
0,027
0,076
0,835
0,823
Вариант 9.
0,197 0,797 0,849 0,629 0,617 0,251 0,629 0,617 0,251 0,788 0,714
0,082 0,855 0,307 0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371
0,223 0,232 0,971 0,023 0,152 0,007 0,268 0,193 0,585 0,35
0,823 0,174 0,71 0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,602
0,166 0,451 0,057 0,783 0,52 0,876 0,956 0,539 0,462 0,862 0,78
0,997 0,611 0,229 0,875 0,845 0,041 0,184 0,449 0,894 0,546 0,523
0,999 0,867 0,147 0,284 0,974 0,717 0,645 0,736 0,125 0,375 0,915
0,032 0,449 0,229 0,157 0,502 0,754 0,213 0,771 0,732 0,28 0,682
0,722 0,123 0,835 0,517 0,426 0,949 0,55 0,472 0,847 0,268 0,193
0,025 0,149
Вариант 10.
0,585 0,35 0,71 0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,642
0,879 0,412 0,946 0,342 0,603 0,894 0,236 0,532 0,568 0,511 0,971
0,702 0,104 0,466 0,149 0,112 0,69 0,491 0,653 0,64 0,831 0,878
0,962 0,726 0,374 0,853 0,744 0,236 0,784 0,563 0,111 0,124 0,414
0,77 0,174 0,241 0,227 0,689 0,642 0,33 0,321 0,163 0,279 0,234
0,625 0,583 0,712 0,714 0,701 0,126 0,381 0,861 0,491 0,672 0,35
0,766 0,006 0,748 0,769 0,724 0,103 0,064 0,832 0,178 0,992 0,526
0,874 0,353 0,644 0,236 0,794 0,263 0,211
0,985 0,55 0,81 0,404 0,291 0,287 0,889 0,129 0,992 0,432 0,842
0,279 0,912 0,746 0,442 0,666
Вариант 11.
0,894 0,236 0,532 0,568 0,511 0,971 0,702 0,104 0,466 0,149 0,112
0,69 0,491 0,653 0,64 0,831 0,878 0,962 0,726 0,374 0,853 0,744
0,236 0,784 0,563 0,111 0,342 0,603 0,894 0,236 0,532 0,568 0,511
0,971 0,702 0,104 0,466 0,149 0,112 0,69 0,491 0,653 0,64 0,831
38
0,878
0,414
0,234
0,35
0,526
0,404
0,962
0,77
0,625
0,766
0,874
0,726 0,374 0,853 0,744 0,236 0,784
0,174 0,241 0,227 0,689 0,642 0,33
0,583 0,712 0,714 0,701 0,126 0,381
0,006 0,748 0,769 0,724 0,103 0,064
0,353 0,644 0,236 0,794 0,263 0,211
0,563
0,321
0,861
0,832
0,985
0,111
0,163
0,491
0,178
0,55
0,124
0,279
0,672
0,992
0,81
Вариант 12.
0,725 0,694 0,655 0,098 0,05 0,464 0,728 0,68 0,372 0,05 0,17
0,311 0,212 0,485
0,44 0,606 0,797 0,147 0,408 0,137 0,005
0,573 0,548 0,311 0,808 0,289 0,895 0,744 0,361 0.229 0,221 0,142
0,584 0,666 0,947 0,197 0,797 0,849 0,629 0.617 0,251 0,629 0,617
0,251 0,788 0,714 0,082 0,855 0,307 0,684 0,154 0,048 0,019 0,648
0,914 0,473 0,192 0,995 0,648 0.174 0,275 0,839 0,371 0,223 0,232
0,971 0,023 0,152 0,007 0,644 0,415 0,091 0,699 0.658 0,535 0,054
0,26 0,863 0,087 0,864 0,293 0,645 0,829 0,872 0,913 0,44 0,354
0.428 0,006 0,774 0,09 0,684 0,154 0,048 0,019 0,648 0,9140,432
0,243 0,908
Вариант 13.
0,597 0,873 0,236 0,234 0,05 0,655 0,076 0,511 0,425 0,984 0,18
0,511 0,612 0,789
0,511 0,425 0,987 0,022 0,903 0,317 0,832
0,494 0,92 0,113 0,818 0,189 0,495 0,644 0,113 0,418 0,996 0,03
0.118 0,342 0,021 0,781 0,776 0,614 0,053 0,696 0,286 0,33 0,51
0,944 0,867 0,987 0,307 0,425 0,605 0,166 0,049 0,503 0,015 0,537
0,849 0,344 0,697 0,113 0,566 0,224 0.254 0,785 0,159 0,231 0,369
0,789 0,123 0,258 0,852 0,951 0,785 0,125 0,985 0,652 0,935 0,784
0,845 0,789 0,654 0,523 0,858 0,129 0,64 0,233
0,853 0,986 0,367 0,451 0,898 0,451 0,478 0,128 0,968 0,235 0,102
0,002 0,289 0,108 0,009 0,325
Вариант 14.
0,87 0,937 0,934 0,183 0,473 0,027 0,45 0,027 0,455 0,136 0,213
0,797 0.658 0,781 0,842 0,499 0,076 0,356 0,41 0,288 0,745 0,058
0,732 0,28 0,682 0,722 0,123 0,835 0,517 0,426 0,949 0,55 0,472
0,847 0,268 0,193 0,585 0,35 0,823 0,174 0,158 0,385 0,712 0,678
0,912 0,573 0,212 0,149 0,258 0,983 0,739 0,196 0,839 0,501 0,027
0,573 0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371 0,223 0,232
0,971 0,023 0,152 0,007
0,644 0,415 0,091 0,699 0,658 0,535
0,054 0,26 0,863 0,087 0,864 0,293 0,645 0,829
0,531 0,043 0,658 0,842 0,11 0,314 0,890 0,784 0,569 0,897 0,909
0,410 0,025 0,876 0,124 0,564
39
Вариант 15.
0,51 0,944 0,867 0,987 0,307 0,425 0,605 0,166 0,049
0,537 0,849 0,344 0,286 0,14 0,835 0,6
0,253 0,162
0,553 0,114 0,543 0,427 0,696 0,361 0,425 0,517 0,752
0,7
0,148 0,142 0,693 0,427 0,967 0,153 0,822 0,191
0,221 0,142 0,584 0,666 0,947 0,197 0,797 0,849 0,629
0,629 0,617 0,251 0,788 0,714 0,082 0,855 0,307 0,684
0,019 0,648 0,914 0,473 0,553 0,522 0,704 0,732 0.914
0,05 0,184 0,156 0,078 0,119 0,248 0,814
0,138 0,55 0,463 0,301 0.343 0,608 0,984 0,151 0,712
0,688 0,567 0,548 0,632 0,253
0,503 0,015
0,806 0,211
0,169 0,492
0,361 0.229
0.617 0,251
0,154 0,048
0,797 0,701
0,776 0,621
Вариант 16.
0,425 0,517 0,752 0,169 0,492 0,7
0,148 0,142 0,693 0,427 0,967
0,153 0,822 0,191 0,124 0,414 0,77 0,174 0,241 0,227 0,689 0,642
0,33 0,321 0,163 0,279 0,234 0,625 0,118 0,58 0,732 0,67 0,809
0,997 0,204 0,388 0,581 0,96 0,382 0,581 0,96 0,382 0,817 0,156
0,732 0,28 0,682 0,722 0,123 0,835 0,517 0,426 0,949 0,55 0,472
0,847 0,872 0,913 0,44 0,354 0,428 0,006 0,774 0,09 0,684 0,154
0,048 0,019 0,648 0,914 0,281 0,982 0,595 0,132 0,601 0,355 0,478
0,948 0,983 0,514 0,898 0,326 0,571 0,348
0,553 0,522 0,704 0,732 0,914 0,797 0,701 0,05 0,184 0,156 0,078
0,119 0,248 0,814 0,457 0,853
Вариант 17.
0,602 0,166 0,451 0,057 0,783 0,52 0,876 0,956 0,539
0,78 0,997 0,611 0,456 0,983 0,739 0,196 0,839 0,501
0,531 0,043 0,658 0,842 0,11 0,314 0,647 0,264 0,46
0,404 0,028 0,597 0,432 0,383 0,01 0,868 0,7 0,602
0,091 0,699 0,658 0,535 0,054 0,26 0,863 0,087 0,864
0,829 0,585 0,35 0,71 0,304 0,091 0,147 0,989 0,119
0,642 0,879 0,412 0,946 0,44 0,606 0,401 0,843 0,623
0,306 0,027 0,391 0,031 0,858 0,402 0,612
0,853 0,986 0,367 0,451 0,898 0,451 0,478 0,128 0,968
0,002 0,289 0,108 0,998 0,269
0,462
0,027
0,352
0,644
0,293
0,892
0,053
0,862
0,573
0,477
0,415
0,645
0,532
0,864
0,235 0,102
Вариант 18.
0,104 0,643 0,267 0,881 0,591 0,471 0,239 0,114 0,066 0,019 0,472
0,123 0,072 0,65 0,70 0,698 0,772 0,596 0,300 0,453 0,692 0,651
0,478 0,765 0,78 0,11 0,002 0,589 0,23 0,658 0,221 0,555 0,121
0,189 0,122 0,994 0,866 0,449 0,712 0,369 0,881 0,283 0,584 0,561
40
0,128
0,414
0,234
0,35
0,526
0,484
0,902
0,77
0,625
0,766
0,874
0,601 0,404 0,348 0,367 0,226 0,784
0,174 0,241 0,227 0,689 0,642 0,33
0,583 0,712 0,614 0,721 0,126 0,381
0,006 0,778 0,799 0,124 0,103 0,464
0,353 0,644 0,236 0,794 0,263 0,211
0,563
0,321
0,861
0,872
0,985
0,111
0,163
0,491
0,178
0,55
0,124
0,279
0,672
0,992
0,235
Вариант 19.
0,444 0,621 0,776 0,051 0,545 0,124 0,908 0,007 0,004 0,183 0,473
0,027 0,45 0,027 0,455 0,136 0,213 0,797 0,658 0,781 0,842 0,499
0,076 0,356 0,41 0,288 0,745 0,058 0,309 0,059 0,229 0,981 0,449
0,947 0,785 0,003 0,455 0,896 0,963 0,232 0,788 0,709 0,181 0,682
0,195 0,204 0,901 0,125 0,478 0,098 0,453 0,364 0,898 0,326 0,571
0,348 0,29
0,923 0,807 0,687 0,765 0,722 0,342 0,484 0,838
0,547 0,569 0,64 0,76 0,158 0,706 0,138 0,909 0,169 0,326 0,982
0,016 0,388 0,338 0,272 0,84 0,142 0,952 0,586
0,104 0,901 0,707 0,589 0,786 0,124 0,102 0,745 0,402 0,656 0,808
0,606 0,208 0,289 0,855 0,615
Вариант 20.
0,105 0,204 0,515 0,998 0,532 0,904 0,708 0,648 0,312 0,585 0,17
0,111 0,812 0,895 0,41 0,636 0,411 0,903 0,233 0,453 0,234 0,786
0,177 0,149 0,145 0,789 0,159 0,612 0,875 0,595 0,793 0,591
0,236 0,159 0,985 0,342 0,771 0,87 0,726 0,894 0,536 0,78 0,197
0,797 0,849 0,629 0,617 0,251 0,629 0,456 0,753 0,788 0,714 0,082
0,855 0,307 0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371 0,223
0,232 0,971 0,023 0,152 0,007 0,644 0,415 0,091 0,699 0,658 0,535
0,054 0,26 0,863 0,087 0,864 0,293 0,645 0,829 0,963 0,789 0,158
0,673 0,428 0,006 0,774 0,09 0,684 0,154 0,048 0,019 0,648 0,914
0,120 0,004
Вариант 21.
0,473 0,192 0,995 0,648 0,174 0,275 0,839 0,371 0,223 0,232 0,971
0,023 0,152
0,007 0,268 0,193 0,585 0,35 0,823 0,174 0,71
0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,872 0,913 0,44 0,354
0,428 0,006 0,774 0,09 0,684 0,154 0,048 0,019 0,648 0,914 0,192
0,995 0,648 0.174 0,275 0,839 0,371 0,223 0,232 0,971 0,023 0,152
0,007 0,644 0,415 0,091 0,699 0.658 0,535 0,054 0,26 0,863 0,087
0,864 0,293 0,645 0,829 0,872 0,268 0,193 0,585 0,35 0,823 0,174
0,71 0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,602 0,166 0,451
0,057 0,783 0,52 0,876 0,956 0,539 0,462 0,862 0,78 0,997 0,611
0,909 0,342
41
Вариант 22.
0,725 0,694 0,655 0,098 0,05 0,464 0,728 0,68 0,372 0,05 0,17
0,311 0,212 0,485 0,44 0,606 0,401 0,843 0.623 0,053 0,864 0,306
0,027 0,391 0,031 0,858 0,402 0,612 0,697 0,113 0,566 0,224 0.254
0,785 0,159 0,231 0,369 0,789 0,123 0,258 0,852 0,951 0,785 0,125
0,985 0,652 0,935 0,784 0,845 0,789 0,654 0,523 0,858 0,129 0,64
0,233 0,827 0,891 0,651 0,734 0,957 0,363 0,905 0,455 0,869
0,039 0,936 0,165 0,117 0,307 0,118 0,58 0,732 0,67 0,809 0,997
0,204 0,388 0,581 0,96 0,382 0,581 0,96 0,382
0,585 0,35 0,71 0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,642
0,879 0,412 0,946 0,102 0,003
Вариант 23.
0,342 0,603 0,894 0,236 0,532 0,568 0,511 0,971 0,702 0,104 0,466
0,149 0,112 0,69 0,23 0,658 0,221 0,555 0,121 0,189 0,122 0,994
0,866 0,449 0,712 0,369 0,881 0,283 0,286 0,14 0,835 0,6
0,253
0,162 0,806 0,211 0,553 0,114 0,543 0,427 0,696 0,361 0,644 0,415
0,091 0,699 0,658 0,535 0,054 0,26 0,863 0,087 0,864 0,293 0,645
0,829 0,229 0,875 0,845 0,041 0,184 0,449 0,894 0,546 0,523
0,999 0,867 0,147 0,284 0,974 0,224 0,111 0,267 0,182 0,959 0,789
0,918 0,444 0,344 0,216 0,578 0,626 0,248 0,719
0,138 0,55 0,463 0,301 0.343 0,608 0,984 0,151 0,712 0,776 0,621
0,688 0,567 0,548 0,332 0,553
Вариант 24.
0,888 0,515 0,263 0,381 0.443 0,108 0,884 0,351 0,212 0,776 0,021
0,288 0,067 0,548 0,412 0,601 0,476 0,951 0,835 0,804 0,87 0,937
0,934 0,183 0,473 0,027 0,45 0,027 0,455 0,136 0,213 0,797 0,658
0,781 0,842 0,499 0,076 0,356 0,41 0,288 0,745 0,058 0,186 0,338
0,519 0,269 0,126 0,992 0,676 0,498 0,358 0,102 0,89 0,742 0,352
0,976 0,024 0,141 0,567 0,882 0,909 0,789 0,777 0,442 0,354
0,916 0,678 0,226 0,348 0,819 0,755 0,065 0,632 0,253 0,091 0,699
0,658 0,535 0,054 0,26 0,863 0,087 0,864 0,293
0,963 0,789 0,158 0,673 0,428 0,006 0,774 0,09 0,684 0,154 0,048
0,019 0,648 0,914 0,645 0,829
Вариант 25.
0,725 0,694 0,655 0,098 0,05 0,464 0,728 0,68 0,372 0,05 0,17
0,311 0,212 0,485 0,553 0,522 0,704 0,732 0,914 0,797 0,701 0,05
0,184 0,156 0,078 0,119 0,248 0,814 0.254 0,785 0,159 0,231 0,369
0,789 0,123 0,258 0,852 0,951 0,785 0,125 0,985 0,652 0,935 0,784
42
0,845
0,198
0,024
0,226
0,148
0,451
0,789 0,654 0,523 0,858 0,129 0,64 0,233 0,725 0,994 0,155
0,455 0,004 0,791 0,068 0,472 0,511 0,712 0,181 0,202 0,485
0,141 0,567 0,882 0,909 0,789 0,777 0,442 0,354 0,916 0,678
0,348 0,819 0,755 0,065 0,425 0,517 0,752 0,169 0,492 0,7
0,142 0,693 0,427 0,967 0,153 0,822 0,191 0,817 0,156 0,901
Вариант 26.
0,121 0,046 0,761 0,002 0,426 0,461 0,749 0,559 0,922 0,857 0,491
0,747 0,256 0,792 0,602 0,166 0,451 0,057 0,783 0,52 0,876 0,956
0,539 0,462 0,862 0,78 0,997 0,611 0,268 0,193 0,585 0,35 0,823
0,174 0,71 0,304 0,091 0,147 0,989 0,119 0,892 0,532 0,725 0,694
0,655 0,098 0,05 0,464 0,728 0,68 0,372 0,05 0,17 0,311 0,212
0,485 0,872 0,913 0,44
0,354 0,428 0,006 0,774 0,09
0,684
0,154 0,048 0,019 0,648 0,914 0,229 0,875 0,845 0,041 0,184 0,449
0,894 0,546 0,523 0,999 0,867 0,147 0,284 0,974
0,647 0,264 0,46 0,352 0,477 0,404 0,028 0,597 0,432 0,383 0,01
0,868 0,7 0,602 0,589 0,478
Вариант 27.
0,644 0,415 0,091 0,699 0,658 0,535 0,054 0,26 0,863 0,087 0,864
0,293 0,645 0,829 0,602 0,166 0,451 0,057 0,783 0,52 0,876 0,956
0,539 0,462 0,862 0,78 0,997 0,611 0,246 0,493 0,67 0,613 0,799
0,989 0,629 0,591 0,506 0,45 0,94 0,252 0,73 0,625 0,56 0,378
0,937 0,964 0,584 0,407 0,499 0,875 0,782 0,588 0,279 0,874 0,301
0,867 0,708 0,218 0,225 0,997 0,758 0,711 0,942 0,499 0,276
0,456 0,581 0,211 0,845 0,358 0,455 0,136 0,213 0,797 0,658 0,781
0,842 0,499 0,076 0,356 0,41 0,288 0,745 0,058
0,286 0,14 0,835 0,6
0,253 0,162 0,806 0,211 0,553 0,114 0,543
0,427 0,696 0,361 0,209 0,008
Вариант 28.
0,386 0,04 0,535 0,6
0,153 0,062 0,906 0,311 0,453 0,914 0,643
0,727 0,396 0,761 0,424 0,864 0,267 0,682 0,959 0,788 0,818 0,136
0,104 0,256 0,978 0,126 0,448 0,819 0,104 0,901 0,707 0,589 0,786
0,124 0,102 0,745 0,402 0,656 0,808 0,606 0,208 0,289 0,024 0,141
0,567 0,882 0,909 0,789 0,777 0,442 0,354 0,916 0,678 0,226 0,348
0,819 0,872 0,913 0,44
0,354 0,428 0,006 0,774 0,09
0,684
0,154 0,048 0,019 0,648 0,914 0,553 0,522 0,704 0,732 0,914 0,797
0,701 0,05 0,184 0,156 0,078 0,119 0,248 0,814
0,963 0,789 0,158 0,673 0,428 0,006 0,774 0,09 0,684 0,154 0,048
0,019 0,648 0,914 0,145 0,289
43
Вариант 29.
0,617 0,251 0,788 0,714 0,082 0,855 0,307 0,684 0,154 0,048
0,648 0,914 0,473 0,425 0,517 0,752 0,169 0,492 0,7
0,148
0,693 0,427 0,967 0,153 0,822 0,191 0,281 0,982 0,595 0,132
0,355 0,478 0,948 0,983 0,514 0,898 0,326 0,571 0,348 0,473
0,995 0,648 0,174 0,275 0,839 0,371 0,223 0,232 0,971 0,023
0,007 0,64 0,831 0,878 0,962 0,726 0,374 0,853 0,744 0,236
0,563 0,111 0,124 0,414 0,124 0,414 0,77 0,174 0,241 0,227
0,642 0,33 0,321 0,163 0,279 0,234 0,625
0,361 0.229 0,221 0,142 0,584 0,666 0,947 0,197 0,797 0,849
0.617 0,251 0,629 0,677 0,091
Вариант 30.
0,221 0,599 0,432
0,665 0,755 0,065
0,81 0,404 0,998
0,102 0,963 0,895
0,002 0,598 0,089
0,457 0,209 0,008
0,839 0,371 0,223
0,698 0,772 0,596
0,002 0,589 0,23
0,426
0,019
0,142
0,601
0,192
0,152
0,784
0,689
0,629
0,243 0,632 0,253 0,645 0,289 0,634 0,155 0,555
0,823 0,174 0,025 0,149 0,442 0,666 0,542 0,766
0,269 0,124 0,564 0,235 0,484 0,607 0,011 0,915
0,123 0,596 0,897 0,003 0,209 0,596 0,147 0,026
0,789 0,108 0,891 0,132 0,698 0,614 0,968 0,783
0,145 0,289 0,473 0,192 0,995 0,648 0,174 0,275
0,232 0,971 0,023 0,152 0,007 0,268 0,193 0,70
0,300 0,453 0,692 0,651 0,478 0,765 0,78 0,11
0,658 0,732 0,28 0,682 0,722 0,123 0,835 0,517
Контрольные вопросы
1. Что означает конгруэнтность двух чисел по модулю?
2. В программных генераторах псевдослучайных чисел используются
детерминированные или вероятностные методы?
3. Что определяет длина периода генератора псевдослучайных чисел?
4. Как осуществляется статистическая оценка программных генераторов псевдослучайных чисел?
5. Что определяет тест критерия Колмогорова-Смирнова?
6. Что определяет тест критерия хи-квадрат?
7. Что определяет смешанный тест?
8. Способы проверки равномерности последовательности.
44
Практическое занятие №5
ПРЕОБРАЗОВАНИЕ СВ, РАВНОМЕРНО РАСПРЕДЕЛЕННОЙ
НА ИНТЕРВАЛЕ [0; 1] В СВ
С ЗАДАННЫМ ЗАКОНОМ РАСПРЕДЕЛЕНИЯ
Цель работы: освоить приемы преобразования случайной величины,
равномерно распределенной на интервале [0; 1) в случайную величину,
распределенную по заданному закону по методу обратных функций.
Задание: преобразовать случайную величину, равномерно распределенную на интервале 0; 1, в случайную величину, распределенную по
заданному закону.
При решении задач методом статистического моделирования (СМ)
возникает необходимость использования случайных величин (СВ), имитирующих различные характеристики системы в реальных условиях.
Конкретный вид закона распределения определяется после обработки
данных натурного эксперимента или исходя из физических соображений,
отражающих поведение системы (ее характеристик), находящейся под
воздействием искажений и помех.
Значения случайной величины n с заданной плотностью распределения вероятностей, как правило, получают из совокупности СЧ .
Преобразование СЧ может производиться различными методами в
зависимости от конкретных условий поставленной задачи.
Метод обратных функций
Рассмотрим основное соотношение, связывающее СВ n с СЧ , которое вытекает из следующей теоремы: “Если СВ n имеет плотность распределения f  ( x) , то СВ , связанная с n соотношением
ч
   f ( x)dx,

равномерно распределена на отрезке [0, 1]”.
Для непрерывных СВ n функция распределения F ( x)  P(ni  x) монотонно возрастает от 0 до 1 во всей области изменения значений x.
45
Пусть СВ   F (n). Тогда справедливо равенство вероятностей
P( x  n  x  x)  P( F ( x)    F ( x  x)).
Так как  – СЧ, то вероятность попадания  в некоторый интервал 
равна длине этого интервала.
Из теоремы следует, что для получения последовательности СВ с
функцией распределения F(x), необходимо выбирать СЧ i и преобразовывать их в соответствии с уравнением:
F (ni )   i
Рассмотренный метод рекомендуется применять, если генерирование
СВ n не требует большого количества операций машины. Иногда реализация этого метода встречает большие затруднения в связи с тем, что
функция распределения не выражается явно или уравнение F (ni )   i не
решается точно относительно n. Тогда прибегают к приближенным способам решения. Если при моделировании требуется большое количество
СВ ni , то в память машины заносится таблица значений ni  F 1 (  i ).
Пример решения задачи
Преобразовать случайную величину, распределенную на интервале 0; 1, в
случайную величину, распределенную по следующему закону:
Эту задачу решаем методом обратных функций. Для этого функцию
разбиваем на три участка и для каждого участка находим F-1(x).
46
f ( x )1 
1
x , где
8
f ( x)2 
1
– коэффициент наклона.
8
1
1
f
(
x
)

(6  x)
,
3
8
4
n
1
1 x 2 n n2
1.    xdx 
|0  , n  16
8
8
2
16
0
для
1
1
1
n2
2.     dx  x |n2 
, n  4  2
4 24
4
4
n
для
0
1
.
4
1
3
 .
4
4
n
3
1
1
x2 n 1
n2
    (6  x)dx  (6 x  ) |4  (6n   24  8) 
4 48
8
2
8
2

1 2 6
n  n  16
16
8
3. 
1 2 6
1
n  n  15    0
16
8
4
для
3
   1.
4
n2  12n  244  16  0
144  (244  16)
 36  244  16  4   13
2
ВАРИАНТЫ ЗАДАНИЙ
1. Преобразовать случайную величину, распределенную на интервале
0; 1, в случайную величину, распределенную по следующему закону:
47
2. Преобразовать случайную величину, распределенную на интервале
0; 1, в случайную величину, распределенную по следующему закону:
3. Преобразовать случайную величину, распределенную на интервале
0; 1, в случайную величину, распределенную по следующему закону:
4. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
48
5. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
6. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
7. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
49
8. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
9. Преобразовать случайную величину, распределенную на интервале
0;1, в случайную величину, распределенную по следующему закону:
10. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
50
11. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
12. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
13. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
51
14. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
15. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
16. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
52
17. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
18. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
19. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
53
20. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
21. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
22. Преобразовать случайную величину, распределенную на интервале 0;1 в случайную величину, распределенную по следующему закону:
54
23. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
24. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
25. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
55
26. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
27. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
28. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
56
29. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
30. Преобразовать случайную величину, распределенную на интервале 0;1, в случайную величину, распределенную по следующему закону:
57
Практическая работа №6
МОДЕЛИ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ
Цель работы: выработка практических навыков расчетов характеристик систем массового обслуживания.
Теоретические сведения
Системой массового обслуживания (СМО) называется любая система, предназначенная для обслуживания каких-либо заявок (требований),
поступающих на нее в случайные моменты времени. Любое устройство,
непосредственно занимающееся обслуживанием заявок, называется каналом обслуживания (или “прибором”). СМО бывают как одно-, так и многоканальными.
Различают СМО с отказами и СМО с очередью. В СМО с отказами
заявка, пришедшая в момент, когда все каналы заняты, получает отказ,
покидает СМО, а в дальнейшем в процессе ее работы не участвует. В
СМО с очередью заявка, пришедшая в момент занятости всех каналов, не
покидает СМО, а становится в очередь и ждет, пока не освободится какой-либо канал. Число мест в очереди т может быть как ограниченным,
так и неограниченным. При т = 0 СМО с очередью превращается в СМО
с отказами. Очередь может иметь ограничения не только по количеству
стоящих в ней заявок (длине очереди), но и по времени ожидания (такие
СМО называются “системами с нетерпеливыми клиентами”).
Аналитическое исследование СМО является наиболее простым, если
все потоки событий, переводящие ее из состояния в состояние, – простейшие (стационарные пуассоновские). Это значит, что интервалы времени между событиями в потоках имеют показательное распределение с
параметром, равным интенсивности соответствующего потока. Для СМО
это допущение означает, что как поток заявок, так и поток обслуживания
– простейшие. Под потоком обслуживания понимается поток заявок, обслуживаемых одна за другой одним непрерывно занятым каналом. Этот
поток оказывается простейшим, только если время обслуживания заявки
tобсл представляет собой случайную величину, имеющую показательное
распределение. Параметр этого распределения μ есть величина, обратная
среднему времени обслуживания:
где t обсл  Mt обсл .
  1 t обсл ,
58
Вместо фразы “поток обслуживания – простейший” часто говорят
“время обслуживания – показательное”. Всякая СМО, в которой все потоки простейшие, называется простейшей СМО.
Если все потоки событий простейшие, то процесс, протекающий в
СМО, представляет собой марковский случайный процесс с дискретными
состояниями и непрерывным временем. При выполнении некоторых
условий для этого процесса существует финальный стационарный режим,
при котором как вероятности состояний, так и другие характеристики
процесса не зависят от времени.
Задачи теории массового обслуживания – это нахождение вероятностей различных состояний СМО, а также установление зависимости между заданными параметрами (числом каналов п, интенсивностью потока
заявок λ, распределением времени обслуживания и т. д.) и характеристиками эффективности работы СМО. В качестве таких характеристик
могут рассматриваться, например, следующие:
 среднее число заявок А, обслуживаемое СМО в единицу времени,
или абсолютная пропускная способность СМО;
 вероятность обслуживания поступившей заявки Q или относительная пропускная способность СМО; Q = А/λ;
 вероятность отказа Ротк, т. е. вероятность того, что поступившая заявка не будет обслужена и получит отказ; Ротк = 1 – Q;
 среднее число заявок в СМО (обслуживаемых или ожидающих в
очереди) z ;
 среднее число заявок в очереди r ;
 среднее время пребывания заявки в СМО (в очереди или под обслуживанием) t сист ;
 среднее время пребывания заявки в очереди t оч ;
 среднее число занятых каналов k .
В общем случае все эти характеристики зависят от времени. Но многие СМО работают в неизменных условиях достаточно долгое время, и
поэтому для них успевает установиться режим, близкий к стационарному.
Мы здесь повсюду, не оговаривая этого каждый раз специально, будем
вычислять финальные вероятности состояний и финальные характеристики эффективности СМО, относящиеся к предельному стационарному
режиму ее работы.
СМО называется открытой, если интенсивность поступающего на нее
потока заявок не зависит от состояния самой СМО. Для любой открытой
СМО в предельном стационарном режиме среднее время пребывания заявки в системе t сист выражается через среднее число заявок в системе с
помощью формулы Литтла:
59
t сист  z  ,
(1)
где λ – интенсивность потока заявок.
Аналогичная формула (называемая также формулой Литтла) связывает среднее время пребывания заявки в очереди t оч и среднее число r
заявок в очереди:
t оч  r  .
(2)
Формулы Литтла очень полезны, так как позволяют вычислять не обе
характеристики эффективности (среднее время пребывания и среднее
число заявок), а только какую-нибудь одну из них.
Специально подчеркнем, что формулы (1) и (2) справедливы для любой открытой СМО (одноканальной, многоканальной, при любых видах
потоков заявок и потоков обслуживания); единственное требование к потокам заявок и обслуживании – чтобы они были стационарными.
Аналогично универсальное значение для открытых СМО имеет формула, выражающая среднее число занятых каналов k через абсолютную
пропускную способность А:
k  A ,
где   1 t обсл – интенсивность потока обслуживания.
Очень многие задачи теории массового обслуживания, касающиеся
простейших СМО, решаются при помощи схемы гибели и размножения.
Финальные вероятности состояний выражаются формулами:
1
 
     k 1
   n1 
p0  1  0  0 1  0 1
  0 1
 ;









1
1 2
1 2
k
1 2
n 



   k 1
p1  0 p0 ; p2  0 1 p0 ;
; pk  0 1
p0 ;
1
1 2
1 2 k
(0  k  n) ;
;
pn 
 0 1  n1
p0 .
1 2 n
Ниже приводится без вывода ряд формул, выражающих финальные
вероятности состояний и характеристики эффективности для некоторых
часто встречающихся типов СМО.
1. Простейшая СМО с отказами (задача Эрланга). На n-канальную
СМО с отказами поступает простейший поток заявок с интенсивностью λ;
60
время обслуживания – показательное с параметром   1 t обсл . Состояния
СМО нумеруются по числу заявок, находящихся в СМО (в силу отсутствия очереди оно совпадает с числом занятых каналов):
S0 – СМО свободна;
S1 – занят один канал, остальные свободны;
...;
Sk – занято k каналов, остальные свободны (1kn);
…;
Sn – заняты все n каналов.
Финальные вероятности состояний выражаются формулами Эрланга:
  2
p  1   
 1! 2!
1
n 
  ;
n! 
k
pk 
p0 , (k  1, 2,
k!
, n) ,
(3)
где ρ = λ/μ.
Характеристики эффективности:
A = (1 – pn); Q = 1 – pn ; Pотк = pn ; k = (1 – pn).
При больших значениях п вероятности состояний (3) удобно вычислять через табулированные функции:
m
ak a
am a
P  m, a  
e (распределение Пуассона) и R  m, a    e ,
m!
k 0 k !
из которых первую можно выразить через вторую:
P  m, a   R  m, a   R  m  1, a  .
Пользуясь этими функциями, формулы Эрланга (3) можно переписать
в виде
pk 
P  k , 
R  n,  
, k  0, 1,
,n .
2. Простейшая одноканальная СМО с неограниченной очередью.
На одноканальную СМО поступает простейший поток заявок с интенсив61
ностью λ. Время обслуживания – показательное, с параметром   1 t обсл .
Длина очереди не ограничена. Финальные вероятности существуют только при  

 1 (при ρ1 очередь растет неограниченно). Состояния СМО

нумеруются по числу заявок в СМО, находящихся в очереди или обслуживаемых:
S0 – СМО свободна;
S1 – канал занят, очереди нет;
S2 – канал занят, одна заявка стоит в очереди;
...;
Sk – канал занят, k – 1 заявок стоят в очереди;
... .
Финальные вероятности состояний выражаются формулами:
p0  1   ;
pk  k 1    ,
 k  1, 2  ,

 1.

Характеристики эффективности СМО:
где  
A   ; Q  1; Pотк  0 ;

2

2
z
; r
; t сист 
; t оч 
;
1 
1 
 1   
 1   
k    .
3. Простейшая одноканальная СМО с ограничением по длине
очереди. На одноканальную СМО поступает простейший поток заявок с
интенсивностью λ. Время обслуживания – показательное с параметром
  1 t обсл . В очереди т мест. Если заявка приходит в момент, когда все
эти места заняты, она получает отказ и покидает СМО. Состояния СМО:
S0 – СМО свободна;
S1 – канал занят, очереди нет;
S2 – канал занят, одна заявка стоит в очереди;
...;
Sk – канал занят, k – 1 заявок стоят в очереди;
...;
Sm+1 – канал занят, т заявок стоят в очереди.
Финальные вероятности состояний существуют при любом ρ = λ / μ и
равны:
62
p0 
1 
;
1  m 2
pk  k p0 ,
 k  1,
, m  1 .
Характеристики эффективности СМО:
A = λ (1 – pm+1); Q = 1 – pm+1; Pотк = pm+1.
Среднее число занятых каналов (вероятность того, что канал занят)
k = 1 – p0.
Среднее число заявок в очереди


 2 1   m m  1  m
r
.
(1   m  2 )(1  )
Среднее число заявок в СМО
z = r +k .
По формуле Литтла
t сист  z  ;
t оч  r  .
4. Простейшая многоканальная СМО с неограниченной очередью.
На n-канальную СМО поступает простейший поток заявок с интенсивностью
λ. Время обслуживания одной заявки – показательное с параметром
Финальные
вероятности
существуют
только
при
  1 t обсл .
ρ/n =  < 1, где ρ = λ/μ. Состояния СМО нумеруются по числу заявок в СМО:
S0 – СМО свободна;
S1 – занят один канал;
очереди нет
…;
Sk – занято k каналов (1  k  n);
…;
Sn – заняты все п каналов;
Sn+1 – заняты все п каналов, одна заявка стоит в очереди;
...;
Sn+r – заняты все п каналов, r заявок стоят в очереди;
... .
63
Финальные вероятности состояний выражаются формулами:
1
  2
 n  n 1 1 
p 0  1  


 ;
1
!
2
!
n
!
n

n
!
1




k

pk 
p 0 , (1  k  n) ;
k!
n  r
pn r  r
p 0 , (r  1) .
n  n!
С помощью функций Р(т, а) и R(т, а) эти формулы могут быть приведены к виду
pk 
P(k , )
,
R (n, )  P(n, ) (1  )
pn r  r pn ,
k  0,  , n  ;
r  1, 2,  .
Характеристики эффективности СМО:
r
n 1p0
n  n!(1  )
2

p n
(1  )
2
;
z  r k  r ;
t сист  z  ; t оч  r  .
5. Простейшая многоканальная СМО с ограничением по длине
очереди. Условия и нумерация состояний те же, что в п. 4, с той разницей, что число т мест в очереди ограничено. Финальные вероятности состояний существуют при любых λ и μ и выражаются формулами:
1
 
 n  n 1 1   m 
p 0  1    

 ;
1
!
n
!
n

n
!
1




k
pk 
p 0 , (1  k  n) ;
k!
n  r
pn r  r
p 0 , (1  r  m) ,
n  n!
где χ = ρ/n = λ /(nμ).
64
Характеристики эффективности СМО:
A = (1–pn+m) ; Q = 1–pn+m ; Pотк = pn+m ;
k  (1  p n  m ) ;
 n 1p 0 1  (m  1) m  m m 1
r
;
n  n!
(1  ) 2
z rk;
t сист  z  ; t оч  r  .
6. Многоканальная СМО с отказами при простейшем потоке заявок и произвольном времени обслуживания. Формулы Эрланга (3)
остаются справедливыми и тогда, когда поток заявок – простейший, а
время обслуживания Тобсл имеет произвольное распределение с математическим ожиданием t обсл  1  .
7. Одноканальная СМО с неограниченной очередью при простейшем потоке заявок и произвольном времени обслуживания. Если
на одноканальную СМО поступает простейший поток заявок с интенсивностью λ, а время обслуживания Тобсл распределяется по произвольному
закону с математическим ожиданием 1/ и коэффициентом вариации ,
то среднее число заявок в очереди выражается формулой Полячека–
Хинчина
r
 2 (1   ) 2
2(1  )
,
(4)
где ρ = λ/μ, а среднее число заявок в СМО
z
 2 (1   ) 2
2(1  )
.
(5)
Из (4) и (5) по формуле Литтла получим
t оч 
 2 (1   ) 2
2(1  )
; t сист 
 2 (1  2 )
2(1  )

1
.

8. Одноканальная СМО при произвольном (пальмовском) потоке
заявок и произвольном времени обслуживания. Точных формул для
этого случая не существует, а приближенная оценка длины очереди может быть произведена по формуле
65
r
 2 (2  μ2 )
2(1  )
,
где λ – коэффициент вариации интервала между событиями во входном
потоке;
ρ = λ/μ;
λ – величина, обратная математическому ожиданию этого интервала;
  1 t обсл – величина, обратная среднему времени обслуживания;
 – коэффициент вариации времени обслуживания.
Среднее число заявок, связанных в СМО,
z
 2 (2  μ2 )
2(1  )
,
а средние времена пребывания заявки в очереди и в СМО соответственно
равны
t оч 
 2 (2  μ2 )
2(1  )
; t сист 
 2 (2  μ2 )
2(1  )

1
.

9. Простейшая многофазовая СМО с очередью. Анализ многофазовых СМО в общем случае затруднен тем, что входящий поток каждой последующей фазы является выходным потоком предыдущей и в общем
случае имеет последействие. Однако, если на вход СМО с неограниченной очередью поступает простейший поток заявок, а время обслуживания
показательное, то выходной поток этой СМО – простейший, с той же интенсивностью λ, что и входящий. Из этого следует, что многофазовую
СМО с неограниченной очередью перед каждой фазой, простейшим входящим потоком заявок и показательным временем обслуживания на каждой фазе можно анализировать как простую последовательность простейших СМО.
Если очередь к фазе ограничена, то выходной поток этой фазы перестает быть простейшим и вышеуказанный прием может применяться
только в качестве приближенного.
Пример выполнения задания
Число
колонок
5
Число мест
стоянки
2
Интенсивность
обслуживания
1 машина за 5 мин
66
Интенсивность
поступления
50 машин за 1 ч
Имеет место простейшая многоканальная СМО с ограничением
по длине очереди.
Характеристики эффективности СМО данного типа.
Абсолютная пропускная способность
A = (1 – pn+m).
Вероятность обслуживания поступившей заявки
Q = 1 – pn+m .
Вероятность отказа в обслуживании
Pотк = pn+m .
Среднее число занятых каналов
k  (1  p n  m ) .
Среднее число заявок в очереди
n 1p 0 1  (m  1) m  m m 1
r
.
n  n!
(1  ) 2
Среднее число заявок в системе
z rk.
Среднее время нахождения заявки в системе и среднее время пребывания заявки в очереди
t сист  z  ; t оч  r  .
Практические расчеты
 = 1 машина за 5 минут = 12 машин/ч
 = 50 машин/ч
Простейшая многоканальная СМО с ограничением очереди.


;



;  = 4,16;  = 0,83.
n
67
Финальные вероятности существуют при любом :
   2 3  4 5  6 1   2 

p 0  1  
 



1
!
2
!
3
!
4
!
5
!
5

5
!
1




1
 0,0155 ;
K
p0 , (1  k  n) ;
k!
p1  0,064 ; p 2  0,134 ; p3  0,186 ; p 4  0,193 ; p5  0,161.
PK 
В системе имеется пять каналов обслуживания. Снижение значения
финальной вероятности р5 означает, что чаще всего в системе заняты 4
канала обслуживания.
n  r
pn r  r
p 0 , (1  r  m) ;
n  n!
p 6  0,133 ; p 7  0,111 .
Финальные вероятности с индексами 6 и 7 имеют относительно
большие значения. Это говорит о том, что, скорее всего, в системе хорошая загрузка и места в очереди часто заняты.
A = (1 – p7) = 44,4 машин в ч;
Q = 1 – pn+m = 0,889;
Pотк = pn+m = 0,111;
k  (1  p n  m ) = 3,7;
n 1p 0 1  (m  1) m  m m 1
r
= 1,242;
2
n  n!
(1  )
z  r  k = 4,94;
t сист 
z
= 0,099 ч;

t оч 
r
= 0,025 ч.

Выводы. Характеристики данной СМО позволяют сделать вывод,
что один канал обслуживания в системе часто простаивает и его можно
68
сократить. Это приведет к увеличению очереди. Но число мест стоянки
равно пяти, а среднее число машин в очереди равно 1,242. Следовательно,
рост очереди скорее всего не приведет к значительному увеличению
числа отказов в системе.
ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
Для приведенных ниже задач необходимо определить тип СМО
и подсчитать следующие величины:
• абсолютную пропускную способность СМО;
• относительную пропускную способность СМО;
• вероятность, что заявка не будет обслужена;
• среднее число заявок в СМО;
• среднее число заявок в очереди;
• среднее время пребывания заявки в СМО;
• среднее время пребывания в очереди;
• среднее число каналов.
Задача 1. Имеется магазин, в котором покупателей обслуживают m
касс. Число покупателей в очереди не ограничено. Для каждого варианта
задается число человек, обслуживаемых в единицу времени, и количество
покупателей, приходящих в единицу времени.
Номер
варианта
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Число
касс
1
3
3
4
5
3
2
3
4
4
Интенсивность
обслуживания
2 человека за 5 мин
10 человек за 1 ч
1 человек за 1 мин
2 человека за 1 мин
50 человек за 1 ч
10 человек за 1 ч
20 человек за 1 ч
30 человек за 1 ч
45 человек за 1 ч
16 человек за 1 ч
Интенсивность
поступления
20 человек за 1 ч
20 человек за 1 ч
100 человек за 1 ч
300 человек за 1 ч
220 человек за 1 ч
1 чел за 3 мин
1 человек за 5 мин
60 человек за 1 ч
60 человек за 1 ч
1 человек за 1 мин
Задача 2. Имеется поликлиника, в которой посетителей обслуживают
m врачей. Число посетителей в очереди ограничено числом стульев около
кабинета. Для каждого варианта задается число человек, обслуживаемых
в единицу времени, и количество посетителей, приходящих в единицу
времени.
69
Номер
варианта
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Число
врачей
1
2
3
4
5
1
2
3
4
5
2
2
3
Число
стульев
5
8
10


6

10

10
5
10
5
Интенсивность
обслуживания
1 человек за 8 мин
2 человека за 5 мин
4 человека за 10 мин
4 человека за 20 мин
10 человек за 1 ч
1 человек за 10 мин
2 человека за 10 мин
3 человека за 10 мин
4 человека за 15 мин
1 человек за 10 мин
30 человек за 1 ч
60 человек за 1 ч
10 человек за 1 ч
Интенсивность
поступления
1 человек за 15 мин
2 человека за 15 мин
3 человека за 15 мин
4 человека за 15 мин
5 человек за 15 мин
1 человек за 15 мин
2 человека за 15 мин
3 человека за 15 мин
4 человека за 15 мин
5 человек за 12 мин
60 человек за 1 ч
130 человек за 1 ч
50 человек за 1 ч
Задача 3. Имеется автозаправочная станция, на которой имеется m
заправочных колонок и n стоянок для ожидания. Для каждого варианта
задается число машин, обслуживаемых в единицу времени, и количество
автомобилей, приходящих в единицу времени.
Номер
варианта
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Число
колонок
1
2
3
4
5
1
2
3
4
5
Число мест
стоянки
1
2
3
1
2
3
1
2
3
5
Интенсивность
обслуживания
1 машина за 1 мин
1 машина за 2 мин
1 машина за 3 мин
1 машина за 4 мин
1 машина за 5 мин
1 машина за 1 мин
1 машина за 2 мин
1 машина за 3 мин
1 машина за 4 мин
1 машина за 1 мин
Интенсивность
поступления
65 машин за 1 ч
50 машин за 1 ч
58 машин за 1 ч
50 машин за 1 ч
50 машин за 1 ч
58 машин за 1 ч
35 машин за 1 ч
55 машин за 1 ч
55 машин за 1 ч
280 машин за 1 ч
Отчет о работе должен содержать:
1. Описание задачи и исходные данные по вариантам;
2. Используемые формулы;
3. Результаты полученных расчетов;
4. Оценку полученных результатов и выводы по исходной задаче.
70
Практическая работа №7
ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ
СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ
Цель работы: изучение основных приемов программирования на
языке моделирования GPSS; приобретение практических навыков имитационного моделирования систем на языке GPSS.
Теоретические сведения
Для представления имитационных моделей можно использовать языки программирования общего применения, однако такие представления
оказываются довольно громоздкими. Поэтому обычно применяют специальные языки имитационного моделирования на системном уровне. Среди языков имитационного моделирования различают языки, ориентированные на описание событий, средств обслуживания или маршрутов движения заявок (процессов). Выбор языка моделирования определяет
структуру модели и методику ее построения.
Для описания имитационных моделей на системном уровне (иногда
их называют сетевыми имитационными моделями — СИМ) чаще используют языки, ориентированные на события или процессы. Примерами
первых могут служить языки Симскрипт, SMPL, GASP и ряд других. К
числу вторых относятся языки Симула, SOL, а также популярный язык
GPSS.
Языки имитационного моделирования реализуются в программнометодических комплексах моделирования СМО, имеющих ту или иную
степень специализации. Так, комплексы на базе языка GPSS можно использовать во многих приложениях, но есть специализированные комплексы для моделирования вычислительных сетей (COMNET III, OPNET),
вычислительных систем, производственных процессов (РДО) и т. п.
Примерами программ имитационного моделирования могут служить
GPSS/H, GPSS/PC, Arena, SLX, ProcessModel, отечественная система РДО
и др. В программе Arena использован входной графический язык. Пользователь может выбирать нужные блоки из меню и переносить их в поле
модели.
При использовании языков, ориентированных на процессы, в составе
СИМ выделяются элементарные части и ими могут быть источники входных потоков заявок, устройства, накопители и узлы.
Источник входного потока заявок представляет собой алгоритм, в соответствии с которым вычисляются моменты tk появления заявок на вы71
ходе источника. Источники могут быть зависимыми и независимыми. В
зависимых источниках моменты появления заявок связаны с наступлением определенных событий, например, с приходом другой заявки на вход
некоторого устройства. Типичным независимым источником является алгоритм выработки значений tk случайной величины с заданным законом
распределения.
Устройства в имитационной модели представлены алгоритмами выработки значений интервалов (длительностей) обслуживания. Чаще всего
это алгоритмы генерации значений случайных величин с заданным законом распределения. Но могут быть устройства с детерминированным
временем обслуживания или временем, определяемым событиями в других частях СИМ. Модель устройства отображает также заданную дисциплину обслуживания, поскольку в модель входит алгоритм, управляющий
очередями на входах устройства.
Накопители моделируются алгоритмами определения объемов памяти, занимаемых заявками, приходящими на вход накопителя. Обычно
объем памяти, занимаемый заявкой, вычисляется как значение случайной
величины. Закон и (или) числовые характеристики распределения могут
зависеть от типа заявки.
Узлы выполняют связующие, управляющие и вспомогательные
функции в имитационной модели, например, для выбора направлений
движения заявок в СИМ, изменения их параметров и приоритета, разделения заявок на части, их объединения и т. п.
Обычно каждому типу элементарной модели, за исключением лишь
некоторых узлов, в программной системе соответствует определенная
процедура (подпрограмма). Тогда СИМ можно представить как алгоритм,
состоящий из упорядоченных обращений к этим процедурам, отражающим поведение моделируемой системы.
В процессе моделирования происходят изменения модельного времени, которое чаще всего принимается дискретным, измеряемым в тактах.
Время изменяется после того, как закончена имитация очередной группы
событий, относящихся к текущему моменту времени tk. Имитация сопровождается накоплением в отдельном файле статистики таких данных, как
количество заявок, вышедших из системы обслуженными и необслуженными, суммарное время занятого состояния для каждого из устройств,
средние длины очередей и т. п. Имитация заканчивается, когда текущее
время превысит заданный отрезок времени или когда входные источники
выработают заданное число заявок. После этого производят обработку
накопленных в файле статистики данных, что позволяет получить значения требуемых выходных параметров.
72
В программах имитационного моделирования СМО преимущественно реализуется событийный метод организации вычислений. Сущность
событийного метода заключается в отслеживании на модели последовательности событий в том же порядке, в каком они происходили бы в реальной системе. Вычисления выполняют только для тех моментов времени и тех частей (процедур) модели, к которым относятся совершаемые
события. Другими словами, обращения на очередном такте моделируемого времени осуществляются только к моделям тех элементов (устройств,
накопителей), на входах которых в этом такте произошли изменения.
Поскольку изменения состояний в каждом такте обычно наблюдаются лишь у малой доли ОА, событийный метод может существенно ускорить моделирование по сравнению с инкрементным методом, в котором
на каждом такте анализируются состояния всех элементов модели.
Рассмотрим возможную схему реализации событийного метода имитационного моделирования.
Моделирование начинается с просмотра операторов генерирования
заявок, т. е. с обращения к моделям источников входных потоков. Для
каждого независимого источника такое обращение позволяет рассчитать
момент генерации первой заявки. Этот момент вместе с именем — ссылкой на заявку — заносится в список будущих событий (СБС), а сведения
о генерируемой заявке — в список заявок (СЗ). Запись в СЗ включает в
себя имя заявки, значения ее параметров (атрибутов), место, занимаемое в
данный момент в СИМ. В СБС события упорядочиваются по увеличению
моментов наступления.
Затем из СБС выбирают совокупность сведений о событиях, относящихся к наиболее раннему моменту времени. Эта совокупность переносится в список текущих событий (СТС), из которого извлекаются ссылки
на события. Обращение по ссылке к СЗ позволяет установить место в
СИМ заявки A, с которой связано моделируемое событие. Пусть этим местом является устройство X. Далее программа моделирования выполняет
следующие действия (рис. 5):
1. Изменяет параметры состояния устройства X; например, если заявка A освобождает X, а очередь к X не была пуста, то в соответствии с
заданной дисциплиной обслуживания из очереди к X выбирается заявка B
и поступает на обслуживание в X;
2. Прогнозируется время наступления следующего события, связанного с заявкой B, путем обращения к модели устройства X, в которой рассчитывается продолжительность обслуживания заявки B; сведения об
этом будущем событии заносятся в СБС и СЗ;
3. Происходит имитация движения заявки A в СИМ по маршруту,
определяемому заданной программой моделирования, до тех пор, пока
73
заявка не придет на вход некоторого ОА; здесь либо заявка задерживается в
очереди, либо путем обращения к модели этого ОА прогнозируется наступление некоторого будущего события, связанного с дальнейшей судьбой заявки A; сведения об этом будущем событии также заносятся в СБС и СЗ;
4. В файл статистики добавляются необходимые данные.
Рис. 5. Событийный метод имитационного моделирования
После отработки всех событий, относящихся к моменту времени tk,
происходит увеличение модельного времени до значения, соответствующего ближайшему будущему событию, и рассмотренный процесс имитации повторяется.
Примеры моделирования с помощью языка GPSS
Язык GPSS (General Purpose Simulation System), ориентированный на
процессы, разработан еще в 1961 г., но продолжает широко использоваться. Язык реализован в ряде программ имитационного моделирования, так,
версия программы GPSS/PС в среде Windows создана в 2000 г.
Модель (программа) на языке GPSS представляет собой последовательность операторов (их называют блоками), отображающих события,
происходящие в СМО при перемещениях транзактов. Поскольку в интерпретаторах GPSS реализуется событийный метод и в СМО может быть
одновременно много транзактов, то интерпретатор будет попеременно
исполнять разные фрагменты программы, имитируя продвижение транзактов в текущий момент времени до их задержки в некоторых устройствах или очередях.
Операторы (блоки) GPSS имеют следующий формат:
<метка> <имя_оператора> <поле_операндов> [<комментарий>]
74
Метка может занимать позиции, начиная со второй, имя оператора —
с восьмой, поле операндов — с девятнадцатой, комментарий обязательно
отделяется от поля операндов пробелом.
Поле операндов может быть пусто, иметь один или более операндов,
обозначаемых ниже при описании блоков символами A, B, C,... Операндами могут быть идентификаторы устройств, накопителей, служебные
слова и стандартные числовые атрибуты (СЧА). К СЧА относятся величины, часто встречающиеся в разных задачах. Это, например, такие операнды, как S — объем занятой памяти в накопителе, F — состояние
устройства, Q — текущая длина очереди, P — параметр транзакта (каждый транзакт может иметь не более L параметров, где L зависит от интерпретатора), V — целочисленная переменная (вещественная и булева
переменные обозначаются FV и BV соответственно), X — хранимая переменная (переменная, для которой автоматически подсчитывается статистика), K — константа, AC1 — текущее время, FN — функция, RN —
случайная величина, RN1 — случайная величина, равномерно распределенная в диапазоне [0, 1] и др. При этом ссылки на СЧА записываются в
виде <СЧА>$<идентификатор>. Например, Q$ORD означает очередь
ORD или FN$COS — ссылка на функцию COS.
Рассмотрим наиболее часто встречающиеся операторы, сопровождая
знакомство с ними простыми примерами моделей.
Источники заявок обычно описываются блоком
GENERATE A,B,C,D,E
Здесь A и B служат для задания интервалов между появлениями заявок, при этом можно использовать один из следующих вариантов:
 интервал — равномерно распределенная в диапазоне [A – B, A + B]
случайная величина;
 интервал — значение функции, указанной в B, умноженной на A;
C — задержка в выработке первого транзакта; D — число вырабатываемых источником заявок; E — приоритет заявок. Если D пусто, то число вырабатываемых транзактов неограничено. Например:
GENERATE 6,FN$EXP,,15
Этот оператор описывает источник, который вырабатывает 15 транзактов с интервалами, равными произведению числа 6 и значения функции EXP;
GENERATE 36,12
75
Здесь число транзактов неограничено, интервалы между транзактами
— случайные числа в диапазоне [24, 48].
Функции, на которые имеются ссылки в операторах, должны быть
описаны с помощью блока следующего типа:
M
FUNCTION A,B
За ним следует строка, начинающаяся с первой позиции:
X1,Y1/X2,Y2/X3,/.../Xn,Yn,
где метка M — идентификатор функции,
A — аргумент функции,
B — тип функции,
Xi и Yi — координаты узловых точек функции, заданной таблично.
Например:
EXP FUNCTION RN1,C12
0,0/.2,.22/.4,.51/.5,.6/.6,.92/.7,1.2/.8,1.61/.9,2.3/.95,3/.99,4.6/.999,6.9/1,1000
Это описание непрерывной (C) функции EXP, заданной таблично 12ю узловыми точками, аргументом является случайная величина (RN1),
равномерно распределенная в диапазоне [0, 1].
Операторы занятия транзактом и освобождения от обслуживания
устройства A:
SEIZE
A
RELEASE A
Задержка в движении транзакта по СМО описывается оператором:
ADVANCE
A,B
A и B имеют тот же смысл, что и в операторе GENERATE.
Пример 1
Обслуживание транзакта в устройстве WST продолжительностью
единиц времени, где — равномерно распределенная в диапазоне [7,11]
случайная величина, описывается следующим фрагментом программы
SEIZE
WST
76
ADVANCE 9,2
RELEASE WST
Аналогично описывается занятие транзактом памяти в накопителе:
ENTER
A,B
Здесь помимо имени накопителя (A) указывается объем занимаемой
памяти (B).
Освобождение B ячеек памяти в накопителе A выполняется оператором:
LEAVE
A,B
Для накопителей в модели нужно задавать общий объем памяти, что
делается в следующем описании накопителя:
M
STORAGE
A,
где M — имя накопителя,
A — объем его памяти.
Если транзакт приходит на вход занятого устройства или на вход
накопителя с недостаточным объемом свободной памяти, то транзакт задерживается в очереди к этому устройству или накопителю. Слежение за
состоянием устройств и очередей выполняет интерпретатор. Но, если в
модели требуется ссылаться на длину очереди или собирать статистику
по ее длине, то требуется явное указание этой очереди в модели. Делается
это с помощью операторов входа в очередь и выхода из очереди:
QUEUE
A,B
DEPART A,B
Согласно этим операторам очередь A увеличивается и уменьшается
на B единиц соответственно, если B = 1, то поле B можно оставить пустым.
Движение транзактов выполняется по маршруту, заданному последовательностью операторов в модели. Если требуется изменение естественного порядка, то используется оператор перехода. Оператор условного
перехода имеет вид:
TEST XX A,B,C
77
В соответствии с ним переход к оператору, помеченному меткой C,
происходит, если не выполняется условие A XX B, где XX {E, NE, L,
LE, G, GE}; E — равно; NE — неравно; L — меньше; LE — меньше или
равно; G — больше; GE — больше или равно (XX всегда размещается в
позициях 13 и 14).
Пример 2
Приходящие пользователи ожидают обслуживания, если длина очереди не более 4, иначе от обслуживания отказываются. Соответствующий
фрагмент программы
TEST LE Q$STR,4,LBL
QUEUE
STR
SEIZE
POINT
DEPART STR
ADVANCE 50,16
RELEASE POINT
LBL TERMINATE 1
В примере 2 использован оператор выхода транзактов из СМО:
TERMINATE A
Согласно этому оператору из итогового счетчика вычитается число
A. С помощью итогового счетчика задается длительность моделирования.
В начале исполнения программы в счетчик заносится число, указанное в
операнде A оператора
START
A,B,C
Моделирование прекращается, когда содержимое счетчика будет
равно или меньше нуля. Операнд C — шаг вывода статистики на печать.
Если B = 0 и С = 0, то выполняется только стандартная печать по окончании моделирования. В стандартную печать входят собранные за время
моделирования статистические данные по основным параметрам модели:
средние и максимальные значения длин очередей, объемов занимаемой
памяти в накопителях, времени занятого состояния устройств и др. От
печати можно отказаться, указав B = NP.
78
Пример 3
Общая структура программы на GPSS имеет вид
<описания, в том числе функций, накопителей, массивов и т. п.>
<операторы, моделирующие движение транзактов>
START
A,B,C
END
Оператор безусловного перехода записывается следующим образом:
TRANSFER, B
Здесь B — метка оператора, к которому следует переход.
Используется ряд других разновидностей оператора TRANSFER.
Например:
TRANSFER P,B,C
Переход происходит к оператору с меткой, равной сумме значения
параметра B транзакта и числа C.
TRANSFER FN,B,C
То же, но вместо параметра транзакта слагаемым является значение
функции B.
TRANSFER PICK,B,C
Это оператор равновероятного перехода к операторам, метки которых
находятся в интервале [B,C].
Важное место в СМО занимает переход по вероятности:
TRANSFER A,B,C
Здесь A — вероятность перехода к оператору с меткой C, переход к
оператору с меткой B будет происходить с вероятностью 1 A.
Пример 4
На вход производственной линии поступают и проходят обработку на
станке TOOL1 детали типов X и Y. Далее детали типа X обрабатываются
на станке TOOL2, а детали типа Y — на станке TOOL3. Интервал моде79
лирования соответствует обработке 600 деталей (ниже у операторов
GENERATE и ADVANCE значения операндов не конкретизированы):
GENERATE A,B
ASSIGN 1,LBL4
TRANSFER ,LBL1
GENERATE A,B
ASSIGN 1,LBL2
LBL1 SEIZE
TOOL1
ADVANCE A,B
RELEASE TOOL1
TRANSFER P,1
LBL4 SEIZE
TOOL2
ADVANCE A,B
RELEASE TOOL2
LBL3 TERMINATE 1
LBL2 SEIZE
TOOL3
ADVANCE A,B
RELEASE TOOL3
TRANSFER ,LBL3
START
600
END
Вычислительный оператор присваивает переменной с номером M
значение арифметического выражения A:
M
VARIABLE A
Например, в следующем операторе переменной номер 3 присваивается разность числа 216 и объема занятой памяти в накопителе MEM2:
XINIT VARIABLE K216-S$MEM2
Знаки арифметических операций – сложения, вычитания, умножения,
деления +, -, #, / соответственно. В случае логических выражений имя
оператора должно быть BVARIABLE, а знаками операций дизъюнкции и
конъюнкции являются + и #. Если операции выполняются над числами
типа real, то имя оператора FVARIABLE.
Часто сведения о некоторых величинах, характеризующих моделируемый процесс, удобно представлять в виде гистограмм. Задание гистограммы выполняют в разделе описаний с помощью оператора:
80
M
TABLE
A,B,C,D
Здесь M — имя гистограммы; A — табулируемая величина; B —
верхняя граница левого интервала гистограммы; C — ширина интервалов; D — число интервалов. Формирование гистограммы происходит с
помощью оператора:
TABULATE A
Выполнение этого оператора увеличивает на единицу число попаданий в -й интервал гистограммы, имя которой указано в A. При этом -й
интервал соответствует текущему значению переменной, являющейся аргументом для гистограммы.
Пример 5
Требуется разработать модель процессов возникновения и устранения неисправностей в некоторой технической системе, состоящей из
множества однотипных блоков; в запасе имеется один исправный блок;
известны статистические данные об интенсивностях возникновения отказов и длительностях таких операций, как поиск неисправностей, замена и
ремонт отказавшего блока. Поиск и замену отказавшего блока производит
бригада TEAM1, а ремонт замененного блока — бригада TEAM2.
GENERATE A,B моделируется возникновение отказов
SEIZE
TEAM1
ADVANCE A,B поиск неисправности
ENTER MEM,1 получение запасного блока из резерва
ADVANCE A,B замена блока
RELEASE TEAM1
SEIZE
TEAM2
ADVANCE A,B ремонт
LEAVE MEM,1 восстановление резерва
RELEASE TEAM2
TERMINATE 1
START
1000
END
Пример 6
Требуется разработать модель сборки изделия из 30 деталей типа А1
и 16 деталей типа А2, поступающих на сборочный участок от независимых экспоненциальных источников с интенсивностями λ , равными 0,1 и
81
0,04 мин- соответственно. Длительность сборочной операции находится в
пределах [12,18] мин. Промоделировать выпуск 600 изделий. Табулировать наполнение входного бункера с деталями типа А2 перед началом
сборки.
MEM1 STORAGE
30
MEM2 STORAGE
16
TAB TABLE
MEM2,32,16,6
EXP FUNCTION RN1,C12
0,0/.2,.22/.4,.51/.5,.6/.6,.92/.7,1.2/.8,1.61/
.9,2.3/.95,3/.99,4.6/.999,6.9/1,1000
GENERATE 10, FN$EXP
ENTER
MEM1,1
TRANSFER ,MMM
GENERATE 25, FN$EXP
ENTER
MEM2,1
MMM TEST GE S$MEM1,30,LLL
TEST GE
S$MEM2,16,LLL
TABULATE TAB
SEIZE
MONT
ADVANCE
15,3
RELEASE
MONT
TERMINATE 1
LLL TERMINATE
START
600
END
ВАРИАНТЫ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
1. Информационно-поисковая библиографическая система построена
на базе двух ЭВМ и имеет один терминал для ввода и вывода информации. Первая ЭВМ обеспечивает поиск литературы по научнотехническим проблемам (вероятность обращения к ней 0,7), а вторая – по
медицинским (вероятность обращения к ней 0,3). Поток пользователей
является пуассоновским со значением среднего интервала 5 мин. Если
очереди к терминалу ожидают 10 пользователей, то вновь прибывшие
пользователи получают отказ в обслуживании. Поиск информации на
первой ЭВМ продолжается 6 ± 4 мин, а на второй – 3 ± 2 мин.
Смоделировать процесс работы системы для 50, 500, 2000 пользователей. Определить среднюю и максимальную длину очереди к терминалу,
число пользователей, получивших отказ в обслуживании, а также коэф82
фициенты загрузки технических средств системы. Повторить те же действия при условии, что поиск информации на первой ЭВМ продолжатся
3 ± 2 мин, а на второй – 6 ± 4 мин. Когда число пользователей, получивших отказ в обслуживании, меньше?
2. В справочной информационно-поисковой службе с одним терминалом имеет место пуассоновский входящий поток требований с интенсивностью 12 приходов в час. Обслуживание требований является экспоненциальным, но среднее время обслуживания зависит от числа требований, находящихся в очереди к терминалу. Эта зависимость представлена
в таблице 4:
Таблица 4
Длина очереди, чел
0
1 или 2
3,4 или 5
6 и более
Среднее время обслуживания, мин
5,5
5
4,5
4
Смоделировать работу системы в течение 1, 8, 40 часов. Найти фактическое среднее время обслуживания, коэффициент загрузки терминала.
Повторить эти же действия при условии, что среднее время обслуживания
всегда 4,7 мин. Сравнить результаты.
3. В вычислительный зал заходят студенты, желающие произвести
расчеты на ЭВМ. Их поток является пуассоновским со значением среднего интервала, равным 10 мин. В зале имеется 1 ЭВМ, работающая в однопрограммном режиме. Время, необходимое для решения задачи, подчиняется равномерному распределению на интервале [10; 20] мин. В зале не
допускается, чтобы больше 7 человек ожидали своей очереди на доступ к
ЭВМ. Смоделировать процессы обслуживания 10, 100 и 1000 пользователей. Посчитать число пользователей, не нашедших свободного места в
очереди. Определить среднее число пользователей в очереди, а также коэффициент загрузки ЭВМ. Проанализировать результаты.
4. В специализированной вычислительной системе периодически
выполняются 2 вида заданий. Задания первого типа приходят в систему в
соответствии с пуассоновским распределением с интенсивностью 6 приходов в час, второго – в соответствии с равномерным распределением на
интервале [4; 8] мин. При запуске задания первого типа оператор использует дисплей в течение 50 ± 30 с, второго типа – 40 ± 20 с. Время, требуемое процессору для выполнения любого задания, распределено экспоненциально со значением среднего, равным 100 с. Результаты обработки задания анализируются на экране дисплея в течение 60 ± 20 с, в очереди на
83
выполнение могут стоять не больше 10 заданий первого типа и любое количество заданий второго типа.
Смоделировать работу системы до тех пор, пока не будут обработаны
10, 100, 1000 заданий первого типа. Определить коэффициенты загрузки
технических средств системы. Определить, сколько заданий первого типа
не было выполнено из-за превышения из допустимого количества в очереди. Повторить те же действия при условии, что заявки первого типа поступают в систему в соответствии с равномерным распределением на интервале [2; 4] мин. Сравнить результаты.
5. В вычислительном центре (ВЦ) есть 3 ЭВМ. Задания на обработку
поступают с интервалом в 20 ± 5 мин в пункт приема. Здесь в течение
12 ± 3 мин они регистрируются, после чего каждое задание поступает на
обработку свободной ЭВМ. Примерно в 70 % заданий обнаруживаются
ошибки. В центре имеется 1 рабочее место для корректировки задания, на
исправление ошибки уходит 3 ± 2 мин, на время корректировки задание
не освобождает соответствующую ЭВМ. Если в задании были ошибки, то
после корректировки начинается его повторная обработка, которая всегда
является окончательной. Продолжительность обработки задания на ЭВМ
распределена экспоненциально со значением среднего, равным 10 мин.
Выполнить моделирование процесса обработки 50, 500, 2000 заданий.
Определить среднее время ожидания в очереди на обработку, в очереди
на исправление ошибок и коэффициенты загрузки технических средств
ЭВМ. Выяснить, справляется ли система с обработкой поступающих заданий.
6. Вычислительная система состоит из трех ЭВМ. С интенсивностью
3 прихода в минуту в систему поступает пуассоновский поток заданий,
которые с вероятностями Р1 = 0.4, Р2, Р3 = 0.3 адресуются одной из 3-х
ЭВМ. Продолжительность обработки заданий на разных ЭВМ характеризуется интервалами времени соответственно [3; 11] мин, [2; 4] мин и [3; 7]
мин, на которых она распределена равномерно. Смоделировать процессы
обработки 20, 200 и 2000 заданий. Определить максимальные длины очередей к каждой ЭВМ и коэффициенты загрузки ЭВМ.
7. В вычислительную машину через каждые 3 ± 1 с поступает информация от датчиков и измерительных устройств. До обработки на ЭВМ
информационные сообщения, длина которых 8 байт, накапливаются в
буферной памяти объемом 64 байта. Сообщения, для которых не хватило
места в буферной памяти, теряются. Продолжительность обработки сообщений на ЭВМ имеет экспоненциальный характер со средним 5 с.
Смоделировать процессы поступления в ЭВМ 10, 100, 1000 сообщений.
Определить соответствующие коэффициенты загрузки ЭВМ.
84
8. Информационная система реального времени состоит из центрального процессора (ЦП), основной памяти (ОП) емкостью 10000 байт и
накопителя на магнитных дисках (МД). Запросы от большого числа удаленных терминалов, поступающие в систему, представляют собой пуассоновский поток с интенсивностью 10 запросов в с и обрабатываются на
ЦП за время 1 мс. После этого каждый запрос помещается в ОП либо получает отказ в обслуживании, если ОП заполнена. Каждый запрос занимает в памяти 100 байт. Для обслуживаемых запросов контроллером МД
производится поиск информации на МД, ее считывание, подготовка ответа. Все это требует 150±30 мс. После этого запрос считается обслуженным и освобождает место в ОП.
Смоделировать процесс обслуживания 10, 100 и 1000 запросов. Подсчитать число запросов, получивших отказ в обслуживании. Определить
среднее и максимальное содержимое ОП в байтах. Определить коэффициент загрузки процессора и контроллера МД.
9. В системе автоматизации экспериментов (САЭ) на базе мини-ЭВМ
данные от измерительных устройств, поступающие в буферную зону оперативной памяти, представляют собой пуассоновский поток с интенсивностью 2 сообщения в секунду. Объем буфера 256 байтов, длина одного
информационного сообщения – 2 байта. Для записи сообщения в буфер
требуется 20 мс времени работы процессора. После заполнения буфера
его содержимое записывается на магнитный диск (МД) в течение 150±20
мс. Для обработки информации на МД запускается специальная программа, требующая 100±20 с времени работы процессора.
Смоделировать процесс записи на МД 2560, 25600 байт данных.
Определить коэффициент загрузки процессора, среднее время работы
специальной программы, обрабатывающей информацию на МД.
10. Система автоматизации проектирования (САПР) создана на базе
ЭВМ, функционирующей в режиме множественного доступа. Пятеро инженеров-проектировщиков с помощью своих дисплеев одновременно и
независимо друг от друга проводят диалог с ЭВМ, определяя очередной
вариант расчета. Это занимает, как правило, 20±5 с. Затем начинается работа процессора по расчету конструкции. Время расчета распределено
экспоненциально со значением среднего 30 с. Результат работы выводится на экран за 5 сек, после чего процессор освобождается, а инженер в течение 15±5 сек анализирует результат и начинает новый диалог с ЭВМ.
Смоделировать работу САПР в течение 30 мин, 1 часа и 8 часов.
Определить среднее время выполнения диалога и расчетных операций, а
также коэффициент загрузки процессора.
85
Контрольные вопросы
1. Системы массового обслуживания. Основные понятия, вопросы их
классификации.
2. Планирование событий в моделях массового обслуживания. Понятие “таймер системного времени”.
3. Понятие транзактов и их продвижения по модели.
4. Моделирование равномерно распределенных случайных чисел в
GPSS.
5. Моделирование случайных чисел для дискретных и непрерывных
неравномерных распределений.
6. Блоки GENERATE, TERMINATE.
7. Блоки QUEUE, DEPART.
8. Блоки SEIZE, ADVANCE, RELEASE.
9. Моделирование многоканальных устройств.
10. Использование параллельно работающих каналов. Блоки ENTER,
LEAVE.
11. Блок TRANSFER.
86
Список литературы
1. Афонин В. В. Моделирование систем: учебно-практическое пособие / В. В. Афонин, С. А. Федосин. М.: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2010.
2. Агеенко И. В. Лабораторный практикум по моделированию систем: Учебное пособие / И. В. Агеенко, О. М. Демиденко. Гомель: Учреждение образования «Гомельский государственный университет имени
Франциска Скорины», 2002. 98 с.
3. Альсова О. К. Моделирование систем: Методические указания
к лабораторным работам. Часть I. Новосибирск: Типография НГТУ, 2006.
4. Румянцев М. Средства имитационного моделирования бизнеспроцессов // Корпоративные системы, № 2, 2007.
5. Верификация Estelle-спецификаций распределенных систем посредством раскрашенных сетей Петри // Под ред. Непомнящего В. А.,
Шилова Н. В. Новосибирск, 1997.
6. Гома Х. UML. Проектирование систем реального времени, параллельных и распределенных приложений. Пер. с англ. М. ДМК Пресс.
2002. 704 с.
7. Котов В. Е. Сети Петри. М.: Наука, 1984.
8. Питерсон Дж. Теория сетей Петри и моделирование систем. М.:
Мир, 1984.
9. Томашевский В., Жданова Е. Имитационное моделирование в
среде GPSS. М.: Бестселлер, 2003.
10. GPSS. http://www.compmodel.ru/394/
87
Приложение
ОСНОВНЫЕ СВЕДЕНИЯ О СИСТЕМЕ
ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ GPSS/World.
ПОЯСНЕНИЯ К РАБОТЕ
GPSS – язык моделирования, предназначенный для имитационного
моделирования систем массового обслуживания. Разработан фирмой IBM
в начале 70-х годов ХХ века и стал одним из самых распространенных
специализированных языков программирования. К основным объектам
GPSS относятся следующие.
1. Транзакты. Транзакт – некоторое сообщение (заявка, требование
на обслуживание), которое поступает извне на вход системы и подлежит
обработке. Транзакт – обязательный элемент GPSS модели.
2. Блоки. Структура программы базируется на блоках, согласно которым осуществляется продвижение транзактов. Моделирование заключается в продвижении транзактов от блока к блоку, аналогично функционированию реальной системы.
Структура простейшей модели GPSS имеет вид:
GENERATE
Блоки модели
TERMINATE
Блоки GENERATE и TERMINATE имеют особый статус: первый
имеет только выход; второй – только вход. Блок GENERATE создает
транзакты, блок TERMINATE их уничтожает.
Формат блока:
<метка> БЛОК <А>, <В>, <С>, …; comment (комментарии с использованием символов кириллицы не допустимы).
3. Устройства. Устройства делятся на одноканальные и многоканальные. Формируются в GPSS-программе с помощью блоков: SEIZE,
RELEASE (одноканальные); ENTER, LEAVE (многоканальные).
4. Очереди. Очередь возникает в случае задержки в продвижении
транзакта, или в его обработке. Для сбора и регистрации статистики об
очередях в GPSS используют блоки QUEUE, DEPART.
5. Таблицы. Таблицы используют для сбора статистических данных
и их регистрации; моделируются таблицы блоками TABLE, TABULATE.
6. Ячейки. Ячейки используют для сохранения некоторой числовой
информации с помощью блоков SAVEVALUE, MATRIXVALUE.
88
7. Функции и переменные. Задаются с помощью блоков VARIABLE,
FVARIABLE, FUNCTION.
Всего в полной версии GPSS/World – 2000 блоков, в студенческой
версии – 150 блоков.
Рассмотрим программу, реализующую имитационное моделирование
работы вычислительной системы в среде GPSS (см. пункт 1 задания):
GENERATE 360, 300
SEIZE B
ADVANCE 600, 540
RELEASE B
TERMINATE 1
START 100
Единица модельного времени задана 1 с.
Так как среднее время обработки задания больше, чем среднее время
поступления задания, в вычислительной системе с течением времени будет накапливаться очередь. Для сбора статистики об очереди вводятся
операторы QUEUE, DEPART. В этом случае программа выглядит следующим образом:
GENERATE 360,300
QUEUE BR
SEIZE B
DEPART BR
ADVANCE 600,540
RELEASE B
TERMINATE 1
START 100
Наберите эту программу в среде GPSS/World.
Студенческая версия GPSS/World не требует установки. Для запуска
программы достаточно запустить на выполнение файл GPSSW.exe. После
этого откроется среда моделирования GPSS/World. Далее необходимо
выбрать пункт меню File/Open и в открывшемся диалоговом окне Новый
документ – Создать Model. В результате будет открыто окно Untitled
Model1, в котором следует набрать текст программы.
Файл с программой можно сохранить в файле с расширением .gps
(пункты меню: File/Save; File/Save As).
Для запуска программы на выполнение необходимо выбрать пункт
меню Command/Create Simulation.
89
В результате выполнения программы моделирования работы вычислительной системы GPSS выдаст отчет:
GPSS World Simulation Report - proba31.2.1
Wednesday, January 19, 2000 20:42:57
START TIME
0.000
END TIME BLOCKS FACILITIES STORAGES
60243.977
7
1
0
NAME
B
BR
LABEL
VALUE
10001.000
10000.000
LOC
BLOCK TYPE
1
2
3
4
5
6
7
GENERATE
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
TERMINATE
FACILITY
COUNT
ENTRY
COUNT
CURRENT
166
0
166
65
101
1
100
0
100
0
100
0
100
0
RETRY
0
0
0
0
0
0
0
ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B
101
0.991
590.877
1
101
0
0
0
65
QUEUE
MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
BR
67
CEC XN PRI
101
0
66
M1
38246.575
FEC XN PRI
BDT
167
60773.872
0
166
1
31.107
11289.054 11357.472 0
ASSEM CURRENT NEXT PARAMETER
101
3
ASSEM CURRENT NEXT PARAMETER
167
VALUE
4
0
VALUE
1
Основные обозначения:
START TIME – время начала моделирования;
END TIME – время окончания моделирования;
BLOCKS – количество блоков, используемых в программе;
FACILITIES – число одноканальных устройств;
STORAGES – число многоканальных устройств.
Информация о блоках:
LOC – номер блока, назначенный системой;
BLOCK TYPE – название блока;
ENTRY COUNT – количество транзактов, прошедших через блок за
время моделирования;
90
СURRENT COUNT – количество транзактов, задержанных в блоке
на момент конца моделирования;
RETRY – количество транзактов, ожидающих специальных условий
для прохождения через данный блок.
Отчет о работе устройства:
FACILITY – название устройства;
ENTRIES – количество транзактов, прошедших через устройство;
UTIL. – вероятность загрузки устройства;
AVE. TIME – среднее время обработки одного транзакта устройством;
AVAIL. – состояние готовности устройства на момент конца
моделирования (1 –готово к обслуживанию очередной заявки; 0 – не
готово);
OWNER – номер последнего транзакта, занимающего устройство
(если не занималось, то значение 0);
PEND – количество транзактов, ожидающих устройство и находящихся в режиме прерывания;
INTER – количество транзактов, прерывающих устройство в данный
момент;
RETRY – количество транзактов, ожидающих специальных условий,
зависящих от состояния объекта типа «устройство»;
DELAY – определяет количество транзактов, ожидающих занятия
или освобождения устройства.
Статистика об очередях:
QUEUE – имя очереди;
MAX – максимальная длина очереди;
CONT. – текущая длина очереди;
ENTRY – общее количество входов;
ENTRY(0) – количество «нулевых» входов;
AVE.CONT. – средняя длина очереди;
AVE.TIME – среднее время пребывания транзактов в очереди;
AVE.(-0) – среднее время пребывания в очереди без учета «нулевых»
входов;
RETRY – количество транзактов, ожидающих специальных условий.
Информация о списке текущих событий CEC (Current Events Chain):
XN – номер транзакта;
PRI – приоритет транзакта (по умолчанию – 0);
M1 – время пребывания транзакта в системе с момента начала моделирования;
91
ASSEM – номер семейства транзактов;
CURRENT – номер блока, в котором находится транзакт;
NEXT – номер блока, в который перейдет транзакт далее;
PARAMETER – номер или имя параметра транзакта;
VALUE – значение параметра.
Информация о списке будущих событий FEC (Future Events Chain):
XN – номер транзакта;
PRI – приоритет транзакта;
BDT – таблица модельных событий – абсолютное модельное время
выхода транзакта из списка будущих событий и перехода транзакта в
список текущих событий;
ASSEM – номер семейства транзактов;
CURRENT – номер блока, в котором находится транзакт (0 – если
транзакт не вошел в модель);
NEXT – номер блока, в который перейдет транзакт далее;
PARAMETER – номер или имя параметра транзакта;
VALUE – значение параметра.
Приведем основные операторы, которые используются в программе.
1. Блок GENERATE
Для создания транзактов (заявок), входящих в модель, служит блок
GENERATE (генерировать), имеющий следующий формат:
GENERATE A,B,C,D,E
В поле A задается среднее значение интервала времени между моментами поступления в модель двух последовательных транзактов. Если
этот интервал постоянен, то поле B не используется. Если же интервал
поступления случайная величина, то в поле B указывается модификатор
среднего значения, который может быть задан в виде модификатораинтервала или модификатора-функции.
Модификатор-интервал используется, если интервал поступления
транзактов является СВ с равномерным законом распределения вероятностей. В этом случае в поле B задается диапазон изменения интервала поступления транзактов, интервал имеет границы: A–B, A+B.
Например, блок: GENERATE 100,40 создает транзакты через случайные
интервалы времени, равномерно распределенные в диапазоне (60;140).
Модификатор-функция используется, если закон распределения интервала поступления отличен от равномерного. В этом случае в поле B
92
должна быть записана ссылка на функцию (формат: FN$<имя функции>), описывающую этот закон, и случайный интервал поступления
определяется как целая часть произведения поля A (среднего значения)
на вычисленное значение функции.
В поле C задается момент поступления в модель первого транзакта.
Если это поле пусто или равно нулю, то момент появления первого транзакта определяется операндами A и B.
Поле D задает общее число транзактов, которое должно быть создано
блоком GENERATE. Если это поле пусто, то блок генерирует неограниченное число транзактов до завершения моделирования.
В поле E задается приоритет, присваиваемый генерируемым транзактам. Число уровней приоритетов неограниченно, причем самый низкий
приоритет – нулевой. Если поле E пусто, то генерируемые транзакты
имеют нулевой приоритет.
Транзакты имеют ряд стандартных числовых атрибутов (СЧА).
Например, СЧА с названием PR позволяет ссылаться на приоритет транзакта. СЧА с названием M1 содержит так называемое резидентное время
транзакта, т.е. время, прошедшее с момента входа транзакта в модель через блок GENERATE. СЧА с названием XN1 содержит внутренний номер транзакта, который уникален и позволяет всегда отличить один транзакт от другого. В отличие от СЧА других объектов, СЧА транзактов не
содержат ссылки на имя или номер транзакта. Ссылка на СЧА транзакта
всегда относится к активному транзакту, т.е. транзакту, обрабатываемому
в данный момент симулятором.
2.
Блок TERMINATE
Для удаления транзактов из модели служит блок TERMINATE
(завершить), имеющий следующий формат:
TERMINATE A
Значение поля A указывает, на сколько единиц уменьшается содержимое так называемого счетчика завершений при входе транзакта в данный блок TERMINATE. Если поле A не определено, то оно считается
равным нулю и транзакты, проходящие через такой блок, не уменьшают
содержимого счетчика завершений.
Начальное значение счетчика завершений устанавливается управляющим оператором START (начать), предназначенным для запуска прогона модели. Поле A этого оператора содержит начальное значение счетчика завершений. Прогон модели заканчивается, когда содержимое счетчи93
ка завершений обращается в ноль. Таким образом, в модели должен быть
хотя бы один блок TERMINATE с непустым полем A, иначе процесс моделирования никогда не завершится.
Текущее значение счетчика завершений доступно программисту через системный СЧА: TG1.
Участок блок-схемы модели, связанный с парой блоков GENERATEТERMINATE, называется сегментом. Простые модели могут состоять из
одного сегмента, в сложных моделях может быть несколько сегментов.
Например, простейший сегмент модели:
GENERATE 100,40
TERMINATE 1
START 1000
моделирует процесс создания случайного потока транзактов, поступающих в модель по равномерному закону в интервале: (60;140).
Начальное значение счетчика завершений равно 1000. Каждый транзакт,
проходящий через блок TERMINATE, вычитает из счетчика единицу, и
таким образом моделирование завершится, когда тысячный по счету
транзакт войдет в блок TERMINATE. При этом точное значение таймера
в момент завершения прогона непредсказуемо. Следовательно, в приведенном примере продолжительность прогона устанавливается не по модельному времени, а по количеству транзактов, прошедших через модель.
Если необходимо управлять продолжительностью прогона по
модельному времени, то в модели используется специальный сегмент,
называемый сегментом таймера. Например, в модели из двух сегментов:
GENERATE 100,40
TERMINATE
GENERATE 100000
TERMINATE 1
START 1
первый (основной) сегмент выполняет те же функции, что и в предыдущем примере. Однако, блок TERMINATE в первом сегменте используется без параметров, т.е. уничтожаемые транзакты не уменьшают содержимого счетчика завершений. Во втором сегменте блок GENERATE создаст первый транзакт в момент модельного времени, равный 100000. Но
этот транзакт окажется и последним в данном сегменте, так как, войдя в
блок TERMINATE, он обратит в ноль содержимое счетчика завершений,
установленное оператором START равным единице. Таким образом, в
94
этой модели гарантируется завершение прогона в определенный момент
модельного времени, а точное количество транзактов, прошедших через
модель, непредсказуемо.
Замечание. Не путайте ограничитель транзактов в блоке GENERATE и счетчик завершения. Ограничитель задает число транзактов, которые войдут в модель, а счетчик – число транзактов, которые выйдут из
модели. По окончании моделирования транзакты могут оставаться в модели.
3. Моделирование одноканальных устройств (ОУ)
ОУ используются при моделировании систем для имитации работы
оборудования единичной емкости, например, процессор, канал передачи
данных, человек, компьютер. Устройство в любой момент времени может
обрабатывать только одно сообщение (транзакт). Если в процессе обслуживания появляется новый транзакт, то он должен либо подождать своей
очереди, либо направиться в другое место, либо прервать обслуживание
текущего сообщения.
Блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок имеет следующий формат:
SEIZE A
Блок SEIZE задерживает сообщение, если устройство занято или
находится в состоянии недоступности. В поле А задается номер (имя) занимаемого устройства. Сообщение, занявшее устройство, пытается затем
перейти к следующему по номеру блоку. Устройство остается занятым до
тех пор, пока занимающее его сообщение не войдет в соответствующий
блок RELEASE. Прежде чем освободить устройство, сообщение может
пройти через неограниченное число блоков.
Блок RELEASE имеет следующий формат:
RELEASE A
Блок RELEASE предназначен для освобождения устройства, в поле
А задается номер (имя) освобождаемого устройства.
С одноканальными устройствами связаны следующие основные СЧА:
F$<имя (или номер) устройства> – состояние устройства (1 – свободно; 0 – занято);
FR$<имя (или номер) устройства> – коэффициент использования
устройства;
FC$<имя (или номер) устройства> – общее число входов;
95
FT$<имя (или номер) устройства> – среднее время пребывания
транзакта в устройстве.
Например, в СЧА FT$COMP хранится среднее время нахождения задания в устройстве с именем COMP.
Транзакты обслуживаются устройствами некоторое время. Для задержки транзактов на определенный отрезок модельного времени служит
блок ADVANCE (задержать), имеющий следующий формат:
ADVANCE A,B
Операнды в полях A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE.
В рассмотренных выше примерах случайные интервалы времени поступления и обслуживания заданий подчинялись равномерному закону
распределения вероятностей. Для получения случайных величин с другими распределениями в GPSS используются вычислительные объекты: переменные и функции [8, 12].
4. Очереди. Блоки QUEUE и DEPART
В GPSS объекты типа «очередь» вводятся для сбора статистических
данных. Статистика об очередях собирается в моменты входа транзакта в
блок QUEUE (вход в очередь) или в блок DEPART (выход из очереди).
Формат записи блока QUEUE:
QUEUE A,B
Блок QUEUE увеличивает длину очереди. В поле А задается номер
или имя очереди, к длине которой добавляются единицы. Операнд может
быть именем, положительным целым, СЧА. Поле В определяет число
единиц, на которое увеличивается текущая длина очереди. Если поле В
пусто, то прибавляется единица.
Если сообщение входит в блок QUEUE, то ищется очередь с именем,
определенным операндом А. Если необходимо, очередь создается. Поскольку к очереди добавляются единицы, а не сами сообщения, не составляется список членов очереди. Сообщения в этот же момент условного времени пытаются перейти к следующему блоку. Так как очередь
обычно используется для измерения времени ожидания, за блоком
QUEUE обычно следует такой блок, как SEIZE, который может задержать сообщение.
Одно и то же сообщение может одновременно увеличить длину нескольких очередей, т.е. сообщение может войти в несколько блоков
QUEUE перед тем как войти в соответствующие блоки DEPART.
96
Блок DEPART имеет следующий формат:
DEPART A,B
Блок DEPART служит для уменьшения длины очереди. В поле А задается номер или имя очереди, длину которой нужно уменьшить. В поле
В задается число единиц, на которое уменьшается длина очереди. Это
число не должно превышать текущую длину очереди. Если поле В пусто,
то длина очереди уменьшается на единицу.
С очередями связаны следующие основные СЧА:
Q$<имя (номер) очереди> – текущая длина очереди;
QА$<имя (номер) очереди> – средняя длина очереди;
QM$<имя (номер) очереди> – максимальная длина очереди;
QC$<имя (номер) очереди> – общее число входов;
QZ$<имя (номер) очереди> – количество нулевых входов;
QT$<имя (номер) очереди> – среднее время пребывания транзакта в
очереди.
5. Моделирование многоканальных устройств
В среде GPSS программа, моделирующая работу вычислительной системы, состоящей из двух компьютеров (см. пункт 2 задания), выглядит
следующим образом:
NAK STORAGE 2
GENERATE 360,300
QUEUE BR
ENTER NAK
DEPART BR
ADVANCE 600,540
LEAVE NAK
TERMINATE 1
START 100
В программе, по сравнению с пунктом 1 задания, появилась дополнительная строка NAK STORAGE 2; блоки SEIZE – RELEASE заменены
соответственно на блоки ENTER –LEAVE, моделирующие работу с многоканальным устройством (МУ).
В результате выполнения программы GPSS выдаст отчет с информацией об использовании МУ:
STORAGE – имя МУ;
97
CAP. – емкость МУ, заданная оператором STORAGE;
REM. – количество единиц свободной емкости в конце периода моделирования;
MIN. – минимальное количество емкости за используемый период;
MAX. – максимальное количество емкости за используемый период;
ENTRIES – число входов в МУ за период моделирования;
AVL. – состояние готовности МУ в конце периода моделирования (1
– МУ готово, 0 – нет);
AVE.C. – среднее значение занятой емкости за период моделирования;
UTIL. – средний коэффициент использования всех устройств МУ;
RETRY – количество транзактов, которые ожидают специальных
условий, зависящих от состояния МУ;
DELAY – определяет количество транзактов, ожидающих занятия
или освобождения устройства МУ.
Рассмотрим подробнее работу блоков, используемых в программе.
Количество устройств, которое моделирует МУ, задает пользователь
с помощью оператора STORAGE. Формат оператора:
метка STORAGE А
метка – имя МУ;
поле А – емкость МУ (число устройств, входящих в МУ).
Блок ENTER имеет следующий формат записи:
ENTER A,B
Блок ENTER позволяет вошедшему сообщению использовать МУ.
Сообщение может быть задержано на входе в блок, если МУ заполнено,
или имеющейся емкости недостаточно, или МУ в данный момент недоступно.
В поле А указывается номер или имя МУ, куда входит сообщение.
В поле В содержится число занимаемых единиц МУ. Если поле В пусто, то предполагается, что занимается одна единица. Если это значение
равно нулю, то сообщение никогда не задерживается на входе, а блок
рассматривается как нерабочий.
Одно и то же сообщение может входить в неограниченное число МУ,
а впоследствии освобождать их (или часть из них).
Блок LEAVE имеет следующий формат:
LEAVE A,B
98
Блок LEAVE освобождает определенное число единиц МУ. Поле А
блока LEAVE определяет номер или имя МУ, поле В – число освобождаемых единиц МУ. Если это поле пусто, предполагается единица. Число
освобождаемых единиц не должно превышать текущее содержимое МУ.
С многоканальными устройствами связаны следующие основные
СЧА:
S$<имя (или номер) устройства> – текущее число занятых каналов
в МУ;
SA$<имя (или номер) устройства> – среднее число занятых каналов
в МУ;
SМ$<имя (или номер) устройства> – максимальное число занятых
каналов в МУ;
SR$<имя (или номер) устройства> – коэффициент использования
МУ;
SC$<имя (или номер) устройства> – общее число входов;
ST$<имя (или номер) устройства> – среднее время занятости одного канала в МУ.
6. Работа с блоками передачи управления
Блок TRANSFER является основным средством, позволяющим
направить сообщение к любому блоку модели. Блок TRANSFER имеет
следующий формат:
TRANSFER A,B,C,D
Поле А задает режим выбора следующего блока, к которому должно
перейти сообщение. Существуют следующие режимы работы блока
TRANSFER: безусловный (пробел); статистический (.); BOTH; ALL;
PICK; функция (FN); параметр (Р); подпрограмма (SBR).
Поля В и С задают возможные значения номеров следующих блоков
или их положение. Использование значений описано при рассмотрении
определенных режимов выбора.
Безусловный режим выбора. Если операнд А пропущен, то блок
TRANSFER работает в безусловном режиме. Входящее в блок
TRANSFER сообщение переходит к блоку, указанному в поле В. Если
сообщение в этот блок войти не может, попытка направить сообщение к
какому-либо другому блоку не производится. Например,
TRANSFER ,NEXT
NEXT SEIZE 1
99
Сообщения, входящие в блок TRANSFER, сразу переходят к блоку
NEXT.
Статистический режим выбора. Если операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора.
Значение аргумента, записанного после точки (.) в поле А, рассматривается как трехзначное число, показывающее (в частях от тысячи), какой процент входящих в блок сообщений следует направить к блоку, указанному в поле С. Остальные сообщения направляются к блоку, указанному в поле В, или к следующему по номеру блоку, если операнд В пропущен. Например,
TRANSFER .7, BLK1, BLK2
Из общего числа сообщений, входящих в блок TRANSFER, в среднем 0,7 будут пытаться войти в блок с меткой BLK2; остальные 0,3 – в
блок с меткой BLK1.
Режим BOTH. В поле А стоит зарезервированное слово ВOTH. В
этом режиме каждое входящее сообщение сначала пытается перейти к
блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сообщение не сможет
перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER
и будет повторять в том же порядке попытки перехода при каждом просмотре списка текущих событий до тех пор, пока не сможет выйти из
блока TRANSFER. Ниже приведен фрагмент программы, иллюстрирующий работу режима ВOTH:
TRANSFER BOTH, TRY1, TRY2
TRY1 SEIZE 1
TRY2 SEIZE 2
Режим ALL. В поле А стоит зарезервированное слово ALL. В этом
режиме каждое входящее сообщение прежде всего пытается перейти к
блоку, указанному в поле В. Если сообщение в этот блок войти не может,
то последовательно проверяются все блоки в определенном ряду в поисках первого, способного принять это сообщение, включая последний
блок, указанный операндом С. Номер каждого проверяемого блока вычисляется как сумма номера предыдущего блока и шага, заданного операндом D. Приведем пример программы:
TRANSFER ALL, NEXT1, NEXT3, 3
100
NEXT1 SEIZE 1
…
…
NEXT2 SEIZE 2
…
…
NEXT3 SEIZE 3
В этой программе сообщение сначала пытается перейти к блоку с
меткой NEXT1, в случае неудачи – к блоку с меткой NEXT2. Если сообщение не может войти в блок с меткой NEXT2, то оно пытается перейти к блоку с меткой NEXT3. Между блоками NEXT находятся три
блока (в поле D задано 3). Если сообщение не может перейти ни к одному из указанных блоков, оно остается в блоке TRANSFER
и повторяет описанную выше процедуру при каждом просмотре списка
текущих событий до тех пор, пока не выйдет из блока TRANSFER.
Условными считаются только режимы BOTH и ALL. Во всех остальных режимах выбор следующего блока производится в момент входа сообщения в блок TRANSFER.
Режим PICK. В поле А стоит зарезервированное слово PICK. Этот
режим аналогичен режиму ALL за исключением того, что блоки, указанные в полях В и С, выбираются случайным образом с одинаковой вероятностью. Сообщение пытается перейти только к выбранному для него
блоку. Если сообщение не может сразу перейти к выбранному блоку, то
оно будет ждать в блоке TRANSFER до тех пор, пока не будет снято
блокирующее условие. Например,
TRANSFER PICK, 3,5,1
TRANSFER ,NEXT1
TRANSFER ,NEXT2
TRANSFER ,NEXT3
NEXT1 SEIZE1
…
NEXT2 SEIZE2
…
NEXT3 SEIZE3
Сообщение, вошедшее в первый блок TRANSFER, пытается войти в
один из трех блоков: NEXT1; NEXT2; NEXT3 с равной вероятностью
1/3. В полях В и С блока TRANSFER заданы номера строк, на которые
передается управление; в поле D – шаг.
101
Помимо блока TRANSFER, потоком сообщений может управлять
блок TEST. Блок TEST имеет следующий формат:
TEST X A,B,C
Он определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет.
Блок управляет потоком сообщений, проверяя выполнение алгебраических
отношений между значениями СЧА, заданных в полях А и В.
Операнды А и В – сравниваемые величины, которые могут быть именем, любым целым числом, СЧА. Во вспомогательном поле операции
оператора описания блока TEST-X записывается один из шести условных
операторов:
L – меньше; отношение истинно, если значение аргумента поля А
меньше значения аргумента поля В;
LE – меньше или равно;
E – равно;
NE – не равно;
G – больше;
GE – больше или равно.
Если отношение СЧА, заданных в полях А и В, истинно, то сообщение переходит к следующему блоку. Если отношение ложно, то сообщение переходит к блоку, номер которого задан полем С.
Поле C определяет номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может
быть именем, положительным целым числом, СЧА. Например,
TEST G M1,500,SSS
SEIZE 1
…
SSS SEIZE 2
…
Если значение времени пребывания транзакта в модели больше 500,
то переходим к следующему по номеру блоку, ложно к метке SSS.
7. Моделирование систем с использованием блоков
SPLIT, ASSEMBLE, MATCH
Пример. В систему поступают заявки по равномерному закону в интервале (3,7) мин. Для каждой заявки создается одна копия. Заявка и ко102
пия проходят параллельную обработку в двух каналах обслуживания с
одинаковой интенсивностью обслуживания (4,8) мин. После обработки
заявка и копия собираются в один пакет, который обслуживается третьим
каналом с интенсивностью (5,7) мин. Смоделировать работу системы по
обработке 100 пакетов.
Программа, моделирующая работу системы в GPSS, имеет вид:
GENERATE 5,2,,100
SPLIT 1,CHH1
SEIZE 1
ADVANCE 6,2
SSS1 MATCH SSS2
RELEASE 1
TRANSFER ,out3
CHH1 SEIZE 2
ADVANCE 6,2
SSS2 MATCH SSS1
RELEASE 2
out3 ASSEMBLE 2
SEIZE 3
ADVANCE 6,1
RELEASE 3
TERMINATE 1
START 100
Блок SPLIT создает одну копию транзакта и направляет ее по метке
CHH1 на блок SEIZE 2. При этом через блок SPLIT проходит
транзакт-родитель на следующий по номеру блок. В блоке ASSEMBLE
собираются два транзакта, а выходит из него только один. За полный
цикл моделирования в блоке ASSEMBLE собираются 200 транзактов, а
выходит из него только 100 транзактов. Формально блок ASSEMBLE
уничтожает 100 транзактов. Блоки MATCH обеспечивают синхронизацию обработки транзакта-родителя и транзакта-копии, т.е. транзактродитель по окончании обработки устройством SEIZE 1 ожидает окончания обработки копии транзакта устройством SEIZE 2, и наоборот.
Приведем описание основных блоков.
Блок SPLIT имеет следующий формат:
SPLIT A,B,C
Блок SPLIT выполняет функцию копирования входящего в него сообщения, которое называется исходным, или порождающим. В поле А
103
задается число создаваемых копий. Операнд А может быть именем, положительным целым, СЧА. Если вычисленное значение аргумента поля
А равно нулю, то блок SPLIT не выполняет никаких операций. После создания копий сообщение пытается перейти к следующему по номеру блоку. Все копии формируются в момент входа порождающего сообщения в
блок SPLIT.
Поле В задает номер следующего блока, к которому переходят копии
исходного сообщения, причем значение вычисляется для каждой копии
отдельно. Операнд В может быть именем, положительным целым, СЧА.
В поле С может быть задан номер параметра, используемого для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА. Например,
SPLIT 2,MET,1
Создаются две копии, которые передаются по метке MET. Номер копии записан в параметре P1.
Блок ASSEMBLE имеет следующий формат:
ASSEMBLE A
Блок ASSEMBLE объединяет заданное число сообщений, принадлежащих к одному семейству, в одно сообщение (т.е. осуществляет сборку
заданного числа сообщений). После сборки из блока ASSEMBLE выходит только одно сообщение, которое переходит в следующий по номеру
блок. В одном и том же блоке ASSEMBLE возможна одновременная
сборка сообщений нескольких семейств. Когда сообщение входит в блок
ASSEMBLE, интерпретатор просматривает семейство, к которому принадлежит это сообщение, и проверяет, есть ли другое сообщение из того
же семейства в данном блоке ASSEMBLE. Поле А задает число сообщений, участвующих в сборке. Операнд А может быть именем, положительным целым, СЧА.
Блок MATCH имеет следующий формат:
MATCH A
Блок MATCH используется для синхронизации движения двух сообщений, принадлежащих к одному семейству, без удаления этих сообщений из модели.
Блоки MATCH не объединяют синхронизируемые сообщения. Синхронизация осуществляется подбором пар сообщений из одного семей104
ства и задержкой этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не
задерживаются в блоке MATCH. Сообщения, для которых выполнилось
условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии
синхронизации пары сообщений из различных семейств. Возможна также
одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH.
Поле А задает имя или номер другого блока MATCH, называемого
«сопряженным блоком MATCH». Если такого блока нет, происходит
останов по ошибке. Операнд А может быть именем, положительным целым, СЧА.
8. Моделирование систем с использованием блоков PREEMPT,
RETURN
Блок PREEMPT имеет следующий формат:
PREEMPT A,B,C,D,E
Блок PREEMPT позволяет сообщению, в зависимости от условий,
заданных в операндах блока, занять устройство. Блок PREEMPT может
задержать сообщение на входе.
Поле А определяет номер или имя устройства, на котором генерируется прерывание. Операнд может быть именем, положительным целым,
СЧА.
Поле В задает приоритетный режим (PR) или режим прерывания, если операнд опущен.
Поле С задает номер или имя блока, куда должно попытаться войти
прерванное сообщение в этот же момент условного времени. Прерванное
сообщение теряет управление устройством, но претендует на право его
использования, если только не задан аргумент поля Е.
Поле D задает номер параметра, связанного с прерванным сообщением.
Поле Е задает один из следующих режимов:
 режим удаления (RE). Задание этого режима означает, что прерванное сообщение более не претендует на пользование устройством.
Прерванное сообщение пытается войти в блок, заданный полем С;
 если режим RE не задан, т.е. поле Е – пусто, то прерванное сообщение будет вновь пытаться занять устройство.
Блок RETURN имеет следующий формат:
105
RETURN A
Блок RETURN предназначен для освобождения ранее захваченного
устройства. В поле А задается номер устройства, с которого снимается
прерывание.
Приведем фрагмент программы с использованием блоков PREEMPT и
RETURN:
GENERATE 10,2
SEIZE FACIL1
ADVANCE 8,2
RELEASE FACIL1
…
GENERATE 20,2
PREEMPT FACIL1
ADVANCE 10,2
RETURN FACIL1
…
Задания, поступающие в интервале (18,22) от второго блока
GENERATE, прерывают обработку заданий устройством FACIL1, поступающих в интервале (8,12), и захватывают устройство. Далее происходит обработка приоритетных заданий, после чего прерванное задание
вновь поступает на обработку к устройству FACIL1.
106
Download