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

Теперь мы должны лишь всякий раз определять, к какому из множеству выбранных указанным выше образом подинтервалов принадлежит очередное выданное функцией rand() значение, и выдавать соответствующее ему значение моделируемой дискретной случайная величина.

Формально этот метод может быть представлен в следующем виде. Пусть – случа

йная величина, равномерно распределенная на отрезке [0,1] (в нашем случае – это результат очередного выполнения функции rand()) и – моделируемая дискретная случайная величина с распределением . Тогда мы выдаем по получении очередного значения g случайной величины такое значение дискретной случайной величины , для которого верно двойное неравенство . Этим исчерпывается решение задачи моделирования дискретной случайной величины с заданным распределением. Вышеприведенный алгоритм легко реализуется программно, - например так, как в нижеприведенной функции int discrete (float p[]):

unsigned int discrete (float p[])

{

float s, r;

int k=0;

s=p[0]; r=rand();

while (s < r)

{

k++;

s=s+p[k];

}

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 с дискретным равномерным распределением в диапазоне значений [τ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. необходимо реализовать на языке программирования С++.

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


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

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

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

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