- •Лекции по дисциплине «имитационное моделирование» Введение Основные понятия имитационного моделирования
- •Условия существования моделей
- •Типовые задачи, решаемые средствами им при управлении экономическими объектами
- •Основные этапы машинного моделирования систем
- •Правила и способы реализации моделей на эвм
- •Обзор программных систем имитационного моделирования
- •Разработка имитационных моделей в среде gpss
- •Объекты
- •Часы модельного времени
- •Типы операторов
- •Блоки языка gpss
- •Управление продолжительностью процесса моделирования
- •Элементы, отображающие одноканальные обслуживающие устройства
- •Переход транзакта в блок, отличный от последующего
- •Моделирование многоканальных устройств
- •Примеры построения gpss-моделей
- •Переменные
- •Определение функции в gpss
- •Моделирование неравномерных случайных величин
- •Моделирование вероятностных функций распределения в gpss-World
- •Табулирование результатов экспериментов
- •Сча транзакты
- •Математические предпосылки создания имитационной модели Процессы массового обслуживания в экономических системах
- •Системы с одним устройством обслуживания
- •Многоканальные смо
- •Вероятностное моделирование Метод Монте-Карло
- •Способы необходимой сходимости метода Монте-Карло
- •Определение количеств реализаций при моделировании случайных величин
- •Сбор статистических данных для получения оценок характеристик случайных величин
- •Получение и преобразование случайных чисел. Датчики случайных чисел
- •Получение случайных чисел с заданным законом распределения
- •Метод Неймана (разыгрывания случайной величины)
- •Проверка гипотез по категориям типа событие – явление – поведение
- •Риски и прогнозы
- •Распределительные процессы
- •Процессы обслуживания клиентов
- •Процессы управления разработками проектов
- •Имитация информационных ресурсов
- •Денежные ресурсы
- •Перспективные направления моделирования бизнеса
- •Оценка качества имитационной модели
- •Оценка адекватности модели
- •Оценка устойчивости системы
- •Оценка чувствительности имитационной модели
- •Калибровка модели
Определение функции в gpss
В GPSS рассматривается 5 типов функций:
1) дискретная числовая D
2) непрерывная числовая С
3) табличная числовая L
4) дискретная атрибутивная Е
5) табличная атрибутивная М
Дискретная функция представляет собой кусочно-постоянную функцию.
Непрерывная функция представляет собой кусочно-непрерывную функцию.
Формат записи функций имеет вид:
< метка > function A, B
< список точек >, где
метка – имя функции (числовое или символьное);
А – СЧА или RNj (j = 1, 2...7); RN (Random) – генератор случайных чисел
В – Dn или Cn, где D определяет дискретную функцию, а С – непрерывную функцию, n – для дискретной функции – число различных значений (количество горизонтальных отрезков). Для непрерывной функции – это число, определяющее количество точек.
Список точек – начинающийся с первой позиции следующей строки список пар точек вида:
х1, у1 / х2, у2 /… / хi, yi
хi+1, yi+1 / … / хn, yn
Во всех случаях значения аргумента х должны удовлетворять неравенствам, т.е. располагаться по возрастанию х1 < x2 <… < хn
хi, yi – задают координаты х и у функции.
Ели моделируется случайная величина, то хi является i-ой суммарной (кумулятивной) частотой, yi - соответствующее значение случайной величины.
Значение функции является ее СЧА (стандартным числовым атрибутом). Если имя числовое, то к функции обращаемся через FNj, где j – номер функции. Если имя символьное, то обращение FN$ < имя функции >.
Функция должна иметь, по крайней мере, две описанные точки.
Пример1. Пусть необходимо смоделировать дискретную случайную переменную, заданную в таблице:
Значение случайной переменной |
Относительная частота |
Суммарная частота |
Интервал |
2 5 8 9 12 |
0,25 0,20 0,25 0,22 0,18 |
0,15 0,35 0,80 0,82 1 |
1 2 3 4 5 |
GPSS функции будет выглядеть следующим образом:
Serv function RN4, D5 (Serv – любое название)
.15,2 / . 35,5 / .6,8 / . 82,9 / 1,12
Если функция непрерывная, то выполняется линейная интерполяция для пары точек xi-1 и xi. При этом берется целая часть результата.
Пример2. Часто возникает ситуация, когда необходимо переходить в различные блоки программы в зависимости от логики модели. Эту задачу можно решить следующим образом с помощью переключающей функции.
perekl function RN5, D5
0.2, LВ1 / 0.4, LВ2 / 0.6, LВ3 / 0.8, L В4 / 1, LB5
generate ,,, 100
transfer, fn$ perekl
lb 1 queue stor 1
terminate 0
lb 2 queue stor 2
terminate 0
lb 3 queue stor 3
terminate 0
lb 4 и lb 5 аналогично
generate 1
terminate 1
start 1
Моделирование неравномерных случайных величин
Пусть распределение интервалов поступления через блок generate или advance не является равномерным или является равномерным с плавающими во времени значениями среднего и более допуска.
Для входа транзактов в модель необходимо использовать функции или СЧА. Использование функций, заданных в операндах блоков, зависит от контекста. В таблице приведены варианты использования функций и СЧА в качестве операндов А и В блоков generate и advance, т.е. следующие соотношения:
Операнд А |
Операнд В |
Результат |
число или
|
СЧА
|
Генерируется случайное число на интервале + , равномерно распределенное |
FN$DIS |
отсутствует |
Значение функции DIS (условное название некоторой дискретной функции) |
отсутствует |
FN$В |
Данная комбинация недопустима |
FN$DIS |
число или СЧА |
Сначала вычисляется значение функции DIS и берется целая часть этого значения ( ). Затем генерируется случайное число на интервале ± , равномерно распределенное |
число или СЧА |
FN$DIS |
Сначала вычисляется значение функции DIS и берется целая часть этого значения ( ). После чего находится произведение · . Результат равен целой части произведения. |
FN$DIS 1 |
FN$DIS 2 |
Вычисляются значения функций DIS1 и DIS2 (пусть это будут числа и ), после чего находится · и результат равен целой части произведения. |
Пусть в моделируемой системе время обслуживания некоторым устройством равномерно распределено на интервале А±2, где среднее время обслуживания А с вероятностью 0,4 принимает значение 5, а с вероятностью 0,6 – значение 7. Эту ситуацию можно смоделировать следующим образом:
average t_t function RN1, D2
.4,5 / 1,7
Использует эту функцию в блоке advance:
advance fn$ average t_t, 2
Выполнение блока advance включает расчет функции average t_t. Это в свою очередь требует обращения к генератору случайных чисел RN1. если генератор выдаст число меньше, чем 0,4, то значение функции будет равно 5 и задержка транзакта составит 5 ± 2, равномерно распределенная.
В GPSS возможно задавать произвольные функции распределения случайных величин, используя табличную запись, поэтому можно задать только те функции, которые легко преобразовать для новых значений параметров.
К таким функциям
относится: функция экспоненциального
распределения с
=1,
а также стандартное нормальное
распределение с мат. ожиданием [M]
= 0 и СКО
= 1.
Эти ограничения не касаются в значительной мере языка GPSS World, в котором для задания различных функций распределения можно использовать библиотечные процедуры, написанные на языке PLUS.
Рассмотрим табличный способ задания пуассоновского потока заявок. Этот поток описывается так:
вероятность поступления k заявок в течение интервала времени t составляет:
k = 1, 2…; - интенсивность потока.
Интервалы между соседними заявками распределены по экспоненциальному закону.
Согласно методу обратной функции, можно получить ряд чисел, которые имеют экспоненциальное распределение, если ряд случайных чисел r – равномерно распределен на интервале от 0 до 1.
Используем следующую формулу:
tj = - Tln (rj), где
rj – равномерно распределенное число;
- средний интервал
времени поступления заявок, т.е. мат
ожидание.
Определить экспоненциальное распределение с = 1 можно следующим образом:
xp dis function rn 1, С24
0,0/.1, .104/.2, .222/.3, .355/.4, .509/
.5, .69/.6, .915/.7, 1.2/.75, 1.38/
.8, 1.6/.84, 1.83/.88, 2.12/.9, 2.3/
.92, 2.52/.94, 2.81/.95, 2.99/.96, 3.2/
.97, 3.5/98, 3.9/.99, 4.6/.995, 5.3/
.998, 6.2/.999, 7/.9998, 8
Пуассоновский входящий поток с интенсивностью , отличной от 1, моделируется с помощью блока generate следующим образом:
в качестве операнда А используется среднее значение интервала Т = 1/ .
в качестве операнда В используется СЧА – значение функции XPDIS
Пример. Пусть среднее значение Т = 2 часа, а единица модельного времени 1 мин, тогда поступление заявок пуассоновского потока моделируется следующим образом: generate 120, fn$ XPDIS
Если необходимо моделировать задержку, распределенную по экспоненциальному закону со средним значением времени 345, то для этого используется блок advance 345, fn$ XPDIS.
Экспоненциальное распределение не всегда адекватно описывает время обслуживания и поступления требований в систему. Более реалистичным является распределение Эрланга. Это распределение получается с помощью последовательного соединения k устройств с экспоненциальным временем обслуживания. И соответственно это распределение будет называться распределением порядка k.
Пример. Поток Эрданга 2-го порядка со средним значением времени поступления 180 можно задать так:
generate ,,, 1
sdfg advance 90, fn$ XPDIS
advance 90, fn$ XPDIS
split – разделение
split 1, sdfg
…
terminate 1
В нулевой момент времени в модель вводится транзакт, который в каждом из двух последующих блоков advance задерживается на экспоненциально распределенный промежуток времени.
Блок split создает одну копию транзакта и направляет ее на блок с меткой sdfg, а исходный транзакт поступает в модель.
generate 180
terminate 1
generate 4,1
start
Для того, чтобы исследовать свойства распределения Эрланга можно воспользоваться следующей моделью:
< описать функцию XPDIS >
TP table x2, 1, 20, 50
generate ,,, 1
sdfg advance 100, fn$ XPDIS
advance 100, fn$ XPDIS
advance 100, fn$ XPDIS
split 1, sdfg
savevalue 2, c 1
savevalue 2-, x 1
savevalue 1, c 1
tabulate TP
terminate 1
Запуск модели осуществляется командой start 100000000.
Для просмотра графика гистограммы необходимо запустить модель и после вывода стандартного отчета в пункте меню Windows выбрать пункт Windows table.
