интересно
Предыдущая | Содержание | Следующая

Использование законов распределения случайных величин при имитации экономических процессов

Рассмотрим приемы, которые автоматически выполняются в современных системах имитационного моделирования . Однако если читатель захочет самостоятельно реализовать какой-либо прием, то он сможет это сделать, используя приводимые ниже тексты программных модулей.

Равномерное распределение на интервале (0,1). В литературе приводились описания разных датчиков случайных величин для получения последовательностей чисел, распределенных по какому-то случайному закону. Основная проблема заключалась в программной реализации равномерного распределения на интервале (0, 1). Существуют различные методы получения такого равномерного распределения. Остановимся на программном генераторе, наиболее подходящем для компьютеров с 32-разрядным словом. Период последовательности, получаемой с помощью такого генератора, на несколько порядков превосходит период, получаемый по методу, рассмотренному в разд. 1.2.

Рассмотрим текст функции на языке C++, реализующей этот генератор и возвращающей величину, равномерно распределенную на интервале (0,1). Данная функция реализует одну из разновидностей мультипликативного конгруентного метода. Генератор предназначен для применения в системе имитационного моделирования, позволяющей параллельное моделирование сложной сети взаимодействующих процессов, причем каждый процесс может иметь свой датчик псевдослучайных величин. Поэтому в качестве глобальной переменной рассматривается указатель к - адрес управляющей структуры такого процесса, имеющего номер next. Ниже следует текст программы:

Внутри этой структуры расположено 32-разрядное поле Ьх, которое адресуется как k-*bx. Перед моделированием управляющая программа должна занести в это поле длинное нечетное число, например k-bx=(long)2098765431. Следует отметить, что для каждого процесса нужно задать свое число. Этого можно достигнуть, например, применяя для каждого следующего инициируемого процесса начальное значение предыдущего, уменьшенное на 2. Если мы хотим резко повысить эффективность работы этой функции и еще сильнее приблизить псевдослучайную последовательность к случайной, то можно в качестве начального значения использовать битовую последовательность таймера ЭВМ: k-bx=(long)time(NULL). Далее это число проверяется на нечетность, и если оно четное, то его необходимо увеличить на 1.

Описанная процедура в основном применяется для получения более сложных распределений, как дискретных, так и непрерывных. Эти распределения получаются с помощью двух основных приемов:

обратных функций;

комбинирования величин, распределенных по другим законам, например по равномерному на интервале (0,1).

Равномерное распределение на произвольном интервале. Рассмотрим важное и очень простое равномерное распределение на интервале (m-s, m+s). Плотность вероятностей этого распределения описывается следующей формулой:

Такое распределение используется, если об интервалах времени известно только то, что они имеют максимальный разброс, и ничего не известно о распределениях вероятностей этих интервалов.

Программная функция на языке C++ приведена ниже (два ее входных параметра не нуждаются в комментариях):

Равномерное распределение можно использовать при расчетах по сетевым графикам работ, в том числе при работе по методу PERT. Это распределение можно применять и при расчетах основных длительностей и времен в военном деле (времени выдвижения воинской части или ее подразделения на исходный рубеж, времени марша, времени подготовки рубежа обороны и др.).

Формула для определения дисперсии получается после получения второго момента:

Пример таких частот для N =7 представлен в табл. 1.3. Первая строка таблицы - это номер объекта, а вторая -частота его выбора. Требуется разработать программную функцию, которая должна возвращать значение номера объекта в соответствии с этими частотами.

Воспользуемся методом обратных функций. Сначала найдем сумму всех частот:

(третья строка табл. 1.3). Далее

рассчитаем значения дискретной функции у, по формуле

Значения у, находятся в четвертой строке табл. 1.3.

Построим график дискретной функции у, (рис. 1.1). Далее воспользуемся рассмотренной выше программой получения случайных величин, распределенных равномерно на отрезке (0,1), и каждый раз будем получать случайную величину pt. Условимся, что уо = 0 . После этого выбор объекта с номером / осуществляется при выполнении соотношения

Нормальное распределение. Нормальное, или гауссово распределение, - это, несомненно, одно из наиболее важных и часто используемых видов непрерывных распределений. Оно симметрично относительно математического ожидания. Сначала остановимся на практическом смысле этого распределения применительно к экономическим задачам и сформулируем центральную предельную теорему теории вероятностей в следующей практической интерпретации.

где т - математическое ожидание M[t]; о - среднеквадратичное отклонение.

Непрерывная случайная величина t имеет нормальное распределение вероятностей с параметрами т и а > 0, если ее плотность вероятностей имеет вид (рис. 1.2):

Рассмотрим временные диаграммы на рис. 1.3. Предположим, что какой-то случайный процесс состоит из последовательности и элементарных независимых процессов. Длительность каждого элементарного процесса tt - это случайная величина, распределенная по неизвестному закону с математическим ожиданием tt и дисперсией ст?. Допустим, что это непрерывное распределение (допущение,

справедливое для нормальной жизни общества, где существует природная инертность), причем третий момент должен иметь ограничение по абсолютной величине (это также, естественно, реальное условие). Справедливо соотношение

устремится к нормальному с математическим ожиданием M[t] и дисперсией D[t], определяемыми из следующих соотношений:

В различных математических постановках центральная предельная теорема рассматривается в научной литературе по теории вероятностей и математической статистике.

Практический смысл этой теоремы очень прост. Любые сложные работы на объектах экономики (ввод информации из документа в компьютер, проведение переговоров, ремонт оборудования и др.) состоят из многих коротких последовательных элементарных составляющих работ. Причем количество этих составляющих работ иногда настолько велико, что требования в приведенной выше теореме о независимости и- одинаковом распределении становятся излишними. Поэтому при оценках трудозатрат всегда справедливо предположение о том, что их продолжительность - это случайная величина, которая распределена по нормальному закону.

Ниже приведена функция на C++, возвращающая нормально распределенную случайную величину:

Работа функции основана на применении центральной предельной теоремы. При получении одного числа используются 12 равномерно распределенных на отрезке (0, 1) величин, которые суммируются. Последовательность чисел, распределенных равномерно на отрезке (0,1), имеет математическое ожидание 1/2 и дисперсию 1/12. С учетом центральной предельной теоремы сумма таких 12 чисел имеет математическое ожидание 6 и дисперсию 1. После суммирования выполняются необходимые действия для обеспечения параметров нормального распределения: математического ожидания т и дисперсии о2.

Входными параметрами этой функции являются:

m - математическое ожидание M[t];

Преимущество этой функции - высокое быстродействие. Недостатком является игнорирование хвостов нормального распределения, которые могут уходить в обе стороны от величины т на расстояние, превышающее 6а. Поэтому при проведении особо точных экспериментов применяются другие - более точные (но более медленные) функции. В современных системах имитационного моделирования обычно используются не менее двух программных датчиков, случайных величин, распределенных по нормальному закону (их выбор осуществляется автоматически управляющей программой).

Экспоненциальное распределение. Оно также занимает очень важное место при проведении системного анализа экономической деятельности. Этому закону распределения подчиняются многие явления, например:

время поступления заказа на предприятие;

посещение покупателями магазина-супермаркета;

телефонные разговоры;

срок службы деталей и узлов в компьютере, установленном, например, в бухгалтерии.

очень мала и не зависит от наступления других событий, то интервалы времени между последовательностями событий распределяются по экспоненциальному закону с плотностью вероятностей

Особенностью этого распределения являются его параметры:

;

Математическое ожидание равно среднеквадратичному отклонению, что является одним из основных свойств экспоненциального распределения.

между двумя событиями полученного суммарного потока, состоящего из п событий, где

в суммарном потоке событий, состоящем из к.элементарных потоков, устремится к экспоненциальному с математическим ожиданием

