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