Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Каталов Александр.doc
Скачиваний:
9
Добавлен:
19.04.2013
Размер:
320.51 Кб
Скачать

Описание используемых констант, переменных и функций

Константы

MAX_MINUT — количество минут в 10 днях;

SHAG — такт изменения времени;

LAMBDA — интенсивность входного потока;

MJU — интенсивность обслуживания группой;

Переменные

grupp[15] — массив структур, содержащий сведения о группах обслуживания: vreme_osvob — время освобождения группы, vreme_zan — суммарное время занятости, kolich_zan — суммарное количество обслуженных машин;

n— количество групп обслуживания;

i— переменная цикла времени;

j — переменная цикла перемещения по группам;

vrem— переменная для временного хранения времени обслуживания группой;

vreme_zajavki— время прихода следующей заявки (машины);

vreme_poln_zagr— счетчик времени полной загрузки;

vreme_prostoja— счетчик времени полного простоя пункта;

kolich_zajavok— счетчик количества поступивших заявок;

obsh_kolich_zan— общее количество осмотренных машин по всему пункту за 10 дней;

obsh_vreme_zan— общее время занятости групп обслуживания по всему пункту за 10 дней;

Функции

rand_puason()— функция, выдающая случайную величину, распределенную по показательному закону.

Текст программы

#include <conio.h>

#include <iostream.h>

#include <stdlib.h>

#include <math.h>

#define MAX_MINUT 10*24*60

#define SHAG 0.5

#define LAMBDA 8/60.0

#define MJU 1/30.0

float rand_puason(float param)

{

return -log(1-rand()/32768.0)/param;

}

void main()

{

struct {float vreme_osvob;

float vreme_zan;

int kolich_zan;

} grupp[15];

int n;

float i;

float vrem;

int j;

float vreme_zajavki;

float vreme_poln_zagr=0;

float vreme_prostoja=0;

int kolich_zajavok=0;

int obsh_kolich_zan=0;

float obsh_vreme_zan=0;

clrscr();

cout<<"Введите число групп проведения осмотра (до 15): ";cin>>n;

clrscr();

for (j=0;j<=n-1;j++)

{

grupp[j].vreme_osvob=0;

grupp[j].vreme_zan=0;

grupp[j].kolich_zan=0;

}

randomize();

vreme_zajavki=rand_puason(LAMBDA);

for (i=0;i<=MAX_MINUT;i+=SHAG)

{

if (i>=vreme_zajavki)

{ for (j=0;j<=n-1;j++)

if (grupp[j].vreme_osvob<=i)

{

vrem=rand_puason(MJU);

grupp[j].vreme_osvob=vreme_zajavki+vrem;

grupp[j].vreme_zan+=vrem;

grupp[j].kolich_zan++;

break;

}

vreme_zajavki+=rand_puason(LAMBDA);

kolich_zajavok++;

}

if (grupp[0].vreme_osvob>i && grupp[1].vreme_osvob>i &&

grupp[2].vreme_osvob>i && grupp[3].vreme_osvob>i)

vreme_poln_zagr+=SHAG;

if (grupp[0].vreme_osvob<=i && grupp[1].vreme_osvob<=i &&

grupp[2].vreme_osvob<=i && grupp[3].vreme_osvob<=i)

vreme_prostoja+=SHAG;

}

cout<<"\nНомер Общее время Общее время Количество осмотренных Среднее время ";

cout<<"\nгруппы занятости простоя машин осмотра";

cout<<"\n-----------------------------------------------------------------------------";

for (j=0;j<=n-1;j++)

{

cout<<"\n "<<j+1<<" "<<grupp[j].vreme_zan<<"\t"

<<MAX_MINUT-grupp[j].vreme_zan<<"\t\t"

<<grupp[j].kolich_zan<<"\t\t "

<<grupp[j].vreme_zan/grupp[j].kolich_zan;

obsh_kolich_zan+=grupp[j].kolich_zan;

obsh_vreme_zan+=grupp[j].vreme_zan;

}

cout<<"\n\nВремя полной загрузки пункта "<<vreme_poln_zagr

<<" минут или "<<vreme_poln_zagr/60<<" часов.";

cout<<"\nВремя полного простоя пункта "<<vreme_prostoja

<<" минут или "<<vreme_prostoja/60<<" часов.";

cout<<"\n\nСреднее время осмотра "

<<obsh_vreme_zan/obsh_kolich_zan<<" минут.";

cout<<"\nСредняя время между приходом машин "

<<vreme_zajavki/kolich_zajavok<<" минут.";

cout<<"\nКоэффициент отказа "

<<(kolich_zajavok-obsh_kolich_zan)*100.0/kolich_zajavok

<<" %";

getche();

}