Смекни!
smekni.com

Построение концептуальной модели (стр. 3 из 3)

(1)

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

4.3 Форма представления результатов моделирования

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

В рассматриваемой задаче моделирования СМО на экран монитора окончательный результат выводится в отдельном окне, в виде таблицы.


Заключение

В данной курсовой работе успешно были разработаны концептуальная, математическая и машинная модели процесса функционирования СМО.

Полученные на ЭВМ результаты моделирования процесса функционирования СМО отражают основные особенности функционирования реального объекта и позволяют качественно и количественно оценить его поведение. На основе полученных оценок характеристик можно сделать следующие выводы и дать соответствующие рекомендации.

Полученные результаты моделирования системы показывают достаточно эффективную работу системы при средней загрузке ЭВМ №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