- •Государственная академия управления имени серго орджоникидзе Кафедра Экономической Кибернетики
- •Содержание
- •Введение
- •Описание проблемной ситуации
- •Анализ условия задачи
- •Выбор схемы описания модели
- •Построение модели Построение математической модели
- •Описание случайностей для построения имитационной модели.
- •Построение имитационной модели.
- •Описание программы
- •Описание используемых констант, переменных и функций
- •Текст программы
- •Анализ полученных результатов
- •Построение реляционных отношений и реализация запросов.
- •Список используемой литературы
Описание используемых констант, переменных и функций
Константы
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();
}