Курсовая работа: Имитационное моделирование работы парикмахерской
return k;
}
Функция принимает массив вероятностей моделируемой дискретной случайной величины и выдает индекс очередного ее сгенерированного значения. Следует учесть, что поскольку индексация массивов в языке С начинается с нуля, также с нуля индексируются значения разыгрываемой случайной величины. То есть функция выдает значения в диапазоне от 0 до к-1 для дискретной случайной величины, принимающей к значений. Ниже для иллюстрации приведен ряд из 100 значений выданных программой, использующей вызов данной функции для массива вероятностей p={0.5, 0.5}:
0 1 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0
1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1
1.2.6 Моделирование случайной величины, равномерно распределенной в интервале ( a , b )
Мы используем метод обратной функции для моделирования равномерного и показательного распределений. Решаем уравнение . Для этого, подставив выражение для плотности равномерного распределения на место , вначале вычислим интеграл в левой части уравнения:
,
а затем для вычисления значений u равномерно распределенной в интервале (a,b) случайной величины через значения g случайной величины , равномерно распределенной в интервале (0,1) просто выразим переменную u через переменную g из уравнения :
Заметим, что полученная формула очевидна. Действительно, для пересчета равномерно распределенной в интервале (0,1) случайной величины в случайную величину, равномерно распределенную в интервале (a,b), мы должны вначале «растянуть» диапазон значений единичной длины в диапазон значений (b-a) умножая значения g на (b-a), а затем переместить полученный результат из интервала (0,1) в интервал (a,b), прибавив к нему значение a .
Запись полученной формулы в виде функции языка С:
float uniform (float a, float b) {return rand()*(b-a)+a;}
позволит нам программно генерировать случайные величины с равномерным распределением в любом заданном конечном интервале значений (a,b).
Глава 2 Имитационное моделирование процесса
2.1 Постановка задач (Вариант №2)
Провести имитационное моделирование работы парикмахерской. Количество парикмахеров в парикмахерской – n. Время моделирования –tчасов. Интервал времени между двумя последовательными посещениями парикмахерской клиентами моделировать случайной величиной τ1 с дискретным равномерным распределением в диапазоне значений [τ1 min ,…,τ1 max ] минут. Время обслуживания одного клиента моделировать случайной величиной τ2 с распределением P(τ2 ). Цена обслуживания клиента определяется функцией времени обслуживания вида c=a τ2.
Если в момент прибытия очередного клиента парикмахеры заняты, то клиент помещается в очередь. Максимальная длина очереди 10 чел. Если длина очереди максимальна, то производится отказ в обслуживании очередного клиента.
Рассчитать:
- количество обслуженных клиентов за период моделирования;
- выручку парикмахерской Rза период моделирования;
- средний размер очереди;
- число отказовr.
Параметры модели:
- n=2;
- t=8;
- τ1 min =1, τ1 max =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