Имитационное моделирование на основании предварительно установленных зависимостей

float time_to ( void ); // Расчет времени входа пассажира в зал

//Объявление переменных

float

tau_min, // Мин. время обсл-я у касс

tau_max, // Макс. время обсл-я у касс

*tau, // Тек. время обсл-я у касс

current_time, // Тек. время

minutes, // Общ. время работы в минутах

lambda, // Пар-р закона распр-я Пуассона

enter_time_, // Время входа очередного пас

сажира

MO, // Мат. ожид-е времени обсл-я

SKO, // Среднекв. откл-е времени обсл-я у касс

t_free, // Общ. время простоя касс

t_free_av, // Ср. время простоя

serve_av, // Ср. % обслуж-я пассажиров

refuse_av, // Ср. % отказов в обсл-ии

N0=7836, // 1-й множитель для расчета случ. числа

NI=4792, // 2-й множитель для расчета случ. числа

N, // Прозведение N0 и NI

ND; // Средние 4 цифры из числа N

int

m, // Кол-во касс

i, // Тек. номер кассы

enter, // Кол-во вошедших

hours, // Время работы зала в часах

serve, // Кол-во обслуж-х пассажиров

refuse, // Кол-во необслуж-х пассажиров

stand, // Кол-во стоящих в очереди на момент обслуживания

INDPAS; // Флаг обслуживания пассажиров

// Главная функция программы

void main(void)

{

inf(); // cообщение о назначении программы

textcolor( 14 ); //установка цвета и фона

textbackground( 1 );

clrscr(); //очистка экрана

/* Прием данных от пользователя */

printf("\n████████████████████████████████████████████████████████████████████████████████");

for(i=1;i<=21;i++)

printf("█ █");

printf("████████████████████████████████████████████████████████████████████████████████");

gotoxy(10,7);

do

{

printf("\n█\tВведите количество касс в кассовом"

" зале ж\\д вокзала:");

scanf( "%d", &m );

}

while( (m<=0)||(m>=100) );

do

{

printf( "\n█\tВведите параметр распределения Пуассона для"

" определения" );

printf( "\n█\t\tвремени между входами пассажиров в зал:" );

scanf( "%f", &lambda );

}while( lambda<=0 );

clrscr();

//Вывод рамки

printf("\n████████████████████████████████████████████████████████████████████████████████");

for(i=1;i<=21;i++)

printf("█ █");

printf("████████████████████████████████████████████████████████████████████████████████");

gotoxy(5,3);

do

{

printf( "\n█\n█\tВведите минимальную продолжительность обслуживания " );

printf( "\n█\t\t\tу кассами:" );

scanf( "%f", &tau_min );

}while( tau_min<=0 );

do

{

printf( "\n█\tВведите максимальную продолжительность обслуживания " );

printf( "\n█\t\t\tу касс:" );

scanf( "%f", &tau_max );

}while( tau_max<=tau_min );

do

{

printf( "\n█\tВведите время моделирования работы зала(в ч.):" );

scanf( "%d", &hours );

}while( hours<=0 );

do

{

printf("\n█\tВведите математическое ожидание времени обслуживания");

printf( "\n█\t\tу касс:");

scanf( "%f", &MO );

}while( MO<=0 );

do

{

printf( "\n█\tВведите среднеквадратическое отклонение времени ");

printf( "\n█\tобслуживания у касс:");

scanf( "%f", &SKO );

}while( SKO<=0 );

massive(); // создание и обнуление массива

minutes=floor( hours*60 ); // переведем время работы в минуты

enter=0; // никто не входил

serve=0; // никого не обслужили

refuse=0; // никому не отказали

t_free=0; // кассы еще не простаивали

current_time=0; // начало отсчета времени с нуля

enter_time_=time_to(); // когда зайдет следующий

/* Цикл моделирования работы зала

for( current_time=0; current_time<=minutes; current_time++ )

{

/* Коррект-ка времени обсл-я у каждой кассы */

if( current_time )

for( i=1; i<=m ;i++)

if( tau[i] ) //Если касса занята, то уменьшим время обсл-я

tau[i]--; // в ней на 1 мин.

else // Если касса свободна, наращиваем общее время

t_free++; // простоя касс.

if( enter_time_<=current_time )

{

enter++; // Если входит пассажир, отмечаем это

enter_time_=time_to(); // Узнаем, когда зайдет следующий?

i=1; // Вошедший подходит к 1-й кассе

INDPAS=1; // Его еще не обслуживают

do

{

if( tau[i]<=0 ) //Если касса свободна, ставим пассажира на

{ //обсл-е и узнаем, сколько ему стоять у кассы

tau[i]=_tau();

INDPAS=0; //Укажем, что пассажира обслуживают

}

i++; // Подходим к следующей кассе

}while((i<=m) && (INDPAS==1));

if( INDPAS==1 ) // Если клиент не обслужен, отмечаем это

refuse++;

if( INDPAS==0) // Если клиент обслужен, отмечаем это

Страница:  1  2  3  4  5 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы