Работа 17.10.1 Имитационное моделирование



Цель работы: практическое освоение методов моделирования на компьютере случайных процессов с различными законами распре­деления вероятностей; имитационное моделирование функциони­рования систем массового обслуживания.

Задание 1. Ниже приведена программа на Паскале, позволяющая строить последовательность псевдослучайных чисел, распределенных в соответствии с функцией Пуассона при n = 2. Выборка случайных чисел осуществляется в полуинтервале [0, 10), верхняя граница принята равной 0,3. Реализуйте программу и по полученным данным постройте гистограмму распределения, полученного методом отбора-отказа, для различных выборок из 10 000 точек в каждой.

 

program Sluch_chisla;

const Ntab = 10000;// Объем выборки случайных чисел

type Tab1 = array[1..Ntab] of real;

var i, j, k: integer;

z: Tab1;

b: array [1..20] of real;

c: array [1..21] of real;

 //Процедура заполнения массива Tab случайными пуассоновскими числами

procedure Puasson(n: integer; Ax, Ay: real; var Tab: Tab1);

Var

x, y: real; i: integer;

Begin

i := 1;

while i <= Ntab do

Begin

X := random * Ax; y := random * Ay;

if y < (power(x, n) * exp(-x) / n) Then

begin Tab[i] := x; i := i + 1 end

End

end {Procedure Puasson};

Begin

randomize;

//Обращение к процедуре Puasson при n=2, Ax=10, Ay=0,3

//Результат в массиве z

Puasson(2, 10, 0.3, z);

//Подготовка данных для диаграммы распределения

k := 20;

//к - количество столбцов диаграммы

//Формирование массива абсцисс для диаграммы 

for i := 1 to k + 1 do c[i] := (i - 1) * 10 / k;

//Подсчет числа попаданий в каждый из к интервалов значений

for i := 1 to k do

Begin

b[i] := 0;

for j := 1 to Ntab do

if ((z[j] > c[i]) and (z[j] <= c[i + 1])) Then b[i] := b[i] + 1 end;

//Нормировка результата и вывод распределения в дискретном виде

for i := 1 to k do b[i] := b[i] / Ntab * 2;   //так как h=l/2

for i := 1 to k dO

Writeln('i=', i:2, ' c=', c[i]:5:2, ' b=', b[i]:6:4)

end.

 

Задание 2. Пользуясь программой для построения последовательности псевдослучайных чисел, распределенных в со­ответствии с законом Пуассона, постройте такие последователь­ности для различных значений параметра п ( п = 4, 6, 8) . Выборка случайных чисел осуществляется в полуинтервале [0, 20) .

Сравните  со­ответствующие гистограммы распределений и сделайте качествен­ные выводы о влиянии параметра п на вид распределения.

 

Задание 3. Измените программу для получения по­следовательности псевдослучайных чисел, для имитации нормального (гауссова) распределения. Постройте несколько гистограмм распределения, полученного методом отбора-отказа, для различных выборок из 10 000 точек в каждой.

 

 

Работа 17.10.2 Имитационное моделирование

Цель работы: практическое освоение методов имитационного моделирование функциони­рования систем массового обслуживания.

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

Таблицу заполнить по следующим правилам.

В ячейки столбца А помещена формула =$J$2*СЛЧИС(), а в ячейки столбца В — формула =$J$3*СЛЧИС(). Остальные ячейки заполнить согласно формулам: C1 = 0,      Ci+1 = Ci + Ai+1; D1 = 0,     Di+1 = max(Ci+1, Ei), Ei = Di + Bi; Fi = Ei - Ci, G1 = 0, Gi+1 = Fi+1 – Bi+1.

Задание 2. Пользуясь программой Ochered на Паскале , проведите серию экспери­ментов при различных соотношениях среднего времени ожидания в очереди и обслуживания клиента. Объем каждой выборки дол­жен составить 10000 единиц.

program Ochered;

Uses Crt;

const  n = 1000;

Var

i, j: integer;

x, P, Q: real;

A, B, C, D, E, F, G: array [1..n] of real;

H, L: array [1..11] of real;

Begin

randomize;

{Указание верхних границ для случайных чисел А и В}

P:=10; Q:=5;

{Заполнение первой строки таблицы}

A[1]:=random * P; B[1]:=random * Q;

C[1]:=0; D[1] := 0; E[1]:= D[1] + B[1];

F[1]:=E[1] - C[1]; G[1]:= 0;

{Заполнение оставшихся строк таблицы}

for i:= 2 to n do

Begin

A[i]:=random*P; B[i]:=random*Q; C[i]:=C[i-1]+A[i];

if C[i] > E[i -1] then D[i]:=C[i] else D[i]:=E[i - 1];

E[i]:=D[i]+B[i]; F[i]:= E[i] - C[i]; G[i]:= F[i]-B[i];

end;

{Вычисление максимального значения G}

x := G[1];

for i := 2 to n do if G[i] > x then x := G[i];

Writeln('Максимальное значение G равно ', x:6:4);

{Вычисление среднего значения G}

x := G[1]; for i := 2 to n do x := x + G[i]; x := x / n;

Writeln('Среднее значение G равно ', x:6:4);

{Подготовка таблицы диапазонов распределения величины G}

x:= P; for i:= 1 to 11 do L[i]:= (i - 1) * x / 10;

{построение распределения величины G по 11 диапазонам}

for i:= 1 to 11 do H[i]:= 0;

for i:= 1 to 10 do

for j:= 1 to n do

if ((G[j] >= L[i])and(G[j] < L[i+1])) then H[i]:=H[i]+1;

for j := 1 to n do if (G[j] >= P) then H[11] := H[11] + 1;

{Вычисление распределения относительных частотностей}

{Величины G}

for i:= 1 To 11 Do H[i] := H[i] / n;

{Вывод распределения относительных частотностей величины G}

for i:= 1 To 11 Do Writeln('G[', i, ']=',H[i]);

repeat until keypressed

end.

 

Задание 3. Измените программу для получения по­следовательности псевдослучайных чисел, для имитации нормального (гауссова) распределения. Постройте несколько гистограмм распределения, полученного методом отбора-отказа, для различных выборок из 10 000 точек в каждой.

 


Дата добавления: 2021-05-18; просмотров: 326; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!