Работа 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!