Имитационное моделирование процесса работы Интернет-кафе
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 |
Другие рефераты на тему «Экономико-математическое моделирование»:
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели