Di - дисперсия времени обслуживания
Ơi - среднеквадратичное отклонение времени обслуживания
mi = l/ui - интенсивность обслуживания
li - среднее число заявок, поступающих на обслуживание
ri = li/mi - коэффициент загрузки оборудования заявками i-го типа
hi = 1 - ri - коэффициент простоя
Тип заявки | ui | Di | Ơi | mi | li | ri | hi |
1 | 15,53571 | 1,215577 | 1,102532 | 0,064368 | 0,87 | 13,51607 | -12,5161 |
2 | 7,5 | 0,5 | 0,707107 | 0,133333 | 0,1 | 0,75 | 0,25 |
3 | 14 | 2 | 1,414214 | 0,071429 | 0,1 | 1,4 | -0,4 |
4 | 8,75 | 8,568182 | 2,927146 | 0,114286 | 0,11 | 0,9625 | 0,0375 |
Коэффициент загрузки:
R =
= 4.16
Интенсивность поступления заявок:
L =
= 0.25
Поток заявок характеризуется следующими величинами:
ti - средний промежуток времени между поступлением заявок i-го типа
li = 1/ti - интенсивность поступления заявок i-го типа
pi = li/L — вероятность поступления заявки i-го типа
wi - среднее время пребывания заявки i-го типа в очереди
ui - среднее время пребывания заявки в системе
li - средняя длина очереди заявок i-го типа li = wili
Тип заявки | ti | li | pi | wi | Ui | li |
1 | 10,15385 | 0,098485 | 0,393939 | 0,032609 | 15,76087 | 0,003211 |
2 | 0 | - | - | 0 | 14 | 0 |
3 | 0 | - | - | 0 | 15 | 0 |
4 | 219,75 | 0,004551 | 0,018203 | 0 | 10,4 | 0 |
Среднее время пребывания заявки в очереди:
W =
=0,003
Среднее время пребывания заявки в системе:
U =
=1,6
Среднее число заявок в системе:
L =
=0,5
Графики зависимости среднего времени обслуживания заявки i-го типа от скорости работы канала:
1-ый тип

2-ой тип


3-ий тип
4-ый тип

График зависимости коэффициента загрузки от скорости передачи:

Текст программы:
#include <stdio.h>
#include <math. h>
#include "MesStream. h"
struct CItem
{
CMessage *mes;
CItem *next;
CItem *prev;
};
class CQueue
{
public:
CQueue();
CItem *Head; //"голова" очереди
CItem *Tail; //"хвост" очереди
int count;
void push(CMessage *mes);
void pop();
void print();
};
CQueue::CQueue()
{
Head=0;
Tail=0;
count=0;
}
//поместить в очередь
void CQueue::push(CMessage *mes)
{
if (Tail==0)
{
Tail=new CItem;
Head=Tail;
Tail->mes=mes;
Tail->next=NULL;
Tail->prev=NULL;
}
else
{
CItem* p=Tail;
Tail=new CItem;
Tail->mes=mes;
Tail->next=p;
Tail->next->prev=Tail;
Tail->prev=NULL;
}
count++;
}
//извлечь из очереди
void CQueue::pop()
{
if (Head!=0)
{
if (Head->prev!=NULL)
{
CItem *p=Head;
Head=Head->prev;
Head->next=NULL;
delete p;
}
else
{
delete Head;
Head=0;
Tail=0;
}
}
count--;
}
void CQueue::print()
{
CItem *p=Head;
while (p!=0)
{
printf("%d ",p->mes->type);
p=p->prev;
}
printf("\n");
}
void main()
{
//*
int V=4;
CQueue queue;
CMesStream stream(100);
stream. SortMessages();
stream. GenerateLength();
stream. GenerateInterval();
stream. CountTransferTime(V);
//stream. SaveArray("arr. txt");
//*/
//*
int rest=0;
int t_channel=0;
int t_prev;
int interv=0;
bool fBusy=false;
FILE *f=fopen("queue. txt","w");
fprintf(f,"| # | type | t_come | interv | len | t_trans| queue |\n");
int i=0;
while ((i<stream. Count)||(queue. count>0))
{
if (i>0)
{
interv=stream. aMes[i].time-stream. aMes[i-1].time;
if (queue. count==0) //очередь пуста
{
rest=t_prev-interv;
if (rest<=0)
{
fBusy=false;
rest=0;
}
else fBusy=true;
}
else
{
int t=interv-rest;
while (t>=0)
{
queue. Head->mes->t_channel=stream. aMes[i].time-t;
t-=queue. Head->mes->t_trans;
queue. pop();
if (queue. Head==0) break;
}
if (t>=0)
{
fBusy=true;
rest=abs(t);
}
}
}
if (i<stream. Count)
{
if (fBusy)
{
queue. push(&(stream. aMes[i]));
}
else
{
stream. aMes[i].t_channel=stream. aMes[i].time;
t_prev=stream. aMes[i].length/V;
}
}
//*
fprintf(f,"|%3d|%8d|%8d|%8d|%8d|%8d|%8d|",
i,
stream. aMes[i].type,
stream. aMes[i].time,
interv,
stream. aMes[i].length,
stream. aMes[i].length/V,
queue. count);
//*/
CItem *p=queue. Head;
while (p!=0)
{
fprintf(f,"%d ",p->mes->type);
p=p->prev;
}
fprintf(f,"\n");
i++;
}
fclose(f);
//
f=fopen("channel. txt","w");
fprintf(f,"| # | type | t_chan | t_beg | t_end | t_wait |t_trans |\n");
for (i=0;i<stream. Count;i++)
{
fprintf(f,"|%3d|%8d|%8d|%8d|%8d|%8d|%8d|\n",
i,
stream. aMes[i].type,
stream. aMes[i].t_channel,
stream. aMes[i].time,
stream. aMes[i].t_channel+stream. aMes[i].t_trans,
stream. aMes[i].t_channel-stream. aMes[i].time,
stream. aMes[i].t_trans);
}
fclose(f);
//*/
}
Вывод:
В данной работе была смоделирована работа канала и изучено влияние скорости передачи информации и загрузки канала на его пропускную способность.
Моделирование показало, что чем больше скорость передачи информации, тем меньше коэффициент загрузки канала.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 |