Следствие (без доказательства). Поток заявок, интервал поступления которых в некую систему имеет экспоненциальное распределение, является простейшим.

Прокомментируем практический смысл этой теоремы.

Пример 1.2. Допустим, что имеется некая крупная фирма. Клиенты фирмы - это физические и юридические лица. Каждый из них может иметь набор планов и расписанных дел на значительном интервале времени. Однако если рассмотреть суммарный поток обращений этих клиентов к служащим фирмы по разным вопросам, то интервал времени между двумя последовательными обращениями в соответствии с рассмотренной теоремой является случайной величиной, распределенной по экспоненциальному закону.

Перейдем к рассмотрению функции, позволяющей получить псевдослучайную последовательность, распределенную по экспоненциальному закону. Текст соответствующей программы на C++:

)

Единственный входной параметр программы - математическое ожидание m= M[f]. В этой программе использован метод обратных функций.

среднюю длительность элементарной

то плотность вероятностей распределения

Эрланга представляется следующей формулой:

Очевидно, что при к= - это экспоненциальное распределение. Разновидности этого распределения для разных к > О представлены на рис. 1.5.

Рассмотрим программную функцию, реализующую такое распределение:

Эта функция имеет два входных параметра:

m - математическое ожидание элементарного интервала времени,

причем m=l/Xt,

s - среднее число элементарных отрезков в общей длительности

процесса.

. Однако при 0 < s < 0 это распределение меняется коренным образом: фактически мы получаем процесс испытаний Бернулли. В результате этих испытаний успехом считается получение элементарного отрезка, распределенного по экспоненциальному закону с математическим ожиданием m (вероятность успеха равна s), а неудачей с вероятностью 1- s является получение элементарного отрезка с нулевой длиной. Если по такому правилу будет работать какой-то генератор заявок, то он будет создавать группы

, а сред-

ний интервал времени между двумя последовательными группами равен т.

Что касается дисперсии, то она существенно меняется и определяется по формуле:

Одно из свойств групповых потоков заключается в том, что среднеквадратичное отклонение интервала между заявками превосходит математическое ожидание этого интервала.

Если имеется возможность собрать статистику по групповому потоку на практике или получить такой поток с помощью рассмотренной выше программной функции, то можно определить коэффициент вариации с и связь этого коэффициента со средним размером группы заявок по формуле

Это соотношение позволяет-отслеживать появление групповых потоков в реальных системах или в их имитационных моделях.

Обобщенное распределение Эрланга применяется при создании как чисто математических, так и имитационных моделей в двух случаях.

Во-первых, его удобно применять вместо нормального распределения, если модель можно свести к чисто математической задаче, применяя аппарат марковских или полумарковских процессов либо используя метод Кендалла. Однако такие модели далеко не всегда адекватны реальным процессам.

Во-вторых, в реальной жизни существует объективная вероятность возникновения групп заявок в качестве реакции на какие-то действия, поэтому возникают групповые потоки. Применение чисто математических методов для исследования в моделях эффектов от таких групповых потоков либо невозможно из-за отсутствия способа получения аналитического выражения, либо затруднено, так как аналитические выражения содержат большую систематическую погрешность из-за многочисленных допущений, благодаря которым исследователь смог получить эти выражения. Для описания одной из разновидностей группового потока можно применить обобщенное распределение Эрланга, которое рассмотрим ниже. Внешне похожее на гамма-распределение, оно имеет свои математические особенности.

Появление групповых потоков в сложных экономических системах приводит к резкому увеличению средних длительностей различных задержек (заказов в очередях, задержек платежей и др.), а также к увеличению вероятностей рисковых событий или страховых случаев.

Треугольное распределение. Применимость такого распределения рассмотрим на примере, связанном с динамическими характеристиками системы управления базами данных (СУБД) в экономической информационной системе.

