Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Давыдова Д.Ю. АСОИ 202з.doc
Скачиваний:
0
Добавлен:
16.08.2019
Размер:
1.09 Mб
Скачать

Теоретические расчеты

λ=5

μ=6

n=2;

ρ= λ/ μ = 5/6;

, следовательно,

для двухканальной системы p0=(1+5/6+(5/6)2/2)-1= 0,4586

Вероятность отказа СМО есть предельная вероятность того, что все п каналов системы будут заняты:

=0,4586*(5/6)2/2=0,1592

Относительная пропускная способность:

=1-0,1592=0,8407

Абсолютная пропускная способность:

=5*08407=4,2035

Результаты работы смо

VO

Zp

Zob

Zno

Lambda

Mu

Q

A

K

Tprost

Potk

Potk

1

68,1021

473

398

75

4,73

5,84416

0,841438

3,98

0,66333

31,8979

0,158562

0,158562

2

69,924

476

396

80

4,76

5,66329

0,831933

3,96

0,66

30,076

0,168067

0,168067

3

70,033

488

419

69

4,88

5,98289

0,858607

4,19

0,698333

29,967

0,141393

0,141393

4

62,703

456

382

74

4,56

6,09221

0,837719

3,82

0,636667

37,297

0,162281

0,162281

5

63,2039

476

402

74

4,76

6,36037

0,844538

4,02

0,67

36,7961

0,155462

0,155462

6

73,185

477

398

79

4,77

5,43827

0,834382

3,98

0,663333

26,815

0,165618

0,165618

7

66,3123

452

374

78

4,52

5,63998

0,827434

3,74

0,623333

33,6877

0,172566

0,172566

8

72,7002

462

387

75

4,62

5,32323

0,837662

3,87

0,645

27,2998

0,162338

0,162338

Текст программы моделируемая СМО в среде программирования С++

#include<iostream.h>

#include<stdio.h>

#include<math.h>

#include<conio.h>

#include <stdlib.h>

#include <fstream.h>

#include <time.h>

#include<windows.h>

char* rus(const char* stroka);

char Rus[256];

//получение равномерно распределенных величин

double get_ravn() {

return (rand() % 100) * 0.01;

}

//вычисление Эрганговской случайной величины

double erlang(double c)

{ int k=8;

double x;

x=0;

for (int j=0; j<k; j++)

{

x=-1*pow(c,-1)*log(get_ravn()+0.0001);

}

return x;

}

void main()

{

double lambda, mu, Tk, Tc=0, T1=0, T=0, VO=0, T2=0, p, A, Pobs, Potk, r=0,r1=0,r2=0;

int i, Zp=0, Zob=0, Zno=0;

cout<<rus("Кол-во реализаций = "); cin>>p;

cout<<endl;

cout<<rus("Лямбда = ");

cin>>lambda; cout<<endl;

cout<<rus("Мю = ");

cin>>mu;

cout<<endl;

cout<<rus("Время выполнения = ");

cin>>Tk; cout<<endl<<endl;

for (i=0; i<p; i++)

{ Tc=0; T1=0; T=0; T2=0;

Zp=0; Zob=0; Zno=0; VO=0;

cout<<endl<<endl;

cout<<rus("РЕАЛИЗАЦИЯ № ")<<(i+1)<<endl<<endl;

do

{

r=erlang(lambda);

Tc=Tc+r;

Zp=Zp+1;

if(Tc>=T1)

{

r1=erlang(mu);

T1=Tc+r1;

VO=VO+r1;

Zob=Zob+1;

T=T1;

}

else { if (Tc>=T2)

{

r2=erlang(mu);

T2=Tc+r2;

VO=VO+r2;

Zob=Zob+1;

T=T2;

}

else{ Zno++; }

}

}

while(T<=Tk);

A=Zob/Tk;

Pobs=Zob*pow(double(Zp),-1);

Potk=Zno*pow(double(Zp),-1);

cout<<rus("Время обслуживания системы= ")<<VO<<endl;

cout<<rus("Количество поступивших заявок= ")<<Zp<<endl;

cout<<rus("Количество обслуженных заявок= ")<<Zob<<endl;

cout<<rus("Количество отказанных заявок= ")<<Zno<<endl;

cout<<rus("Интенсивность поступления заявки= ")<<Zp*pow(Tk,-1)<<endl;

cout<<rus("Интенсивность обслуживания заявки=")<<Zob*pow(VO,-1)<<endl;

cout<<rus("Относительная пропускная способность= ")<<Zob*pow(double(Zp),-1)<<endl;

cout<<rus("Абсолютная пропускная способность = ")<<A<<endl;

cout<<rus("Количество занятых каналов = ")<<A*pow(mu,-1)<<endl;

cout<<rus("Время простоя системы = ")<<Tk-VO<<endl;

cout<<rus("Вероятность простоя системы = ")<<(T-VO)/T<<endl;

cout<<rus("Вероятность отказа = ")<<Potk<<endl<<endl;

}

getch();

}

char* rus (const char* stroka)

{

CharToOem(stroka,Rus);

return Rus;

}

Результат работы программы моделирования СМО в среде программирования С++

Вводимые первоначальные данные:

Результат работы: