- •Глава 1. Принципы моделирования случайных элементов 6
- •Глава 3. Метод Монте-Карло и его применения 51
- •3.4. Задания 63
- •Глава 4. Система моделирования gpss 64
- •Глава 5. Моделирование сложных систем на основе gpss 127
- •5.2.1. Иммитационная модель системы 136
- •Глава 6. Задания лабораторного практикума по gpss 152
- •Глава 7. Статистическое моделирование в финансовом анализе. 181
- •Введение
- •Глава 1.Принципы моделирования случайных элементов
- •1.1. Моделирование случайных величин
- •1.1.1.Моделирование базовых случайных величин (бсв) Понятие бсв
- •Датчики бсв
- •Метод Макларена-Марсальи
- •Специальные тесты проверки точности моделирования бсв
- •Тест «совпадения моментов»
- •Тест «ковариация»
- •Тест «равномерность двухмерного распределения»
- •1.1.2.Статический анализ точности моделирования
- •1.1.3.Задания
- •1.2. Моделирование дискретных случайных величин (дсв)
- •1.2.1.Понятие дсв. Общая схема алгоритма моделирования
- •1.2.3.Графический анализ точности моделирования
- •1.2.4.Задания
- •Дискретное равномерное распределение
- •1.3. Моделирование непрерывных случайных величин (нсв)
- •1.3.1.Понятие нсв. Универсальные методы моделирования нсв. Понятие нсв.
- •Метод обратной функции.
- •Метод исключения
- •1.3.2.Тесты проверки точности моделирования нсв Критерии согласия
- •- Критерий согласия Пирсона
- •Критерий согласия Колмогорова.
- •Критерий серий
- •Критерий “нисходящих” и ”восходящих” серий
- •1.3.3.Алгоритмы моделирования для основных непрерывных распределений Равномерное распределение
- •Алгоритм моделирования
- •Одномерное нормальное распределение
- •Алгоритм моделирования
- •Экспоненциальное распределение
- •Алгоритм моделирования
- •Распределение Лапласа
- •Алгоритм моделирования
- •Алгоритмы моделирования:
- •Бета-распределение.
- •Связь с другими распределениями
- •Алгоритмы моделирования:
- •Алгоритмы моделирования
- •Алгоритм моделирования
- •Моделирование случайных величин с заданной гистограммой
- •Алгоритм моделирования
- •Моделирование случайных величин с заданным полигоном частот
- •1.3.4.Задания Равномерное распределение
- •Одномерное нормальное распределение
- •Распределение Лапласа
- •Распределение Вейбулла-Гнеденко
- •Гамма распределение
- •Бета-распределение
- •Распределение Коши
- •Логистическое распределение
- •Распределение Стьюдента
- •Распределение Фишера
- •3.2. Вычисление определенного интеграла методом Монте-Карло
- •Пример.
- •Текст программы:
- •3.3. Решение системы алгебраических уравнений методом Монте-Карло
- •3.4. Задания
- •Глава 4.Система моделирования gpss
- •4.1. Краткие сведения из теории
- •4.2. Основные правила и операторы языка gpss
- •4.2.1.Структура операторов gpss
- •4.2.2.Основные операторы языка gpss
- •4.3. Основные блоки gpss/pc и связанные с ними объекты
- •4.3.1.Блоки, связанные с транзактами
- •4.3.2.Блоки, связанные с аппаратными объектами
- •4.3.3.Блоки для сбора статистических данных
- •4.3.4.Блоки, изменяющие маршруты транзактов
- •4.3.5.Блоки, работающие с памятью
- •4.3.6.Блоки для работы со списками пользователя
- •4.4. Управляющие операторы gpss/pc
- •4.5. Некоторые приемы конструирования gpss-моделей
- •4.5.1.Косвенная адресация
- •4.5.2.Обработка одновременных событий
- •4.6. Команды gpss/pc и технология работы с пакетом
- •4.6.1.Загрузка интегрированной среды
- •4.6.2.Ввод новой модели
- •4.6.3.Редактирование текста модели
- •4.6.4.Запись и считывание модели с диска
- •4.6.5.Прогон модели и наблюдение за моделированием
- •4.6.6.Получение и интерпретация стандартного отчета
- •5.1.3.Анализ результатов иммитационного моделирования
- •5.2. Моделирование работы участка цеха
- •5.2.1.Иммитационная модель системы
- •110 Generate 30,5 Первый сегмент модели
- •280 Generate 20,5 Второй сегмент модели
- •450 Generate 480 Третий сегмент модели (таймер)
- •5.2.2.Анализ результатов иммитационного моделирования
- •Обсуждение результатов моделирования
- •105 A2 storage 2 Второй станок моделируется как накопитель
- •5.3. Порядок оформления отчета
- •5.3.1.Содержание отчета
- •Задания для самопроверки
- •5.3.2.Создание выходного файла
- •Задание для домашней подготовки
- •5.3.3.Описание элементов выходного файла
- •Глава 6.Задания лабораторного практикума по gpss
- •Глава 7.Статистическое моделирование в финансовом анализе.
- •7.1. Моделирование наращенных сумм и современных величин платежа.
- •Задание 4.
- •7.2. Моделирование величины реальной наращенной суммы платежей с учетом инфляции.
- •7.3. Моделирование обменного курса валют при двойной конверсии валют.
- •Приложение
- •Примечание к таблице п.3
- •Литература
4.3.6.Блоки для работы со списками пользователя
Так как заблокированные транзакты находятся в списке текущих событий, то при большом количестве таких транзактов симулятор расходует слишком много времени на просмотр этого списка с целью выбора очередного транзакта для продвижения. Для экономии машинного времени заблокированные транзакты целесообразно помещать в так называемые списки пользователя и оставлять их там до тех пор, пока не выполнятся условия, позволяющие дальнейшее продвижение этих транзактов. Кроме того, размещение ожидающих транзактов в списках пользователя позволяет организовать различные дисциплины очередей, отличные от дисциплины “раньше пришел — раньше обслужен”, реализованной в списке текущих событий.
Списки пользователя представляют собой некоторые буферы, куда могут временно помещаться транзакты, выведенные из списка текущих событий. В отличие от списков текущих и будущих событий транзакты вводятся в списки пользователя и выводятся из них не автоматически, а в соответствии с логикой модели с помощью специальных блоков.
Для ввода транзактов в список пользователя служит блок LINK (ввести в список), который может быть использован в двух режимах: условном и безусловном. Ограничимся рассмотрением лишь безусловного режима, в котором блок LINK имеет следующий формат:
имя LINK A,B
В поле A задается имя или номер списка пользователя, в который безусловным образом помещается транзакт, вошедший в блок. Поле B определяет, в какое место списка пользователя следует поместить этот транзакт. Если в поле B записано ключевое слово FIFO, то транзакт помещается в конец списка, если LIFO — в начало списка. В других случаях транзакты упорядочиваются в соответствии с вычисленным значением поля B, где обычно записывается один из СЧА транзактов, таких как PR, M1 и ли P. Если поле B содержит СЧА PR, то транзакты упорядочиваются по убыванию приоритета. В остальных случаях производится упорядочение по возрастанию указанного СЧА.
Например, блок
LINK 5,FIFO
помещает транзакты в список пользователя с номером 5 в порядке их поступления в блок. Блок
LINK BUFER,P$ORDER
помещает транзакты в список пользователя с именем BUFER, упорядочивая их по возрастанию параметра с именем ORDER.
Условия, при которых транзакт помещается в список пользователя, в безусловном режиме проверяются средствами, предусмотренными разработчиком модели. Например, направить транзакт в список пользователя в случае занятости устройства можно так, как показано на рис. 16. Если устройство с именем FAC4 занято, то блок GATE не впускает транзакт в блок SEIZE, а направляет его в блок LINK с именем WAIT, и транзакт вводится в конец списка пользователя с именем BUFER.
..................
GATE NU FAC4,WAIT
SEIZE FAC4
....................
WAIT LINK BUFER,FIFO
....................
Рис. 16
Для вывода одного или нескольких транзактов из списка пользователя и помещения их обратно в список текущих событий служит блок UNLINK (вывести из списка), имеющий следующий формат:
имя UNLINK X A,B,C,D,E,F
В поле A указывается имя или номер списка пользователя. Поле B содержит имя блока, в который переходят выведенные из списка пользователя транзакты. В поле C указывается число выводимых транзактов или ALL для вывода всех находящихся в списке транзактов.
Операнды в полях D и E вместе со вспомогательным операндом X определяют способ и условия вывода транзактов из списка пользователя. Если поля D и E пусты, то и операнд X не используется, а транзакты выводятся с начала списка пользователя. Если поле D содержит ключевое слово BACK, то поле E и вспомогательный операнд X не используются, а транзакты выводятся с конца списка. В остальных случаях значение поля D интерпретируется как номер параметра транзактов, находящихся в списке пользователя, а из списка выводится заданное число тех транзактов, у которых значение этого параметра по отношению к значению операнда в поле E удовлетворяет условию, заданному вспомогательным операндом X. Операнд X принимает те же значения, что и в блоке TEST.
В поле F указывается имя блока, куда переходит транзакт, выходящий из блока UNLINK, если из списка пользователя не выведен ни один транзакт. Если это поле пусто, то выводящий транзакт переходит в следующий блок независимо от количества выведенных транзактов.
Например, блок
UNLINK 5,NEXT,1
выводит из списка пользователя с номером 5 один транзакт с начала списка и направляет его в блок с именем NEXT. Блок
UNLINK BUFER,ENT1,1,BACK
выводит из списка пользователя с именем BUFER один транзакт с конца списка и направляет его в блок с именем ENT1. Блок
UNLINK E P$UCH,MET2,ALL,COND,P$COND,MET3
выводит из списка пользователя, номер которого записан в параметре UCH выводящего транзакта, и направляет в блок с именем MET2 все транзакты, содержимое параметра COND которых равно содержимому одноименного параметра выводящего транзакта. Если таких транзактов в списке не окажется, то выводящий транзакт будет направлен в блок с именем MET3, в противном случае — к следующему блоку.
Следует отметить следующие особенности выполнения блока UNLINK. Во-первых, если поля D и E содержат ссылки на СЧА транзактов, то поле D вычисляется относительно транзактов в списке пользователя, а поле E — относительно активного транзакта. Во-вторых, после вывода транзактов из списка симулятор продолжает или начинает продвижение транзакта с наивысшим приоритетом, а при равенстве приоритетов отдает предпочтение транзакту-инициатору вывода.
Каждый список пользователя имеет следующие СЧА: CH — текущая длина списка; CA — средняя длина списка (целая часть); CM — максимальная длина списка; CC — общее число транзактов, вошедших в список; CT — целая часть среднего времени пребывания транзакта в списке.
Воспользуемся рассмотренными блоками для моделирования многоканальной СМО с ожиданием транзактов в списке пользователя (рис. 17). Если МКУ с именем STO2 не заполнено, блок GATE впускает вновь прибывший транзакт в блок ENTER, и в М КУ занимается один канал. Если же МКУ заполнено, то блок GATE направляет транзакт в блок LINK с именем WAIT, помещающий транзакт в конец списка пользователя с именем BUFER, моделирующего очередь к МКУ. Каждый транзакт, покидающий МКУ по завершении обслуживания и освобождающий один канал, проходит блок UNLINK и выводит один транзакт с начала списка (если список не пуст), направляя его в блок с именем ENT1 на занятие канала в МКУ.
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
GATE SNF STO2,WAIT
ENT1 ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
UNLINK BUFER,ENT1,1
TERMINATE 1
WAIT LINK BUFER,FIFO
Рис. 17
Заметим, что для изменения дисциплины обслуживания на “позже пришел — раньше обслужен” достаточно или заменить в поле B блока LINK FIFO на LIFO, или записать в поле D блока UNLINK операнд BACK. Следует также обратить внимание на то, что блоки QUEUE-DEPART для сбора статистики об ожидающих транзактах не используются, так как почти все те же данные можно получить из статистики о списке пользователя.
Рассмотрим еще один пример, иллюстрирующий использование списков пользователя для организации нестандартных дисциплин обслуживания. Пусть в одноканальной СМО с ожиданием требуется организовать такую дисциплину, при которой приоритет от дается заявкам с наименьшим временем обслуживания. Такая модель будет иметь вид, показанный на рис. 18.
В параметр TSRV поступающих в модель транзактов в блоке ASSIGN записывается случайное время обслуживания, вычисляемое с использованием функции EXP. Если устройство SYSTEM свободно, то блок GATE впускает транзакт в блок SEIZE, и устройство занимается на время P$TSRV. Если же в момент поступления транзакта устройство занято, то блок GATE направляет транзакт в блок LINK, который вводит транзакт в список пользователя LINE, упорядочивая транзакты по возрастанию времени обслуживания, записанного в параметре P$TSRV. Блок UNLINK по освобождении устройства выводит с начала списка транзакт с наименьшим временем обслуживания, обеспечивая тем самым заданную дисциплину.
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV
Рис. 18