Пример 1.3. Предположим, что база данных находится на компьютере, не входящем в состав какой-либо вычислительной сети. Поэтому пользователь, работающий с этой базой, имеет во время работы монопольный доступ к ней. Известны структуры и частоты запросов пользователей к этой базе данных. Рассмотрим три случая физической организации базы данных (рис. 1.6).

Первый случай. Допустим, что администратор базы данных (системный программист) осуществил физическую организацию данных, которая обладает следующими свойствами:

наиболее вероятное время ответа на запрос близко к 0 с;

минимальное вероятное время ответа не менее 0 с;

максимальное вероятное время ответа не превышает 15 с;

распределение вероятностей представлено линией 1 на рис. 1.6.

Этот системный программист обеспечил минимальное время для наиболее вероятных запросов за счет увеличения времени для менее вероятных. Среднее время получения ответа в этом случае / = 5 с. *

Второй случай. Администратор базы данных по просьбе пользователей решил уменьшить время ответа на те запросы, которые редко возникают. Для этого он переделал физическую организацию данных и получил следующие ее свойства:

наиболее вероятное время ответа на запрос равно 5 с;

минимальное вероятное время ответа не менее 0 с;

максимальное вероятное время ответа не превышает 10 с;

распределение вероятностей показано линией 2 на рис. 1.6.

Таким образом, системный программист обеспечил снижение времени ответа для менее вероятных запросов за счет увеличения времени ответа для наиболее вероятных. Среднее время получения ответа осталось тем же: t = 5 с.

Третий случай. Администратор базы данных решил еще более уменьшить время ответа на менее вероятные запросы. Для этого он опять переделал физическую организацию данных и получил следующие свойства:

наиболее вероятное время ответа на запрос равно 7,5 с;

минимальное вероятное время ответа не менее 0 с;

максимальное вероятное время ответа не превышает 7,5;

распределение вероятностей изображено линией 3 на рис. 1.6. Этот системный программист обеспечил дальнейшее снижение

Возникает естественный вопрос: Какая физическая организация лучше?. Если отбросить факторы, определяющие большую или меньшую важность запросов, и вспомнить, что база данных не имеет множественного доступа из вычислительной сети, то можно утверждать, что все три способа организации данных одинаковы, так как пользователи этой базы имеют одно и то же среднее время ответа.

Однако если подключить компьютер с нашей базой к локальной вычислительной сети и разрешить доступ к базе данных большому числу пользователей этой сети из рабочих компьютеров этих пользователей, то необходимо учитывать возникновение очереди запросов к базе данных при ее монопольном использовании. Предположим, что число пользователей довольно велико и выполняются условия предельной теоремы о суперпозиции потоков событий (в нашем случае возникновение запроса к базе данных - это событие). Тогда поток запросов к базе простейший (экспоненциальное распределение интервала поступления). Поэтому выполняются условия, при которых справедлива следующая формула для оценки средней задержки запросов в очереди (формула Поллачека-Хинчина):

- искомая средняя задержка в очереди;

- среднее время обслуживания;

;

- коэффициент вариации времени обслуживания.

Загрузка не изменяется, так как поток запросов к базе данных тот же самый. Однако разброс значений в первом случае примерно в 3 раза больше, чем в третьем. Соответственно с} может быть больше приблизительно в 9 раз (т.е. на порядок!), а это часть множителя в числителе формулы.

После этого можно сделать вывод, что задержка в очереди в первом случае будет значительно больше, чем в третьем. Во втором случае задержка в очереди также будет превосходить задержку, возникающую в третьем случае. Поэтому наиболее рациональным относительно возникающих задержек является третий способ организации базы данных.

Выражения для определения математического ожидания M[t] и дисперсии D[t] получаются интегрированием с использованием определений первого и второго моментов:

Ниже приведен текст программной функции на C++, возвращающей случайную величину, распределенную по треугольному закону:

Эта программа использует метод обратных функций. Она имеет три входных параметра:

а - минимально возможное значение интервала времени;

b - максимально возможное значение интервала времени;

m - наиболее вероятное значение интервала времени (максимум плотности вероятностей).