где: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 |