2.1  Постановка задач (Вариант №2)

Провести имитационное моделирование работы парикмахерской. Количество парикмахеров в парикмахерской – n. Время моделирования –t часов. Интервал времени между двумя последовательными посещениями парикмахерской клиентами моделировать случайной величиной τ1 с дискретным равномерным распределением в диапазоне значений [τ1min,…,τ1max] минут. Время обслуживания одного клиента моделировать случайной величиной τ2 с распределением P(τ2). Цена обслуживания клиента определяется функцией времени обслуживания вида c=aτ2.

Если в момент прибытия очередного клиента парикмахеры заняты, то клиент помещается в очередь. Максимальная длина очереди 10 чел. Если длина очереди максимальна, то производится отказ в обслуживании очередного клиента.

Рассчитать:

§  количество обслуженных клиентов за период моделирования;

§  выручку парикмахерской R за период моделирования;

§  средний размер очереди;

§  число отказов r.

Параметры модели:

§  n=2;

§  t=8;

§  τ1min =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)]

floatx1[]={10,12,13,14,15,16,17,18,19};

floatp1[]={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();

}


Информация о работе «Имитационное моделирование работы парикмахерской»
Раздел: Экономико-математическое моделирование
Количество знаков с пробелами: 30350
Количество таблиц: 1
Количество изображений: 6

Похожие работы

Скачать
98051
44
0

... 2-3 Поиск литературы 7 1 7 2-4 Разработка модели разветвленной СМО 6 1 6 3 Поиск литературы завершен 3-6 Изучение литературы по теории массового обслуживания 10 1 10 4 Модель разработана 4-5 Разработка алгоритма программы 10 1 10 5 Алгоритм программы разработан 5-7 Выбор среды программиро-вания и создание программы 30 1 ...

Скачать
51386
5
18

... ai- расход сырья на единицу продукции; B - общий запас сырья; W - область допустимых ограничений; Тема 2. Метод математического моделирования в экономике. 2.1. Понятие “модель” и “моделирование”. С понятием “моделирование экономических систем” (а также математических и др.) связаны два класса задач: 1)            задачи анализа, когда система подвергается глубокому изучению ее ...

Скачать
33545
0
0

... Математическое моделирование — метод изучения объекта исследования, основанный на создании его математической модели и использовании её для получения новых знаний, совершенствования объекта исследования или управления объектом. Математическое моделирование можно подразделить на аналитическое и компьютерное (машинное) моделирование. При аналитическом моделировании ученый — теоретик получает ...

Скачать
46164
1
11

... очередь длины k, остается в ней с вероятностью Pk и не присоединяется к очереди с вероятностью gk=1 - Pk,'. именно так обычно ведут себя люди в очередях. В системах массового обслуживания, являющихся математическими моделями производственных процессов, возможная длина очереди ограничена постоянной величиной (емкость бункера, например). Очевидно, это частный случай общей постановки. Некоторые ...

0 комментариев


Наверх