Главная / Моделирование систем / Алгоритмы имитации нсв на основе метода обратных функций

Алгоритмы имитации нсв на основе метода обратных функций

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

Равномерное распределение. НСВ имеет равномерное распределение, если ее плотность распределения задается следующим выражением:

Где a и b — конкретные числа (границы распределения).

НСВ, распределенная по равномерному закону (или равномерная НСВ), может примерно с одинаковой вероятностью попадать на любой участок диапазона [a, b], но не может выходить из этого диапазона.

Алгоритм имитации равномерной НСВ по методу обратных функций строится в следующем порядке.

1. Находится функция распределения НСВ:

2. Записывается уравнение F(X)=R:

3. Из уравнения F(X)=R находится выражение для X:

X = a + (b-a)R. (1.17)

Пример решения задачи с использованием равномерной НСВ приведен в разделе 1.8.

Экспоненциальное (показательное) распределение. НСВ имеет экспоненциальное распределение, если ее плотность распределения задается следующим выражением:

Где l — параметр распределения (некоторое число).

Экспоненциальная НСВ может принимать (теоретически) любые неотрицательные значения.

Примечание. Экспоненциальные НСВ частo применяются при решении задач с использованием методов, основанных на теории массового обслуживания. Интервалы времени между событиями в пуассоновском потоке событий (например, в потоке заявок в СМО), имеющем интенсивность l, представляют собой НСВ, распределенные по экспоненциальному закону с параметром l; при этом средний интервал времени между событиями в потоке равен 1/l.

Для имитации экспоненциальных НСВ по методу обратных функций получена следующая формула:

(1.18)

Так как величина 1-R, как и R, представляет собой СРРЧ, для имитации экспоненциальных НСВ можно использовать следующую формулу:

(1.19)

Распределение Эрланга k-го порядка. НСВ, распределенная по закону Эрланга k-го порядка, представляет собой сумму k величин, распределенных по экспоненциальному закону. Поэтому для имитации распределения Эрланга во многих случаях можно применять формулу (1.19). Например, если требуется имитировать интервалы времени между событиями (например, заявками в СМО), образующими поток Эрланга k-го порядка с интенсивностью l, то для их имитации можно использовать следующую формулу:

(1.20)

Таким образом, для имитации каждого значения НСВ, распределенной по закону Эрланга k-го порядка, требуется использовать не одно, а k СРРЧ.

Во многих случаях аналитическое (т. е. представленное формулой) выражение плотности распределения НСВ не известно, а имеется приближенное графическое представление плотности распределения, построенное по наблюдавшимся значениям НСВ. Для построения приближенных графиков плотности распределения существуют специальные методы математической статистики. Обычно такой приближенный график строится в виде нескольких линейных функций. Такое приближенное представление называется Кусочно — линейной аппроксимацией. Имитацию таких НСВ рассмотрим на примере.

Пример 1.7. Пусть выполняется анализ работы ЭВМ, на которую поступает поток задач для решения. Установлено, что время решения задач на ЭВМ (X) представляет собой случайную величину, плотность распределения которой может быть приближенно представлена графиком, приведенным на рис.1.2.

Рис.1.2. Плотность распределения времени решения задач

Из графика видно, что время решения задачи может составлять от 4 до 10 минут. Видно также, что примерно в 80% случаев время решения задачи составляет от 4 до 8 минут, в 20% — от 8 до 10 минут. По графику записываем выражение плотности распределения:

Находим выражение для функции распределения.

На интервале x < 4: .

На интервале [4;8): .

На интервале [8;10]: .

На интервале x > 10: .

Записываем уравнения F(X)=R:

0,2X — 0,8 = R, 4 £ X < 8;

0,1X = R, 8 £ X £ 10.

Из уравнений F(X)=R находим выражения X = F-1(R), т. е. формулы (алгоритм) для имитации случайной величины X:

Приведем фрагмент программы на языке Паскаль, имитирующей работу ЭВМ (решение 1000 задач). Время решения задачи на ЭВМ имитируется с помощью процедуры kl.

Program model1_7;

Uses crt;

Const nmax=1000; (* имитируемое количество задач *)

Var

T: real; (* переменная для имитации времени решения *)

I: integer;

….. (* объявление других переменных *)

Procedure kl (var x: real);

Var r: real;

Begin

R:=random;

If (r>0) and (r<0.8) then x:= (r+0.8)/0.2;

If (r>=0.8) and (r<1) then x:= r/0.1;

End;

Begin (* основная программа *)

……

For i:=1 to nmax do

begin

…..

kl(t); (* вызов процедуры имитации времени решения *)

…..

Оставить комментарий