где:p- частота = n1/n;
n1 - число исходов в n – экспериментах;
Q- доверительная вероятность;
Ф-1 -обратная функция Лапласа.
Таблица 4.1.1- Обратная функция Лапласа.
Q | 0.9 | 0.95 | 0.98 | 0.99 |
(Ф-1 *Q/2)2 | 2.7 | 3.84 | 5.7 | 6.61 |
Исходя из задания Q=0.95, Е=0.05 следовательно (Ф-1 *Q/2)2 = 3,84
Проведем 10 экспериментов на модели (n=10) и проследим за значением расчетной величины – вероятностью отказа. Т.к. по при длине очереди накопителя № 1 равной 5, сбойных сигналов нет, то, следовательно, вероятность отказа будет равна 0, что делает невозможным расчет количества прогонов. Поэтому будем вести расчет при длине очереди накопителя № 1 и № 2 равной 1, только при этом значении наблюдается появление сбойных сигналов.
Таблица 4.1.2 – Экспериментальные данные.
№ эксп | Кол.-во сбоев | № эксп | Кол-во сбоев |
1 | 8 | 6 | 10 |
2 | 10 | 7 | 8 |
3 | 10 | 8 | 7 |
4 | 6 | 9 | 10 |
5 | 9 | 10 | 9 |
n=8+10+10+6+9+10+8+7+10+9=87;
p1=8/87=0,091954; p6=10/87=0,114943;
р2=10/87=0,114943;р7=8/87=0,091954;
р3=10/87=0,114943;р8=7/87=0,08046;
р4=6/87=0,068966;р9=10/87=0,114943;
р5=9/87=0,103448;р10=9/87=0,103448;
Выбираем самую худшую (большую) вероятность - 0,114943 и подставляем её в формулу (1):
Следовательно, чтобы точность экспериментов составляла 0.95 необходимо произвести 156 эксперимента. Статистические данные и результаты всех прогонов представлены в приложении Б.
4.2 Анализ результатов моделирования
По полученным результатам моделирования рассчитаем математическое ожидание величины — вероятность отказа— по формуле (2):
M[X] = X1*P1+X2*P2………..Xn*Pn , (2)
где P = Ni/N;
N — количество опытов (прогонов);
Ni — количество появлений Xiв опытах.
По приложению Б определяемx, n, p (таблица 4.2)
Таблица 4.2 – Результаты моделирования
Xi | 0 | 0,00421941 | 0,0126582 | 0,00843882 | 0,0168776 |
Ni | 36 | 38 | 33 | 48 | 1 |
Pi | 0,230769231 | 0,24358974 | 0,2115385 | 0,30769231 | 0,0064103 |
М[X]= 0+ 0,0010278+ 0,0026777+ 0,00259656+ 0,0001082= 0,0064103
Дисперсию рассчитаем по формуле (3):
D[X]=∑(Xi-M)2 *Pi (3)
D[X]= 0,0000095+ 0,0000012+ 0,0000083+ 0,0000013+ 0,0000007= 0,00002
В каждом конкретном случае целесообразно выбирать наиболее подходящую форму представления результатов моделирования (таблицы, графики, диаграммы, гистограммы, схемы и т.п.) т.к. это существенно влияет на эффективность дальнейшего использования результатов моделирования (например, заказчиком). В большинстве случаев удобнее результаты моделирования сводить в таблицы.
В рассматриваемой задаче моделирования СМО на экран монитора окончательный результат выводится в отдельном окне, в виде таблицы.
В данной курсовой работе успешно были разработаны концептуальная, математическая и машинная модели процесса функционирования СМО.
Полученные на ЭВМ результаты моделирования процесса функционирования СМО отражают основные особенности функционирования реального объекта и позволяют качественно и количественно оценить его поведение. На основе полученных оценок характеристик можно сделать следующие выводы и дать соответствующие рекомендации.
Полученные результаты моделирования системы показывают достаточно эффективную работу системы при средней загрузке ЭВМ №1 98% и ЭВМ №2 80%, при этом в системе происходит минимальное количество сбоев и идет 100% обслуживание заявок. Для улучшения параметров системы можно увеличить ёмкость накопителя № 1 до 7 заявок, но при этом его загруженность снизится в среднем до 40 %.
В целом создание программы, моделирующей систему массового обслуживания, можно считать удачным. Алгоритм разрабатывался максимально простой и эффективный. Результаты моделирования показали не только эффективность работы данной системы, но и возможные пути повышения её производительности.
1. Бусленко Н.П. Моделирование сложных систем // – М.: Наука, 1978. - 51с.
2. Лифшиц А.Л. Статистическое моделирование СМО, М., 1978. -216 с.
3. Мухин О. И. Моделирование систем. Конспект лекций - 1985. - 95с.
4. Советов Б.Я., Яковлев С.А. Моделирование систем // Учебник для ВУЗов -М.: Высшая школа, 1985. - 224 с.
5. Советов Б.Я., Яковлев С.А. Моделирование систем // Курсовое проектирование -М.: Высшая школа, 1988. - 232 с.
6. Архангельский А. Я. Программирование в Delphi 5.–М.:ЗАО «Издательство БИНОМ», 2000.–1070 с.
7. Бобровский С. И. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.
8. Вендров А. М. Проектирование программного обеспечения ЭИС. М.: «Финансы и статистика», 2000. – 452 с.
(обязательное)
Листинг программы
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Image1: TImage;
Label1: TLabel;
Label3: TLabel;
GroupBox4: TGroupBox;
Label6: TLabel;
seNak: TSpinEdit;
Label7: TLabel;
seNak2: TSpinEdit;
Label2: TLabel;
Label4: TLabel;
Chart1: TChart;
Series1: TBarSeries;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Kanal;
procedure Istok;
procedure Kanal_2;
end;
var
Form1: TForm1;
ZKan,zkan_2:boolean;
t1,t2,n,t,tIstok,InSig,VNak,Sboy,OutSig,tkan,SZKan,SZNak,sekanal_2,sboy_2,outsig_2,SZNak_2,szkan_2,tkan_2,vnak_2:integer;
in_k1:byte;
{ var nak_2:byte;{накопительдляканала № 2}
{colnak1-кол-во сигналов, пройденных через накопитель 1}
{in_k1-true-сигнал обслуж-ся каналом № 1, false-сигнал обслуж-ся каналом № 2}
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var j:integer;
begin
VNak:=0; {Накопитель}
Sboy:=0;
sboy_2:=0;
InSig:=0;{подсчетпосланныхсигналов}
OutSig:=0;{подсчет количества сигналов, покинувших систему обслуженными}
vnak_2:=0;
outsig_2:=0;
SZNak:=0;{подсчет средней занятости накопителя в сигналах}
SZNak_2:=0;{подсчет средней занятости накопителя в сигналах}
SZKan:=0;{подсчет количества единиц времени, которое канал находится в состоянии занятости}
szkan_2:=0;
ZKan:=False; {состояние канала}
ZKan_2:=false;
in_k1:=0;
ListBox1.Items.Clear;
T:=0;
tIstok:=T+7+random(7);
Series1.Clear;
Repeat
Istok;
Kanal;
kanal_2;
SZNak:=SZNak+VNak;
SZNak_2:=SZNak_2+VNak_2;
inc(t);
Series1.Add(vnak); {добавление данных в диаграмму о накопителе №1}
Until T>400;
with ListBox1.Items do
begin { zkan_2:boolean;sekanal_2,sboy_2,outsig_2,szkan_2,tkan_2:integer;}
{ Add('Должно поступить сигналов: '+IntToStr(400 div 10));}
Add('Поступло сигналов: '+IntToStr(InSig));
Add('Обработано сигналов каналом № 1: '+IntToStr(OutSig));
Add('Обработано сигналов каналом № 2: '+IntToStr(OutSig_2));
Add('Сбойных сигналов: '+IntToStr(Sboy+sboy_2));
if ZKan then Inc(VNak);
Add('Учтенныхсигналов: '+IntToStr(VNak+vnak_2+Sboy+sboy_2+OutSig+OutSig_2));
if ZKan_2 then Inc(VNak);
if t-t1<3 then Inc(VNak);
if t-t2<3 then Inc(VNak);
Add('Осталось в системе сигналов: '+IntToStr(VNak));
Add('Средняя занятость накопителя № 1 (в сиг.): ' + FloatToStrF(SZNak/400,ffNumber,8,2));
Add('Средняя занятость накопителя № 1 (в %): ' + IntToStr(Round(SZNak/400/seNak.Value*100)));
Add('Средняя занятость накопителя № 2 (в сиг.): ' + FloatToStrF(SZNak_2/400,ffNumber,8,2));
Add('Средняя занятость накопителя № 2 (в %): ' + IntToStr(Round(SZNak_2/400/seNak2.Value*100)));
Add('Средняя занятость канала № 1 (в %): '+ IntToStr(Round(SZKan/400*100)));
Add('Средняя занятость канала № 2 (в %): '+ IntToStr(Round(SZKan_2/400*100)));
end;
end;
procedure TForm1.Kanal;
begin
if ZKan
then
begin
Dec(tKan);
Inc(SZKan);{подсчет количества единиц времени, которое канал находится в состоянии занятости}
if tKan=0 {время, оставшееся до конца обработки сигнала}
then
begin
ZKan:=False;
if in_k1=1 then begin
Inc(OutSig){подсчет количества сигналов, покинувших канал № 1 обслуженными};
t1:=t;
end
else begin
if vnak_2<seNak2.Value then inc(vnak_2)
else inc(sboy_2);
end;
end;
end;
if not ZKan and (VNak>0)
then
begin
Dec(VNak);
if in_k1=1 then in_k1:=0
else in_k1:=1;
ZKan:=True;
if in_k1=1 then tKan:=2+16+random(5){18+/-2:количество единиц времени, отводимое на обработку одного сигнала}
else tKan:=2;
end;
end;
procedure TForm1.Istok;
begin
{ if T mod N=0
then
tIstok:=T+7+random(7); {источник}
if T=tIstok
then
begin
tIstok:=T+7+random(7); {источник}
Inc(InSig); {подсчет посланных сигналов}
if VNak<seNak.Value{ёмкость накопителя}
then begin
Inc(VNak);
end
else Inc(Sboy);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
procedure TForm1.Kanal_2;
begin
if ZKan_2
then
begin
Dec(tKan_2);
Inc(SZKan_2);{подсчет количества единиц времени, которое канал находится в состоянии занятости}
if tKan_2=0 {время, оставшееся до конца обработки сигнала}
then
begin
ZKan_2:=False;
Inc(OutSig_2);{подсчет количества сигналов, покинувших систему обслуженными}
t2:=t;
end;
end;
if not ZKan_2 and (VNak_2>0)
then
begin
Dec(VNak_2);
ZKan_2:=True;
tKan_2:=16+random(5);{количество единиц времени, отводимое на обработку одного сигнала}
end;
end;
end.
Приложение Б
(обязательное)
Статистические данные
№ эксп. | Поступило заявок, шт | Необслужено заявок, шт | Вероятность отказа, % | Загрузка накопителя№1, % |
1 | 38 | 0 | 0 | 46 |
2 | 39 | 1 | 0,004219 | 57 |
3 | 41 | 3 | 0,012658 | 57 |
4 | 40 | 2 | 0,008439 | 59 |
5 | 40 | 3 | 0,012658 | 50 |
6 | 39 | 2 | 0,008439 | 60 |
7 | 40 | 3 | 0,012658 | 58 |
8 | 38 | 1 | 0,004219 | 40 |
9 | 41 | 3 | 0,012658 | 66 |
10 | 42 | 4 | 0,016878 | 62 |
11 | 40 | 2 | 0,008439 | 52 |
12 | 40 | 3 | 0,012658 | 60 |
13 | 38 | 0 | 0 | 39 |
14 | 41 | 3 | 0,012658 | 58 |
15 | 40 | 2 | 0,008439 | 46 |
16 | 40 | 2 | 0,008439 | 59 |
17 | 40 | 2 | 0,008439 | 68 |
18 | 39 | 1 | 0,004219 | 50 |
19 | 40 | 2 | 0,008439 | 53 |
20 | 39 | 1 | 0,004219 | 32 |
21 | 39 | 2 | 0,008439 | 48 |
22 | 39 | 1 | 0,004219 | 60 |
23 | 37 | 0 | 0 | 26 |
24 | 40 | 0 | 0 | 42 |
25 | 38 | 0 | 0 | 50 |
26 | 38 | 1 | 0,004219 | 52 |
27 | 40 | 2 | 0,008439 | 64 |
28 | 39 | 1 | 0,004219 | 32 |
29 | 40 | 2 | 0,008439 | 59 |
30 | 40 | 3 | 0,012658 | 50 |
31 | 39 | 2 | 0,008439 | 66 |
32 | 38 | 1 | 0,004219 | 50 |
33 | 39 | 3 | 0,012658 | 45 |
34 | 40 | 1 | 0,004219 | 56 |
35 | 37 | 2 | 0,008439 | 65 |
36 | 38 | 3 | 0,012658 | 50 |
37 | 38 | 0 | 0 | 54 |
38 | 37 | 0 | 0 | 53 |
39 | 39 | 1 | 0,004219 | 45 |
40 | 39 | 2 | 0,008439 | 48 |
41 | 39 | 0 | 0 | 48 |
42 | 40 | 1 | 0,004219 | 49 |
43 | 37 | 2 | 0,008439 | 50 |
44 | 38 | 0 | 0 | 59 |
45 | 38 | 1 | 0,004219 | 38 |
46 | 37 | 2 | 0,008439 | 39 |
47 | 40 | 0 | 0 | 40 |
48 | 39 | 0 | 0 | 50 |
49 | 38 | 0 | 0 | 56 |
50 | 40 | 1 | 0,004219 | 53 |
51 | 37 | 2 | 0,008439 | 55 |
52 | 37 | 0 | 0 | 49 |
53 | 39 | 1 | 0,004219 | 66 |
54 | 38 | 2 | 0,008439 | 33 |
55 | 39 | 0 | 0 | 56 |
56 | 39 | 3 | 0,012658 | 65 |
57 | 40 | 0 | 0 | 45 |
58 | 41 | 2 | 0,008439 | 58 |
59 | 41 | 2 | 0,008439 | 56 |
60 | 37 | 2 | 0,008439 | 59 |
61 | 38 | 1 | 0,004219 | 48 |
62 | 38 | 3 | 0,012658 | 59 |
63 | 38 | 3 | 0,012658 | 67 |
64 | 40 | 3 | 0,012658 | 56 |
65 | 39 | 2 | 0,008439 | 65 |
66 | 39 | 0 | 0 | 48 |
67 | 40 | 1 | 0,004219 | 68 |
68 | 41 | 2 | 0,008439 | 59 |
69 | 37 | 3 | 0,012658 | 48 |
70 | 37 | 0 | 0 | 56 |
71 | 38 | 2 | 0,008439 | 45 |
72 | 38 | 3 | 0,012658 | 56 |
73 | 39 | 0 | 0 | 64 |
74 | 40 | 1 | 0,004219 | 56 |
75 | 39 | 2 | 0,008439 | 45 |
76 | 37 | 3 | 0,012658 | 36 |
77 | 38 | 0 | 0 | 42 |
78 | 40 | 1 | 0,004219 | 46 |
79 | 37 | 2 | 0,008439 | 43 |
80 | 40 | 2 | 0,008439 | 48 |
81 | 41 | 2 | 0,008439 | 59 |
82 | 41 | 1 | 0,004219 | 56 |
83 | 37 | 0 | 0 | 55 |
84 | 38 | 3 | 0,012658 | 54 |
85 | 38 | 2 | 0,008439 | 53 |
86 | 39 | 0 | 0 | 52 |
87 | 39 | 3 | 0,012658 | 57 |
88 | 39 | 2 | 0,008439 | 55 |
89 | 40 | 1 | 0,004219 | 42 |
90 | 41 | 0 | 0 | 53 |
91 | 41 | 2 | 0,008439 | 61 |
92 | 38 | 3 | 0,012658 | 56 |
93 | 38 | 2 | 0,008439 | 65 |
94 | 39 | 0 | 0 | 49 |
95 | 37 | 1 | 0,004219 | 65 |
96 | 38 | 2 | 0,008439 | 67 |
97 | 38 | 3 | 0,012658 | 62 |
98 | 39 | 0 | 0 | 53 |
99 | 40 | 1 | 0,004219 | 54 |
100 | 40 | 2 | 0,008439 | 48 |
101 | 40 | 3 | 0,012658 | 50 |
102 | 38 | 3 | 0,012658 | 60 |
103 | 39 | 1 | 0,004219 | 45 |
104 | 39 | 2 | 0,008439 | 46 |
105 | 37 | 0 | 0 | 56 |
106 | 37 | 3 | 0,012658 | 52 |
107 | 40 | 2 | 0,008439 | 38 |
108 | 40 | 1 | 0,004219 | 46 |
109 | 37 | 3 | 0,012658 | 47 |
110 | 38 | 3 | 0,012658 | 42 |
111 | 39 | 2 | 0,008439 | 56 |
112 | 39 | 1 | 0,004219 | 51 |
113 | 40 | 1 | 0,004219 | 60 |
114 | 40 | 0 | 0 | 65 |
115 | 41 | 1 | 0,004219 | 53 |
116 | 41 | 1 | 0,004219 | 57 |
117 | 41 | 2 | 0,008439 | 42 |
118 | 39 | 0 | 0 | 46 |
119 | 38 | 0 | 0 | 56 |
120 | 37 | 0 | 0 | 51 |
121 | 37 | 3 | 0,012658 | 53 |
122 | 39 | 2 | 0,008439 | 59 |
123 | 40 | 1 | 0,004219 | 40 |
124 | 40 | 3 | 0,012658 | 45 |
125 | 41 | 0 | 0 | 47 |
126 | 41 | 1 | 0,004219 | 48 |
127 | 40 | 2 | 0,008439 | 50 |
128 | 38 | 0 | 0 | 56 |
129 | 38 | 1 | 0,004219 | 60 |
130 | 39 | 2 | 0,008439 | 64 |
131 | 38 | 2 | 0,008439 | 49 |
132 | 37 | 1 | 0,004219 | 50 |
133 | 40 | 0 | 0 | 40 |
134 | 37 | 3 | 0,012658 | 48 |
135 | 39 | 3 | 0,012658 | 47 |
136 | 38 | 2 | 0,008439 | 49 |
137 | 40 | 3 | 0,012658 | 43 |
138 | 41 | 3 | 0,012658 | 40 |
139 | 39 | 3 | 0,012658 | 42 |
140 | 38 | 2 | 0,008439 | 41 |
141 | 37 | 1 | 0,004219 | 46 |
142 | 39 | 0 | 0 | 49 |
143 | 39 | 0 | 0 | 56 |
144 | 40 | 0 | 0 | 57 |
145 | 40 | 1 | 0,004219 | 59 |
146 | 41 | 2 | 0,008439 | 58 |
147 | 39 | 0 | 0 | 57 |
148 | 39 | 1 | 0,004219 | 50 |
149 | 38 | 2 | 0,008439 | 50 |
150 | 38 | 2 | 0,008439 | 60 |
151 | 38 | 1 | 0,004219 | 64 |
152 | 37 | 2 | 0,008439 | 67 |
153 | 38 | 1 | 0,004219 | 42 |
154 | 38 | 3 | 0,012658 | 53 |
155 | 39 | 2 | 0,008439 | 62 |
156 | 39 | 1 | 0,004219 | 48 |