- •Введение
- •Постановка задачи
- •Теоритическая часть
- •Структурная схема процесса функционирования
- •Граф состояний
- •Обобщенная схема моделирующего алгоритма
- •Функция erlahg();
- •Характеристики эффективности смо, определяемые в результате моделирования
- •Теоретические расчеты
- •Результаты работы смо
- •Заключение
- •Используемая литература
Теоретические расчеты
λ=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;
}
Результат работы программы моделирования СМО в среде программирования С++
Вводимые первоначальные данные:
Результат работы: