Имитационное моделирование процесса работы Интернет-кафе

2.1. Определение числа итераций цикла перебора дискретных отсчётов периода моделирования: "for(j=0;j<N;j++)" и вход в тело цикла “{“;

2.1.1 .Обработка ухода посетителя кафе:

2. 1.1.1. Определение числа итераций цикла перебора устройств:

"for(i=0;i<N;i++)". Если текущий момент времени t сов-

падает с уходом посетителя ton[i]: “if(ton[j]==i)”, и вход в <

p>тело цикла “{”,

2.1.1.1.1. освобождение места (компьютера): “ ton[j]=-1;”;

2. 1.1. 2. 2. увеличение на единицу числа обслуживаемых посетителей: "nPos++";

2. 1.1.3. Конец цикла 2.1.1.1.: "}".

2.1.2. Обработка прихода нового посетителя:

2. 1.2.1. Поиск первого свободного обрабатывающего устройства:

"j=0; while(ton[j]!=-1) j++;

2. 1.2.2. Генерация момента прихода в кафе нового посетителя и сохранение его в переменной tin: “tin=ceil(RIN)+i;”

2.2. Конец блока цикла 2.1.: "}".

3. Завершение процесса моделирования:

3.1. Вывод результатов моделирования.

2.4 Разработка программной реализации алгоритма

В данном разделе мы разрабатываем программную реализацию имитационного моделирования работы Интернет-кафе. Помимо общих переменных, которые были описаны выше в п.2.3., в этом разделе можно описать и частные переменные, которые используются в программе, разработанной на языке программирования С++:

В программной реализации используются следующие частные переменные:

· tax – один мегабайт трафика в рублях;

· i, j - используются для хранения вспомогательных индексных значений;

· t - дискретные отсчёты времени периода моделирования;

· t_traf – значение трафика в единицу времени;

· obtraf – общий объем трафика в мегабайтах;

· vpr – время пребывания посетителя;

· kzan – количество занятых мест;

· tin – входящий поток, время прихода посетителя (момент поступления в систему следующего требования);

· ton [ ] - моменты завершения обработки требований соответствующими элементам массива обрабатывающими устройствами, то есть массив для сохранения интервалов времени ухода посетителей;

· Trafik –средний пользовательский трафик;

· m – число отказов пользователям;

· n – число обслуживающих посетителей;

· max_traf – максимальное значение трафика в единицу времени;

· min_traf – минимальное значение трафика в единицу времени;

· wt – суммарное время работы клиентов.

Программная реализация алгоритма производится в несколько этапов:

1. Подключение в программу заголовочных файлов:

#include //включение в программу текстов заранее подготовленных файлов

#include<iostream.h> //содержит потоки данных ввода/вывода

#include<math.h> //хранятся математически функции

# include <values.h> //содержит описания данных

#define //определение параметров модели и прочих исходных данных на глобальном уровне, описанной в п.

#define RIN uniform(10,120) //объявление функции нормального распределения

#define CRAND (125*125*125*125*5) //объявление мультипликативного конгруэнтного метода, которое описывается в п.1.3.

2. Генерация мультипликативным конгруэнтным методом псевдослучайной последовательности чисел:

float Rand(void) //генерация псевдослучайной последовательности с равномерным распределением

{

static unsigned long int u=C;

// static – модификатор для того, чтобы локальная переменная u сохраняла значение между двумя последующими обращениями к этой функции

u=u*C; //С - константа

return u/float(0xfffffffful); // (0xfffffffful) – максимально беззнаковые целое число, заданное в шестнадцатеричной форме.

}

3. Вызов функций моделирования:

//функция моделирования показательного распределения, описанная в п.1.6.

float exponential (float lambda)

{

return -log(Rand())/lambda;

}

//функция моделирования нормального распределения, описанная в п.1.8.

float gauss (float m, float sigma)

{

return sqrt(-2*log(Rand()))*sin(2*M_PI*Rand())*sigma+m;

}

4. Объявление переменных:

//объявление переменных целого длинного типа

unsigned long int nPos=0,n,i,j,nOtkaz,nMest,nSvMest, tin, ton[N],nTrafTotal=0;

//объявление переменных вещественного типа

float t,r,max,min,tr[N];

5. Цикл перебора i-го места (описывается в п.1.9):

for(i=0;i<N;i++) {ton[i]=-1;tr[N]=0;

6. Запуск процесса:

if(nSvMest<N)

for(j=0;j<N;j++) if(ton[j]==i)

{

nSvMest++;

ton[j]=-1;

nPos++; //основной цикл процесса

//

{

if(i==tin)

{

if(nSvMest==0) nOtkaz++;

else

{

nSvMest--;

j=0; while(ton[j]!=-1) j++;

t=ceil(RDL); //длительность пребывания одного посетителя

ton[j]=t+i;

r=RTRAF;

tr[j]=r;

nTrafTotal+=t*r; //общий трафик

}

tin=ceil(RIN)+i;;

}

}

7. Вывод результатов.

2.5 Моделирование программы с заданными параметрами

Запустив программу, написанную на языке С++, мы получили следующие результаты согласно исходным данным:

При данном количестве компьютеров - 10, общий трафик составляет 1072Мб, доход Интернет-кафе за данный период моделирования составил 5360 руб. Также было отказано 0 клиентам. Пиковое значение трафика в единицу времени (мин.) в системе за период моделирования составляет 0,342835.

2.6 Машинныйэксперимент с разработанной моделью

В результате машинного эксперимента с разработанной моделью мы получили следующие данные, приведенные в таблице 1:

кол-во мест

общий трафик

доход

пиковое значение

кол-во отказов

мин. Значение

1

488

2440

0,059

264

0

2

814

4070

0,112

132

0

3

1217

6085

0,168

96

0

4

1252

6260

0,191

34

0

5

1428

7140

0,247

14

0

6

1236

6180

0,251

1

0

7

1221

6105

0,258

1

0

8

1292

6460

0,298

0

0

9

1292

6460

0,298

0

3,7

10

1292

6460

0,298

0

0

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


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

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

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

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