Реферат: Имитационное моделирование работы парикмахерской
--PAGE_BREAK--Глава 2 Имитационное моделирование процесса
2.1
Постановка задач (Вариант №2)
Провести имитационное моделирование работы парикмахерской. Количество парикмахеров в парикмахерской – n. Время моделирования –tчасов. Интервал времени между двумя последовательными посещениями парикмахерской клиентами моделировать случайной величиной τ1 с дискретным равномерным распределением в диапазоне значений [τ1min,…,τ1max] минут. Время обслуживания одного клиента моделировать случайной величиной τ2с распределением P(τ2). Цена обслуживания клиента определяется функцией времени обслуживания вида c=a
τ2.
Если в момент прибытия очередного клиента парикмахеры заняты, то клиент помещается в очередь. Максимальная длина очереди 10 чел. Если длина очереди максимальна, то производится отказ в обслуживании очередного клиента.
Рассчитать:
§ количество обслуженных клиентов за период моделирования;
§ выручку парикмахерской Rза период моделирования;
§ средний размер очереди;
§ число отказовr.
Параметры модели:
§ n=2;
§ t=8;
§ τ1
min=1, τ1max=15;
§ P(τ2)=( 10 12 13 14 15 16 17 18 19)
(0,05 0,05 0,05 0,05 0,05 0,2 0,2 0,2 0,15)
(первая строка — значение случайной величины в минутах, вторая — соответствующие вероятности);
§ а=3
Определить методом машинного эксперимента параметр τ1max, максимизирующий выручку Rпри условии r=0. Средство реализации модели – программа на языке С++.
2.2
Общий алгоритм моделирования процесса
Алгоритм имитационного моделирования процессов данного типа структурируется вокруг следующих групп основных компонентов:
1. Организация цикла перебора отсчетов дискретного времени моделирования, т.е. собственно организация процесса как последовательности отдельных состояний системы в дискретном времени;
2. Наполнение этого цикла множеством независимых обработчиков случайных событий происходящих в моделируемой системе.
Таким образом, мы имеем общий способ построения алгоритмов подобного типа, который включает следующие основные компоненты:
1. Анализ событий в системе и проектирование структур данных необходимых для хранения информации связанный с этими событиями;
2. Разработка отдельных алгоритмов обработки этих событий включающих в общем случае модификацию параметров состояния системы и моделирование следующего события того типа, обработка которого производится этим алгоритмом;
Связывание отдельных разработанных выше алгоритмов и структур данных в единой программе.
2.3
Моделирование программы с заданными параметрами
В данной курсовой работе необходимо провести имитационное моделирование работы Парикмахерской. Для моделирования данной задачи мы используем СМО с Nобрабатывающими устройствами без очереди с отказами. Алгоритм поставленной задачи, которая рассмотрена в п. 2.2. необходимо реализовать на языке программирования С++.
В качестве параметров модели используем следующие компоненты и макроопределения:
· Т — время моделирования (в мин.);
· RIN— генератор случайного потока поступающих в систему требований;
· RОN— генератор интервалов времени обработки требования обрабатывающим устройством;
· n– общее число мест в кафе.
Исходный текст программы начинается с определения параметров модели и прочих исходных данных. Все они определяются с помощью директивы препроцессора "#define". Макросы RINи RОNопределяют вызовы функций, моделирующих распределение интервалов времени между событиями прихода посетителей и интервалов времени от начала до завершения обслуживания посетителей, соответственно. А макрос Trafikопределяет вызов функции, моделирующую средний трафик пользователей. Сами функции моделирования случайных последовательностей, распределенных по различным законам, определены в файле Rand.срр, текст которого подключается к тексту модели процесса с помощью директивы препроцессора "#include" в первой строке текста программной реализации модели. Константа «Т» определяет длительность периода моделирования в единицах дискретного времени моделирования (в минутах). Константа "n" задаёт число обрабатывающих посетителей. ton[i]=-1 определяет специальное значение для элемента массива ton[ ], означающее, что место освободилось (компьютер свободен). Поскольку массив ton[ ] предназначен для хранения моментов времени ухода посетителя, которые могут принимать лишь неотрицательные значения, то в качестве такого, сигнализирующего о незанятости компьютера значения, взято первое неиспользуемое отрицательное число — "-1".
Все переменные определяются как длинные целочисленные переменные. Это связано с тем, что диапазона значений простого типа int— от -32768 до 32767 может быть недостаточно для представления используемых значений данных модели. Далее следует собственно моделирующий алгоритм:
1.Инициализация переменных:
1.1. Инициализация массива ton[ ] – все парикмахеры помечаются как свободные присваиванием элементам массива значения "-1":
" for(i=0;i<N;i++) ton[i]=-1;";
2. Цикл перебора дискретных отсчётов времени периода моделирования:
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)”, и вход
в тело цикла “{”,
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., в этом разделе можно описать и частные переменные, которые используются в программе, разработанной на языке программирования С++:
В программной реализации используются следующие частные переменные:
· i
,
j— используются для хранения вспомогательных индексных значений;
· t— дискретные отсчёты времени периода моделирования;
· tin– входящий поток, время прихода посетителя (момент поступления в систему следующего требования);
· ton[ ] — моменты завершения обработки требований соответствующими элементам массива обрабатывающими устройствами, то есть массив для сохранения интервалов времени ухода посетителей;
· Cena–цена обслуживания клиента;
· r– число отказов пользователям;
· m– число обслуженных посетителей;
R-выручка парикмахерской за период моделирования
Программная реализация алгоритма производится в несколько этапов:
1.
Подключение в программу заголовочных файлов:
#
include//включение в программу текстов заранее подготовленных файлов
#
include
<
iostream
.
h
>//содержит потоки данных ввода/вывода
#
include
<
math
.
h
>//хранятся математически функции
#include<conio.h>//
#include<stdlib.h>//
# include <values.h>//содержит описания данных
#
define//определение параметров модели и прочих исходных данных на глобальном уровне, описанной в п.
#define RCLIENTS x1[discrete(p1)]
float x1[]={7,8,9,10,11,12,13,14,15};
float p1[]={0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.05, 0.05, 0.15};
#define CENA x2[discrete(p2)]
floatx
1[]={10,12,13,14,15,16,17,18,19};
floatp
1[]={0.05, 0.05, 0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.15};
#
defineC
(125*125*125*125*5)//объявление мультипликативного конгруэнтного метода, которое описывается в п.1.3.
#
definen
2// общее число парикмахеров
#
defineT
(8*60*30)// период моделирования (в мин.)
2.
Генерация мультипликативным конгруэнтным методом псевдослучайной последовательности чисел:
floatrand(void) //генерация псевдослучайной последовательности с равномерным распределением
{
static unsigned long int u=C;
// static– модификатор для того, чтобы локальная переменная uсохраняла значение между двумя последующими обращениями к этой функции
u=u*C; //С — константа
returnu/float(0xfffffffful); // (0xfffffffful) – максимально беззнаковые целое число, заданное в шестнадцатеричной форме.
}
3.
Вызов функций моделирования:
//функция моделирования показательного распределения, описанная в п.1.7.
unsigned int discrete( float p[ ])
{
float s, r;
int k=0;
s=p[ ];
r=rand( );
while (s<r)
{
k++;
s+=s+p[k];
}
returnk;
}
4.
Инициализация
unsigned long int i,j,cost, R,r,n,k;
float t, tin;
m=0; k=0; R=0;
5.
Запускпрограммы
tin=RIN;
for(i=0;i<T;i++)
6.
Обработказавершения
for(j=0;j<N;j++) if(ton[j]==i)
{
m++;
ton[j]=-1;
}
7. Обработка очередного входящего события
if(i==tin)
{
j=0; while((ton[j]!=-1) && (j<N)) j++;
if(j!=N)
{
i=RCLIENTS;
n++;
for(;t<N;i++)
if(rand1()<=P)
{
cost=cost+a*CENA;
k++;
}
} else r++;
tin=RIN+i;
}
}
8.
Выводимые
результаты
:
cout<<»… Rezultati modelirovaniya ..............................";
cout<<«1.Posetili parikmakherskuy:»<<n<<" chel"<<endl;
cout<<«2.Iz nikh obclujeno: „<<m<<“ chel»<<endl;
cout<<«3. Iz nikh ne obclujeno: „<<r<<endl;
cout<<“5Viruchka sostavila: „<<n*cost<<“ rub»<<endl;
getch();
}
2.5
Моделирование программы с заданными параметрами
Запустив программу, написанную на языке С++, мы получили следующие результаты согласно исходным данным:
<img width=«544» height=«229» src=«ref-1_1649448488-11842.coolpic» alt=«1» v:shapes=«Рисунок_x0020_6»>
Рис3. Результат выполнения разработанной программы
При данном количестве парикмахеров– 2, было рассчитано:
· Общее количество посетителей-25 человек;
· Общее количество обслуженных клиентов-20человек;
· Oбщее количество отказов-5 человек;
· Полученная прибыль составила 13690руб.
2.6
Машинный эксперимент с разработанной моделью
В результате машинного эксперимента с разработанной моделью мы получили следующие данные, приведенные в таблице 1:
Таблица 1. Полученные результаты задачи
Изменяя число парикмахеров в салоне, мы получаем следующие графики:
продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по математике
Реферат по математике
Имитационное моделирование жизненного цикла товара на примере ООО Стимул
2 Сентября 2013
Реферат по математике
Имитационное моделирование группового обслуживания с несколькими этапами и двойной очередью раб
2 Сентября 2013
Реферат по математике
Сущность теории вероятностей
20 Июня 2015
Реферат по математике
Економіко-математичне моделювання в управлінні підприємством аграрно-промислового комплексу
2 Сентября 2013