Математические модели систем массового обслуживания для решения экономических задач. Прикасаться к экрану и к тыльной стороне монитора, клавиатуры

Курсовая работа

«Имитационное моделирование системы массового обслуживания»

по курсу «Исследование операций»

Введение

При исследовании операций часто приходится сталкиваться с системами, предназначенными для многоразового использования при решении однотипных задач. Возникающие при этом процессы получили название процессов обслуживания, а системы – систем массового обслуживания (СМО). Каждая СМО состоит из определенного числа обслуживающих единиц (приборов, устройств, пунктов, станций), которые называются каналами обслуживания. Каналами могут быть линии связи, рабочие точки, вычислительные машины, продавцы и др. По числу каналов СМО подразделяют на одноканальные и многоканальные.

Заявки поступают в СМО обычно не регулярно, а случайно, образуя так называемый случайный поток заявок (требований). Обслуживание заявок также продолжается какое-то случайное время. Случайный характер потока заявок и времени обслуживания приводит к тому, что СМО оказывается загруженной неравномерно: в какие-то периоды времени скапливается очень большое количество заявок (они либо становятся в очередь, либо покидают СМО не обслуженными), в другие же периоды СМО работает с недогрузкой или простаивает.

Предметом теории массового обслуживания является построение математических моделей, связывающих заданные условия работы СМО (число каналов, их производительность, характер потока заявок и т.п.) с показателями эффективности СМО, описывающими ее способность справляться с потоком заявок. В качестве показателей эффективности СМО используются:

– Абсолютная пропускная способность системы (А

Q

– вероятность отказа обслуживания заявки ();

k );

– среднее число заявок в очереди ();

СМО делят на 2 основных типа: СМО с отказами и СМО с ожиданием (очередью). В СМО с отказами заявка, поступившая в момент, когда все каналы заняты, получает отказ, покидает СМО и в дальнейшем процессе обслуживания не участвует (например, заявка на телефонный разговор в момент, когда все каналы заняты, получает отказ и покидает СМО не обслуженной). В СМО с ожиданием заявка, пришедшая в момент, когда все каналы заняты, не уходит, а становится в очередь на обслуживание.

Одним из методов расчета показателей эффективности СМО является метод имитационного моделирования. Практическое использование компьютерного имитационного моделирования предполагает построение соответствующей математической модели, учитывающей факторы неопределенности, динамические характеристики и весь комплекс взаимосвязей между элементами изучаемой системы. Имитационное моделирование работы системы начинается с некоторого конкретного начального состояния. Вследствие реализации различных событий случайного характера, модель системы переходит в последующие моменты времени в другие свои возможные состояния. Этот эволюционный процесс продолжается до конечного момента планового периода, т.е. до конечного момента моделирования.

1. Основные характеристики CМОи показатели их эффективности

1.1 Понятие марковского случайного процесса

Пусть имеется некоторая система, которая с течением времени изменяет свое состояние случайным образом. В этом случае говорят, что в системе протекает случайный процесс.

Процесс называется процессом с дискретными состояниями, если его состояния можно заранее перечислить и переход системы из одного состояния в другое происходит скачком. Процесс называется процессом с непрерывным временем, если переходы системы из состояния в состояние происходят мгновенно.

Процесс работы СМО – это случайный процесс с дискретными состояниями и непрерывным временем.

Случайный процесс называют марковским или случайным процессом без последействия, если для любого момента времени вероятностные характеристики процесса в будущем зависят только от его состояния в данный момент и не зависят от того, когда и как система пришла в это состояние.

При анализе процессов работы СМО удобно пользоваться геометрической схемой – графом состояний . Обычно состояния системы изображаются прямоугольниками, а возможные переходы из состояния в состояние – стрелками. Пример графа состояний приведен на рис. 1.


Поток событий – последовательность однородных событий, следующих одно за другим в случайные моменты времени.

Поток характеризуется интенсивностью λ – частотой появления событий или средним числом событий, поступающих в СМО в единицу времени.

Поток событий называется регулярным, если события следуют одно за другим через определенные равные промежутки времени.

Поток событий называется стационарным, если его вероятностные характеристики не зависят от времени. В частности, интенсивность стационарного потока есть величина постоянная: .

Поток событий называется ординарным, если вероятность попадания на малый участок времени двух и более событий мала по сравнению с вероятностью попадания одного события, т.е., если события появляются в нем поодиночке, а не группами.

Поток событий называется потоком без последействия, если для любых двух непересекающихся участков времени и число событий, попадающих на одно из них, не зависит от числа событий, попадающих на другие.

Поток событий называется простейшим (или стационарным пуассоновским), если он одновременно стационарен, ординарен и не имеет последействия.

1.2 Уравнения Колмогорова

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

Правило составлений уравнений Колмогорова: В левой части каждого из уравнений стоит производная по времени от вероятности данного состояния. В правой части стоит сумма произведений всех состояний, из которых возможен переход в данное состояние, на интенсивности соответствующих потоков событий минус суммарная интенсивность всех потоков, выводящих систему из данного состояния, умноженная на вероятность данного состояния.

Например, для графа состояний, приведенного на рис. 1, уравнения Колмогорова имеют вид:


Т.к. в правой части системы каждое слагаемое входит 1 раз со знаком и 1 раз со знаком , то, складывая все уравнений, получим, что

,

,

Следовательно, одно из уравнений системы можно отбросить и заменить уравнением (1.2.1).

Чтобы получить конкретное решение надо знать начальные условия, т.е. значения вероятностей в начальный момент времени.

1.3 Финальные вероятности и граф состояний СМО

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


Смысл финальных вероятностей состоит в том, что они равны среднему относительному времени нахождения системы в данном состоянии.

Т.к. в стационарном состоянии производные по времени равны нулю, то уравнения для финальных вероятностей получаются из уравнений Колмогорова путем приравнивания нулю их правых частей.

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

Рис. 2. Граф состояний в моделях СМО

Предположим, что все потоки, переводящие систему из одного состояния в другое, простейшие. По графу, представленному на рис. 2, составим уравнения для финальных вероятностей системы. Они имеют вид:

Получается система из ( n +1) уравнения, которая решается методом исключения. Этот метод заключается в том, что последовательно все вероятности системы выражаются через вероятность .

,

.

Подставляя эти выражения в последнее уравнение системы, находим , затем находим остальные вероятности состояний СМО.

1.4 Показатели эффективности СМО

Цель моделирования СМО состоит в том, чтобы рассчитать показатели эффективности системы через ее характеристики. В качестве показателей эффективности СМО используются:

– абсолютная пропускная способность системы (А ), т.е. среднее число заявок, обслуживаемых в единицу времени;

– относительная пропускная способность (Q ), т.е. средняя доля поступивших заявок, обслуживаемых системой;

– вероятность отказа (), т.е. вероятность того, что заявка покинет СМО не обслуженной;

– среднее число занятых каналов (k );

– среднее число заявок в СМО ();

– среднее время пребывания заявки в системе ();

– среднее число заявок в очереди () – длина очереди;

– среднее число заявок в системе ();

– среднее время пребывания заявки в очереди ();

– среднее время пребывания заявки в системе ()

– степень загрузки канала (), т.е. вероятность того, что канал занят;

– среднее число заявок, обслуживаемых в единицу времени;

– среднее время ожидания обслуживания;

– вероятность того, что число заявок в очереди превысит определенное значение и т.п.

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

(1.4.1)

Формулы (1.4.1) и (1.4.2) называются формулами Литтла. Они вытекают из того, что в предельном стационарном режиме среднее число заявок, прибывающих в систему, равно среднему числу заявок, покидающих ее, т.е. оба потока заявок имеют одну и ту же интенсивность .

Формулы для вычисления показателей эффективности приведены в таб. 1.


Таблица 1.

Показатели

Одноканальная СМО с

ограниченной очередью

Многоканальная СМО с

ограниченной очередью

Финальные

вероятности

Вероятность

Абсолютная пропускная

способность

Относительная пропускная

способность

Среднее число заявок в

Среднее число заявок под

обслуживанием

Среднее число заявок в системе

1.5 Основные понятия имитационного моделирования

Основная цель имитационного моделирования заключается в воспроизведении поведения изучаемой системы на основе анализа наиболее существенных взаимосвязей ее элементов.

Компьютерное имитационное моделирование следует рассматривать как статический эксперимент.

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

Предположим, что в некоторой системе массового обслуживания время обслуживания одной заявки распределено по экспоненциальному закону с параметром , где – интенсивность потока обслуживания. Тогда функция распределения времени обслуживания имеет вид

Пусть - реализация случайной величины , равномерно распределенной на отрезке , а – соответствующая ей реализация случайного времени обслуживания одной заявки. Тогда, согласно (1.5.1)

1.6 Построение имитационных моделей

Первый этап создания любой имитационной модели – этап описания реально существующей системы в терминах характеристик основных событий. Эти события, как правило, связаны с переходами изучаемой системы из одного возможного состояния в другое и обозначаются как точки на временной оси. Для достижения основной цели моделирования достаточно наблюдать систему в моменты реализации основных событий.

Рассмотрим пример одноканальной системы массового обслуживания. Целью имитационного моделирования подобной системы является определение оценок ее основных характеристик, таких, как среднее время пребывания заявки в очереди, средняя длина очереди и доля времени простоя системы.

Характеристики самого процесса массового обслуживания могут изменять свои значения либо в момент поступления новой заявки на обслуживание, либо при завершении обслуживания очередной заявки. К обслуживанию очередной заявки СМО может приступить немедленно (канал обслуживания свободен), но не исключена необходимость ожидания, когда заявке придется занять место в очереди (СМО с очередью, канал обслуживания занят). После завершения обслуживания очередной заявки СМО может сразу приступить к обслуживанию следующей заявки, если она есть, но может и простаивать, если таковая отсутствует. Необходимую информацию можно получить, наблюдая различные ситуации, возникающие при реализациях основных событий. Так, при поступлении заявки в СМО с очередью при занятом канале обслуживания длина очереди увеличивается на 1. Аналогично длина очереди уменьшается на 1, если завершено обслуживание очередной заявки и множество заявок в очереди не пусто.

Для эксплуатации любой имитационной модели необходимо выбрать единицу времени. В зависимости от природы моделируемой системы такой единицей может быть микросекунда, час, год и т.д.

Так как по своей сути компьютерное имитационное моделирование представляет собой вычислительный эксперимент, то его наблюдаемые результаты в совокупности должны обладать свойствами реализации случайной выборки. Лишь в этом случае будет обеспечена корректная статистическая интерпретация моделируемой системы.

При компьютерном имитационном моделировании основной интерес представляют наблюдения, полученные после достижения изучаемой системой стационарного режима функционирования, так как в этом случае резко уменьшается выборочная дисперсия.

Время, необходимое для достижения системой стационарного режима функционирования, определяется значениями ее параметров и начальным состоянием.

Поскольку основной целью является получение данных наблюдений с возможно меньшей ошибкой, то для достижения этой цели можно:

1) увеличить длительность времени имитационного моделирования процесса функционирования изучаемой системы. В этом случае не только увеличивается вероятность достижения системой стационарного режима функционирования, но и возрастает число используемых псевдослучайных чисел, что также положительно влияет на качество получаемых результатов.

2) при фиксированной длительности времени Т имитационного моделирования провести N вычислительных экспериментов, называемых еще прогонами модели, с различными наборами псевдослучайных чисел, каждый из которых дает одно наблюдение. Все прогоны начинаются при одном и том же начальном состоянии моделируемой системы, но с использованием различных наборов псевдослучайных чисел. Преимуществом этого метода является независимость получаемых наблюдений , показателей эффективности системы. Если число N модели достаточно велико, то границы симметричного доверительного интервала для параметра определяются следующим образом:


, , т.е. , где

Исправленная дисперсия, ,

N – число прогонов программы, – надежность, .

2. Аналитическое моделирование СМО

2.1 Граф состояний системы и уравнения Колмогорова

Рассмотрим двухканальную систему массового обслуживания (n = 2) с ограниченной очередью равной шести (m = 4). В СМО поступает простейший поток заявок со средней интенсивностью λ = 4,8 и показательным законом распределения времени между поступлением заявок. Поток обслуживаемых в системе заявок является простейшим со средней интенсивностью μ = 2 и показательным законом распределения временем обслуживания.

Данная система имеет 7 состояний, обозначим их:

S 0 – система свободная, нет заявок;

S 1 – 1 заявка на обслуживании, очередь пуста;

S 2 – 2 заявки на обслуживании, очередь пуста;

S 3 – 2 заявки на обслуживании, 1 заявка в очереди;

S 4 – 2 заявки на обслуживании, 2 заявки в очереди;

S 5 – 2 заявки на обслуживании, 3 заявки в очереди;

S 6 – 2 заявки на обслуживании, 4 заявки в очереди;

Вероятности прихода системы в состояния S 0 , S 1 , S 2 , …, S 6 соответственно равны Р 0 , Р 1 , Р 2 , …, Р 6 .

Граф состояний системы массового обслуживания представляет собой схему гибели и размножения. Все состояния системы можно представить в виде цепочки, в которой каждое из состояний связано с предыдущим и последующим.

Рис. 3. Граф состояний двухканальной СМО


Для построенного графа запишем уравнения Колмогорова:

Чтобы решить данную систему зададим начальные условия:

Систему уравнений Колмогорова (систему дифференциальных уравнений) решим численным методом Эйлера с помощью программного пакета Maple 11 (см. Приложение 1).

Метод Эйлера


где- в нашем случае, это правые части уравнений Колмогорова, n=6.

Выберем шаг по времени . Предположим , где Т – это время, за которое система выходит на стационарный режим. Отсюда получаем число шагов . Последовательно N раз вычисляя по формуле (1) получим зависимости вероятностей состояний системы от времени, приведенной на рис. 4.

Значения вероятностей СМО при равны:


Рис. 4. Зависимости вероятностей состояний системы от времени

P 0
P 5
P 4
P 3
P 2
P 1
2.2 Финальные вероятности системы

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

Т.к. в стационарном состоянии производные по времени равны 0, то уравнения для финальных вероятностей получаются из уравнений Колмогорова путем приравнивания правых частей 0. Запишем уравнения для финальных вероятностей для нашей СМО.


Решим данную систему линейных уравнений с помощью программного пакета Maple 11 (см. Приложение 1).

Получим финальные вероятности системы:

Сравнение вероятностей, полученных из системы уравнений Колмогорова при , с финальными вероятностями показывает, что ошибки равны:

Т.е. достаточно малы. Это подтверждает правильность полученных результатов.

2.3 Расчет показатели эффективности системы по финальным вероятностям

Найдем показатели эффективности системы массового обслуживания.

Сначала вычислим приведенную интенсивность потока заявок:

1) Вероятность отказав обслуживании заявки, т.е. вероятность того, что заявка покидает систему не обслуженной.В нашем случае заявке отказывается в обслуживании, если все 2 канала заняты, и очередь максимально заполнена (т.е. 4 человек в очереди), это соответствует состоянию системы S 6 . Т.к. вероятность прихода системы в состояние S 6 равна Р 6 , то

4) Средняя длина очереди, т.е. среднее число заявок в очереди, равна сумме произведений числа заявок в очереди на вероятность соответствующего состояния.

5) Среднее время пребывания заявки в очередиопределяется формулой Литтла:

3. Имитационное моделирование СМО

3.1 Алгоритм метода имитационного моделирования СМО (пошаговый подход)

Рассмотрим двухканальную систему массового обслуживания (n = 2) с максимальной длиной очереди равной шести (m = 4). В СМО поступает простейший поток заявок со средней интенсивностью λ = 4,8 и показательным законом распределения времени между поступлением заявок. Поток обслуживаемых в системе заявок является простейшим со средней интенсивностью μ = 2 и показательным законом распределения временем обслуживания.

Для имитации СМО воспользуемся одним из методов статистического моделирования – имитационным моделированием. Будем использовать пошаговый подход. Суть этого подхода в том, что состояния системы рассматриваются в последующие моменты времени, шаг между которыми является достаточно малым, чтобы за его время произошло не более одного события.

Выберем шаг по времени (). Он должен быть много меньше среднего времени поступления заявки () и среднего времени ее обслуживания (), т.е.

Где (3.1.1)

Исходя из условия (3.1.1) определим шаг по времени .

Время поступления заявки в СМО и время ее обслуживания являются случайными величинами. Поэтому, при имитационном моделировании СМО их вычисление производится с помощью случайных чисел.

Рассмотрим поступление заявки в СМО. Вероятность того, что на интервале в СМО поступит заявка, равна: . Сгенерируем случайное число , и, если , то будем считать, что заявка на данном шаге в систему поступила, если , то не поступила.

В программе это осуществляет isRequested () . Интервал времени примем постоянным и равным 0,0001, тогда отношение будет равно 10000. Если заявка поступила, то она принимает значение «истина», в противном случае значение «ложь».

bool isRequested()

double r = R. NextDouble();

if (r < (timeStep * lambda))

Рассмотрим теперь обслуживание заявки в СМО. Время обслуживания заявки в системе определяется выражением , где – случайное число. В программе время обслуживания определяется с помощью функции GetServiceTime () .

double GetServiceTime()

double r = R. NextDouble();

return (-1/mu*Math. Log (1-r, Math.E));

Алгоритм метода имитационного моделирования можно сформулировать следующим образом. Время работы СМО (Т ) разбивается на шаги по времени dt , на каждом из них выполняется ряд действий. Вначале определяются состояния системы (занятость каналов, длина очереди), затем, с помощью функции isRequested () , определяется, поступила ли на данном шаге заявка или нет.

Если поступила, и, при этом имеются свободные каналы, то с помощью функции GetServiceTime () генерируем время обработки заявки и ставим ее на обслуживание. Если все каналы заняты, а длина очереди меньше 4, то помещаем заявку в очередь, если же длина очереди равна 4, то заявке будет отказано в обслуживании.

В случае, когда на данном шаге заявка не поступала, а канал обслуживания освободился, проверяем, есть ли очередь. Если есть, то из очереди заявку ставим на обслуживание в свободный канал. После проделанных операций время обслуживания для занятых каналов уменьшаем на величину шага dt .

По истечении времени Т , т.е., после моделирования работы СМО, вычисляются показатели эффективности работы системы и результаты выводятся на экран.

3.2 Блок-схема программы

Блок-схема программы, реализующей описанный алгоритм, приведена на рис. 5.

Рис. 5. Блок-схема программы

Распишем некоторые блоки более подробно.

Блок 1. Задание начальных значений параметров.

Random R; // Генератор случайных чисел

public uint maxQueueLength; // Максимальная длина очереди

public uint channelCount; // Число каналов в системе

public double lambda; // Интенсивность потока поступления заявок

public double mu; // Интенсивность потока обслуживания заявок

public double timeStep; // Шагповремени

public double timeOfFinishProcessingReq; // Время окончания обслуживания заявки во всех каналах

public double timeInQueue; // Время пребывания СМО в состояниях с очередью

public double processingTime; // Времяработысистемы

public double totalProcessingTime; // Суммарноевремяобслуживаниязаявок

public uint requestEntryCount; // Числопоступившихзаявок

public uint declinedRequestCount; // Числоотказанныхзаявок

public uint acceptedRequestCount; // Числообслуженныхзаявок

uint queueLength; // Длина очереди //

Тип, описывающий состояния СМО

enum SysCondition {S0, S1, S2, S3, S4, S5, S6};

SysCondition currentSystemCondition; // Текущее состояние системы

Задание состояний системы. Выделим у данной 2-х канальной системы 7 различных состояний: S 0 , S 1 . S 6 . СМО находится в состоянии S 0 , когда система свободна; S 1 – хотя бы один канал свободен; в состоянии S 2 , когда все каналы заняты, и есть место в очереди; в состоянии S 6 – все каналы заняты, и очередь достигла максимальной длины (queueLength = 4).

Определяем текущее состояние системы с помощью функции GetCondition()

SysCondition GetCondition()

SysCondition p_currentCondit = SysCondition.S0;

int busyChannelCount = 0;

for (int i = 0; i < channelCount; i++)

if (timeOfFinishProcessingReq[i] > 0)

busyChannelCount++;

p_currentCondit += k * (i + 1);

if (busyChannelCount > 1)

{p_currentCondit ++;}

return p_currentCondit + (int) QueueLength;

Изменение времени пребывания СМО в состояниях с длиной очереди 1, 2,3,4. Это реализуется следующим программным кодом:

if (queueLength > 0)

timeInQueue += timeStep;

if (queueLength > 1)

{timeInQueue += timeStep;}

Присутствует такая операция, как помещение заявки на обслуживание в свободный канал. Просматриваются, начиная с первого, все каналы, когда выполняется условие timeOfFinishProcessingReq [ i ] <= 0 (канал свободен), в него подается заявка, т.е. генерируется время окончания обслуживания заявки.

for (int i = 0; i < channelCount; i++)

if (timeOfFinishProcessingReq [i] <= 0)

timeOfFinishProcessingReq [i] = GetServiceTime();

totalProcessingTime+= timeOfFinishProcessingReq [i];

Обслуживаниезаявоквканалахмоделируетсякодом:

for (int i = 0; i < channelCount; i++)

if (timeOfFinishProcessingReq [i] > 0)

timeOfFinishProcessingReq [i] -= timeStep;

Алгоритм метода имитационного моделирования реализован на языке программирования C#.

3.3 Расчет показателей эффективности СМО на основе результатов ее имитационного моделирования

Наиболее важными являются такие показатели, как:

1) Вероятность отказа в обслуживании заявки, т.е. вероятность того, что заявка покидает систему не обслуженной.В нашем случае заявке отказывается в обслуживании, если все 2 канала заняты, и очередь максимально заполнена (т.е. 4 человек в очереди). Для нахождения вероятности отказа разделим время пребывания СМО в состоянии с очередью 4 на общее время работы системы.

2) Относительная пропускная способность – это средняя доля поступивших заявок, обслуживаемых системой.

3) Абсолютная пропускная способность– это среднее число заявок, обслуживаемых в единицу времени.


4) Длина очереди, т.е. среднее число заявок в очереди. Длина очереди равна сумме произведений числа человек в очереди на вероятность соответствующего состояния. Вероятности состояний найдем как отношение времени нахождения СМО в этом состоянии к общему времени работы системы.

5) Среднее время пребывания заявки в очереди определяется формулой Литтла

6) Среднее число занятых каналовопределяется следующим образом:

7) Процент заявок, которым было отказано в обслуживании, находится по формуле

8) Процент обслуженных заявок находится по формуле


3.4 Статистическая обработка результатов и их сравнение с результатами аналитического моделирования

Т.к. показатели эффективности получаются в результате моделирования СМО в течение конечного времени, они содержат случайную компоненту. Поэтому, для получения более надежных результатов нужно провести их статистическую обработку. С этой целью оценим доверительный интервал для них по результатам 20 прогонов программы.

Величина попадает в доверительный интервал, если выполняется неравенство

, где

математическое ожидание (среднее значение), находится по формуле

Исправленная дисперсия,

,

N =20 – число прогонов,

– надежность. При и N =20 .

Результат работы программы представлен на рис. 6.


Рис. 6. Вид программы

Для удобства сравнения результатов, полученных различными методами моделирования, представим их в виде таблицы.

Таблица 2.

Показатели

эффективности СМО

Результаты

аналитического

моделирования

Результаты

имитационного моделирования (послед. шаг)

Результаты имитационного моделирования

Нижняя граница

доверительного

интервала

Верхняя граница

доверительного

интервала

Вероятность отказа 0,174698253017626

0,158495148639101

0,246483801571923
Относительная пропускная способность 0,825301746982374 0,753516198428077 0,841504851360899
Абсолютная пропускная способность 3,96144838551539 3,61687775245477 4,03922328653232
Средняя длина очереди 1,68655313447018 1,62655862750852 2,10148609204869
Среднее время пребывания заявки в очереди 0,4242558575 0,351365236347954 0,338866380730942 0,437809602510145
Среднее число занятых каналов 1,9807241927577 1,80843887622738 2,01961164326616

Из табл. 2 видно, что результаты, полученные при аналитическом моделировании СМО, попадают в доверительный интервал, полученный по результатам имитационного моделирования. Т.е., результаты, полученные разными методами, согласуются.

Заключение

В данной работе рассмотрены основные методы моделирования СМО и расчета показателей их эффективности.

Проведено моделирование двухканальной СМО с максимальной длиной очереди равной 4 с помощью уравнений Колмогорова, а также, найдены финальные вероятности состояний системы. Рассчитаны показатели ее эффективности.

Проведено имитационное моделирование работы такой СМО. На языке программирования C# составлена программа, имитирующая ее работу. Проведена серия расчетов, по результатам которых найдены значения показателей эффективности системы и выполнена их статистическая обработка.

Полученные при имитационном моделировании результаты согласуются с результатами аналитического моделирования.

Литература

1. Вентцель Е.С. Исследование операций. – М.: Дрофа, 2004. – 208 с.

2. Волков И.К., Загоруйко Е.А. Исследование операций. – М.: Изд.-во МГТУ им. Н.Э. Баумана, 2002. – 435 с.

3. Волков И.К., Зуев С.М., Цветкова Г.М. Случайные процессы. – М.: Изд.-во МГТУ им. Н.Э. Баумана, 2000. – 447 с.

4. Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике. – М.: Высшая школа, 1979. – 400 с.

5. Ивницкий В.Л. Теория сетей массового обслуживания. – М.: Физматлит, 2004. – 772 с.

6. Исследование операций в экономике/ под ред. Н.Ш. Кремера. – М.: Юнити, 2004. – 407 с.

7. Таха Х.А. Введение в исследование операций. – М.: ИД «Вильямс», 2005. – 902 с.

8. Харин Ю.С., Малюгин В.И., Кирлица В.П. и др. Основы имитационного и статистического моделирования. – Минск: Дизайн ПРО, 1997. – 288 с.

Аналитическое исследование систем массового обслуживания (СМО) является подходом, альтернативным имитационному моделированию, и состоит в получении формул для расчета выходных параметров СМО с последующей подстановкой значений аргументов в эти формулы в каждом отдельном эксперименте.

В моделях СМО рассматривают следующие объекты:

1) заявки на обслуживание (транзакты);

2) обслуживающие аппараты (ОА), или приборы.

Практическая задача теории массового обслуживания связана с исследованием операций этими объектами и состоит из отдельных элементов, на которые влияют случайные факторы.

В качестве примера задач, рассматриваемых в теории массового обслуживания, можно привести: согласование пропускной способности источника сообщения с каналом передачи данных, анализ оптимального потока городского транспорта, расчет емкости зала ожидания для пассажиров в аэропорту и пр.

Заявка может находиться либо в состоянии обслуживания, либо в состоянии ожидания обслуживания.

Обслуживающий прибор может быть либо занят обслуживанием, либо свободен.

Состояние СМО характеризуется совокупностью состояний обслуживающих приборов и заявок. Смена состояний в СМО называется – событие.

Модели СМО используются для исследования процессов происходящие в системе, при подаче на входы потоков заявок. Эти процессы представляют собой последовательность событий.

Важнейшие выходные параметры СМО

Производительность

Пропускная способность

Вероятность отказа в обслуживании

Среднее время обслуживания;

Коэффициент загрузки оборудования (ОА).

Заявками могут быть заказы на производство изделий, задачи, решаемые в вычислительной системе, клиенты в банках, грузы, поступающие на транспортировку и др. Очевидно, что параметры заявок, поступающих в систему, являются случайными величинами и при исследовании или проектировании могут быть известны лишь их законы распределения.

В связи с этим анализ функционирования на системном уровне, как правило, носит статистический характер. В качестве математического аппарата моделирования удобно принять теорию массового обслуживания, а в качестве моделей систем на этом уровне использовать системы массового обслуживания.



Простейшие модели СМО

В простейшем случае СМО представляет собой некоторое устройство, называемое обслуживающим аппаратом (ОА), с очередями заявок на входах.

М о д е л ьо б с л у ж и в а н и я с о т к а з а м и (рис.5.1)


Рис. 5.1. Модель СМО с отказами:

0 – источник заявок;

1 – обслуживающий прибор;

а – входной поток заявок на обслуживание;

в – выходной поток обслуженных заявок;

с – выходной поток необслуженных заявок.

В этой модели отсутствует накопитель заявок на входе ОА. Если заявка приходит от источника 0 в момент времени, когда ОА занят обслуживанием предыдущей заявки, то вновь пришедшая заявка выходит из системы (так как ей отказано в обслуживании) и теряется (поток с ).

М о д е л ь о б с л у ж и в а н и я с о ж и д а н и е м (рис. 5.2)


Рис. 5.2. Модель СМО с ожиданием

(N– 1) – количество заявок, которое может поместиться в накопителе

В этой модели имеется накопитель заявок на входе ОА. Если заявка приходит от источника 0 в момент времени, когда ОА занят обслуживанием предыдущей заявки, то вновь пришедшая заявка попадает в накопитель, где неограниченно долго ожидает, пока освободится ОА.

М о д е л ь о б с л у ж и в а н и я с о г р а н и ч е н н ы м в р е м е н е м

о ж и д а н и я (рис. 5.3)


Рис. 5.4. Многоканальная модель СМО с отказами:

n – количество одинаковых обслуживающих аппаратов (приборов)

В этой модели имеется не один ОА, а несколько. Заявки, если это специально не оговорено, могут поступать к любому свободному от обслуживания ОА. Накопителя нет, поэтому данная модель включает свойства модели, показанной на рис. 5.1: отказ в обслуживании заявки означает ее безвозвратную потерю (это происходит только в том случае, если в момент прихода этой заявки все ОА заняты).

в р е м е н е м о ж и д а н и я (рис. 5.5)


Рис. 5.6. Многоканальная модельСМО с ожиданием и восстановлением ОА:

e – обслуживающие аппараты, вышедшие из строя;

f – восстановленные обслуживающие аппараты

Данная модель обладает свойствами моделей, представленных на рис. 5.2 и 5.4, а кроме того свойствами, позволяющими учитывать возможные случайные отказы ОА, которые в этом случае поступают в ремонтный блок 2, где пребывают в течение случайных промежутков времени, затрачиваемых на их восстановление, а затем вновь возвращаются в обслуживающий блок 1.

М н о г о к а н а л ь н а я м о д е л ь СМО с о г р а н и ч е н н ы м

в р е м е н е м о ж и д а н и я и в о с с т а н о в л е н и е м ОА (рис. 5.7)


Рис. 5.7. Многоканальная модель СМО с ограниченным временем ожидания и восстановлением ОА

Данная модель является довольно сложной, поскольку одновременно учитывает свойства двух не самых простых моделей (рис. 5.5 и 5.6).

Классификация, основные понятия, элементы модели, расчет основных характеристик.

При решении задач рациональной организации торговли, бытового обслуживания, складского хозяйства и т.д. весьма полезной бывает интерпретация деятельности производственной структуры как системы массового обслуживания , т.е. системы в которой, с одной стороны, постоянно возникают запросы на выполнение каких-либо работ, а с другой - происходит постоянное удовлетворение этих запросов.

Всякая СМО включает четыре элемента : входящий поток, очередь, обслуживающее устройство, выходящий поток.

Требованием (клиентом, заявкой) в СМО называется каждый отдельный запрос на выполнение какой-либо работы.

Обслуживание - это выполнение работы по удовлетворению поступившего требования. Объект, выполняющий обслуживание требований, называется обслуживающим устройством (прибором) или каналом обслуживания.

Временем обслуживания называется период, в течение которого удовлетворяется требование на обслуживание, т.е. период от начала обслуживания и до его завершения. Период от момента поступления требования в систему и до начала обслуживания называется временем ожидания обслуживания. Время ожидания обслуживания в совокупности с временем обслуживания составляет время пребывания требования в системе.

СМО классифицируются по разным признакам .

1. По числу каналов обслуживания СМО делятся на одноканальные и многоканальные.

2. В зависимости от условий ожидания требованием начала обслуживания различают СМО с потерями (отказами) и СМО с ожиданием.

В СМО с потерями требования , поступившие в момент, когда все приборы заняты обслуживанием, получают отказ, они теряются для данной системы и никакого влияния на дальнейший процесс обслуживания не оказывают. Классическим примером системы с отказами является телефонная станция - требование на соединение получает отказ, если вызываемый абонент занят.

Для системы с отказами основной характеристикой эффективности функционирования является вероятность отказа или средняя доля заявок, оставшихся необслуженными.

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

Для СМО с ожиданием основными характеристиками являются математические ожидания длины очереди и времени ожидания.

Примером системы с ожиданием может служить процесс восстановления телевизоров в ремонтной мастерской.

Встречаются системы, лежащие между указанными двумя группами (смешанные СМО ). Для них характерно наличие некоторых промежуточных условий: ограничениями могут быть ограничения по времени ожидания начала обслуживания, по длине очереди и т.п.



В качестве характеристик эффективности может применяться вероятность отказа как в системах с потерями (или характеристики времени ожидания) и в системах с ожиданием.

3. По дисциплине обслуживания СМО делятся на системы с приоритетом в обслуживании и на системы без приоритета в обслуживании.

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

4. СМО могут быть однофазными и многофазными.

В однофазных системах требования обслуживаются каналами одного типа (например рабочими одной профессии) без передачи их от одного канала к другому, в многофазных системах такие передачи возможны.

5. По месту нахождения источника требований СМО делятся на разомкнутые (когда источник требования находится вне системы) и замкнутые (когда источник находится в самой системе).

К замкнутым относятся системы, в которых поступающий поток требований ограничен. Например, мастер, задачей которого является наладка станков в цехе, должен периодически их обслуживать. Каждый налаженный станок становится в будущем потенциальным источником требований на наладку. В подобных системах общее число циркулирующих требований конечно и чаще всего постоянно.

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

Методы и модели исследования СМО можно условно разбить на аналитические и статистические (имитационного моделирования процессов массового обслуживания).

Аналитические методы позволяют получить характеристики системы как некоторые функции от параметров ее функционирования. Благодаря этому появляется возможность проводить качественный анализ влияния отдельных факторов на эффективность работы СМО.

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

В настоящее время теоретически наиболее разработаны и удобны в практических приложениях методы решения таких задач массового обслуживания, в которых поток требований является простейшим (пуассоновским ).

Для простейшего потока частота поступления требований в систему подчиняется закону Пуассона, то есть вероятность поступления за время t, равное k требований задается формулой:

где λ - параметр потока (см. ниже).

Простейший поток обладает тремя основными свойствами: ординарностью, стационарностью и отсутствием последействия.

Ординарность потока означает практическую невозможность одновременного поступления двух и более требований. Например, достаточно малой является вероятность того, что из группы станков, обслуживаемых бригадой ремонтников, одновременно выйдут из строя несколько станков.

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

Отсутствие последействия означает, что число требований, поступивших в систему до момента t, не определяет того, сколько требований поступит в систему за время t + Δt.

Например, если на ткацком станке в данный момент произошел обрыв нити, и он устранен ткачихой, то это не определяет того, произойдет новый обрыв на данном станке в следующий момент или нет, тем более это не влияет на вероятность возникновения обрыва на других станках.

Важной характеристикой СМО является время обслуживания требований в системе. Время обслуживания является, как правило, случайной величиной и, следовательно, может быть описано законом распределения. Наибольшее распространение в теории и, особенно в практических приложениях, получил экспоненциальный закон. Для этого закона функция распределения вероятностей имеет вид:

F(t) = 1 – e -μt ,

т.е. вероятность того, что время обслуживания не превосходит некоторой величины t, определяется формулой (1 – e -μt), где μ -параметр экспоненциального закона времени обслуживания требований в системе - величина, обратная среднему времени обслуживания, т.е. .

Рассмотрим аналитические модели СМО с ожиданием (наиболее распространенные СМО, в которых требования, поступившие в момент, когда все обслуживающие единицы заняты, становятся в очередь и обслуживаются по мере освобождения обслуживающих единиц).

Задачи с очередями являются типичными в производственных условиях, например при организации наладочных и ремонтных работ, при многостаночном обслуживании и т.д.

Постановка задачи в общем виде выглядит следующим образом.

Система состоит из n обслуживающих каналов. Каждый из них может одновременно обслуживать только одно требование. В систему поступает простейший (пуассоновский) поток требований с параметром λ. Если в момент поступления очередного требования в системе на обслуживании уже находится не меньше n требований (т.е. все каналы заняты), то это требование становится в очередь и ждет начала обслуживания.

Время обслуживания каждого требования t об является случайной величиной, которая подчиняется экспоненциальному закону распределения с параметром μ.

Как отмечалось выше, СМО с ожиданием можно разбить на две большие группы: замкнутые и разомкнутые.

Особенности функционирования каждой из этих двух видов систем накладывают свой оттенок на используемый математический аппарат. Расчет характеристик работы СМО различного вида может быть проведен на основе расчета вероятностей состояний СМО (формулы Эрланга).

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

В качестве основных критериев, характеризующих качество функционирования рассматриваемой системы, выберем: 1) отношение средней длины очереди к наибольшему числу требований, находящихся одновременно в обслуживающей системе -коэффициент простоя обслуживаемого объекта; 2) отношение среднего числа незанятых обслуживающих каналов к их общему числу - коэффициент простоя обслуживаемого канала.

Рассмотрим расчет необходимых вероятностных характеристик (показателей качества функционирования) замкнутой СМО.

1. Вероятность того, что в системе находится k требований при условии, когда их число не превышает числа обслуживающих аппаратов n:

P k = α k P 0 , (1 ≤ k ≤ n),

где

λ - частота (интенсивность) поступления требований в систему от одного источника;

Средняя продолжительность обслуживания одного требования;

m - наибольшее возможное число требований, находящихся в обслуживающей системе одновременно;

n - число обслуживающих аппаратов;

Р 0 - вероятность того, что все обслуживающие аппараты свободны.

2. Вероятность того, что в системе находится k требований при условии, когда их число больше числа обслуживающих аппаратов:

P k = α k P 0 , (n ≤ k ≤ m),

где

3. Вероятность того, что все обслуживающие аппараты свободны, определяется из условия

следовательно,

4. Среднее число требований, ожидающих начала обслуживания (средняя длина очереди):

5. Коэффициент простоя требования в ожидании обслуживания:

6. Вероятность того, что все обслуживающие аппараты заняты:

7. Среднее число требований, находящихся в обслуживающей системе (обслуживаемых и ожидающих обслуживания):

8. Коэффициент полного простоя требований на обслуживании и в ожидании обслуживания:

9. Среднее время простоя требования в очереди на обслуживание:

10. Среднее число свободных обслуживающих аппаратов:

11. Коэффициент простоя обслуживающих аппаратов:

12. Вероятность того, что число требований, ожидающих обслуживания, больше некоторого числа В (вероятность того, что в очереди на обслуживание находится более В требований):

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

Каждая система состоит из определенного числа обслуживающих единиц (приборов, аппаратов, устройств" пунктов, станций), которые называются каналами обслуживания. По числу каналов СМО подразделяют на одноканальные и многоканальные. Схема одноканальной системы массового обслуживания представлена на рис. 6.2.

Заявки в систему поступают обычно не регулярно, а случайно, образуя случайный поток заявок (требований). Само обслуживание каждого требования может занимать либо определенное время, либо, что бывает чаще, неопределенное время. Случайный характер приводит к тому, что СМО оказывается загруженной неравномерно: в какие-то периоды времени скапливается очень большое количество заявок (они либо становятся в очередь, либо покидают СМО не обслуженными), в другие же периоды СМО работает с недогрузкой или простаивает.

Рис. 6.2.

Целью исследования систем массового обслуживания является анализ качества их функционирования и выявление возможностей его улучшения. При этом понятие "качество функционирования" в каждом отдельном случае будет иметь свой конкретный смысл и выражаться различными количественными показателями. Например, такими количественными показателями, как величина очереди на обслуживание, среднее время обслуживания, ожидания обслуживания или нахождения требования в обслуживающей системе, время простоя обслуживающих аппаратов; уверенность, что все поступившие в систему требования будут обслужены.

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

Предметом теории массового обслуживания является построение математических моделей, связывающих заданные условия работы СМО (число каналов, их производительность, характер потока заявок и т.п.) с показателями эффективности СМО, описывающими ее способность справляться с потоком заявок.

Классификация систем массового обслуживания

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

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

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

СМО различаются и по числу требований, которые одновременно могут находиться в обслуживающей системе. Выделяют:

  • 1) системы с ограниченным потоком требований;
  • 2) системы с неограниченным потоком требований.

В зависимости от форм внутренней организации обслуживания в системе выделяют:

  • 1) системы с упорядоченным обслуживанием;
  • 2) системы с неупорядоченным обслуживанием.

Важным этапом исследования СМО является выбор критериев, характеризующих изучаемый процесс. Выбор зависит от типа исследуемых задач, от цели, которая преследуется решением.

Наиболее часто на практике встречаются системы, в которых поток требований близок к простейшему, а время обслуживания подчиняется показательному закону распределения. Эти системы наиболее полно разработаны в теории массового обслуживания.

В условиях предприятия типичными являются задачи с ожиданием, с конечным числом обслуживающих аппаратов, с ограниченным потоком требований и с неупорядоченным обслуживанием.

23 октября 2013 в 14:22

Squeak: Моделирование систем массового обслуживания

  • Программирование ,
  • ООП ,
  • Параллельное программирование

На Хабре крайне мало информации о таком языке программирования как Squeak . Я попытаюсь рассказать о нем в контексте моделирования систем массового обслуживания . Покажу как написать простой класс, расскажу его структуру и использую его в программе, которая будет обслуживать заявки посредством нескольких каналов.

Пару слов о Squeak

Squeak это открытая, кросс-платформенная реализация языка программирования Smalltalk-80 c динамической типизацией и сборщиком мусора. Интерфейс довольно специфический, но вполне удобный для отладки и анализа. Squeak полностью отвечает концепции ООП. Все состоит из объектов, даже конструкции if-then-else, for, while реализованы с их помощью. Весь синтаксис сводится к посылке объекту сообщения в виде:
<объект> <сообщение>
Любой метод всегда возвращает объект и ему можно направить новое сообщение.
Squeak часто используется для моделирования процессов, но может использоваться и как средство для создания мультимедийных приложений и разнообразных образовательных платформ.

Системы массового обслуживания

Системы массового обслуживания (СМО) содержат один или несколько каналов которые обрабатывают заявки, поступающие от нескольких источников. Время на обслуживание каждой заявки может быть фиксированным или произвольным, как и интервалы между их поступлением. Это может быть телефонная станция, прачечная, кассиры в магазине, машинописное бюро и пр. Выглядит это примерно так:


СМО включает несколько источников которые поступают в общую очередь и направляются на обслуживание по мере освобождения каналов обработки. В зависимости от конкретных особенностей реальных систем модель может содержать различное число источников заявок и каналов обслуживания и иметь различные ограничения на длину очереди и связанную с ней возможность потери заявок (отказов).

При моделировании СМО обычно решаются задачи оценки средней и максимальной длины очереди, частоты отказов в обслуживании, средней загрузки каналов, определение их числа. В зависимости от задачи, в модель включаются программные блоки сбора, накопления и обработки необходимых статистических данных о поведении процессов. Наиболее часто используемыми моделями потоков событий при анализе СМО являются регулярные и пуассоновские. Регулярные характеризуются одинаковым временем между наступлениями событий, а пуассоновские - случайным.

Немного математики

Для пуассоновского потока число событий X , попадающих в интервал длины τ (тау), примыкающий к точке t , распределено по закону Пуассона:
где a (t, τ) - среднее число событий, наступающих на интервале времени τ .
Среднее число событий, наступающих в единицу времени, равно λ(t) . Следовательно, среднее число событий на интервале времени τ , примыкающему к моменту времени t , будет равно:


Время T между двумя событиями при λ(t) = const = λ распределено по закону:
Плотность распределения случайной величины T имеет вид:
Для получения псевдослучайных пуассоновских последовательностей интервалов времени t i решают уравнение:
где r i - равномерно распределенное на интервале случайное число.
В нашем случае это дает выражение:


По генерации случайных чисел можно писать целые тома. Здесь же, для генерации равномерно распределенных на интервале целых чисел используем следующий алгоритм:
где R i - очередное случайное целое число;
Р - некоторое большое простое число (например 2311);
Q - целое число - верхняя граница интервала, например, 2 21 = 2097152;
rem - операция получения остатка от деления целых чисел.

Начальное значение R 0 обычно задают произвольно, например, используя показания таймера:
Time totalSeconds
Для получения равномерно распределенных на интервале чисел воспользуемся оператором языка:

Класс Rand

Для получения равномерно распределенных на интервале случайных чисел создаем класс - генератор вещественных чисел:

Float variableWordSubclass: #Rand "имя класса" instanceVariableNames: "" "переменные экземпляра" classVariableNames: "R" "переменные класса" poolDictionaries: "" "общие словари" category: "Sample" "имя категории"
Методы:

"Инициализация" init R:= Time totalSeconds.next "Следующее псевдослучайное число" next R:= (R * 2311 + 1) rem: 2097152. ^(R/2097152) asFloat
Для установки начального состояния датчика посылаем сообщение Rand init .
Для получения очередного случайного числа посылаем Rand next .

Программа обработки заявок

Итак, в качестве простенького примера сделаем следующее. Пусть нам необходимо промоделировать обслуживание регулярного потока заявок от одного источника со случайным интервалом времени между заявками. Имеется два канала различной производительности, позволяющих обслуживать заявки за 2 и 7 единиц времени соответственно. Необходимо зарегистрировать число заявок, обслуженных каждым каналом на интервале 100 единиц времени.

Код на Squeak

"Объявление временных переменных" | proc1 proc2 t1 t2 s1 s2 sysPriority queue continue r | "Начальные установки переменных" Rand init. SysTime:= 0. s1:= 0. s2:= 0. t1:= -1. t2:= -1. continue:= true. sysPriority:= Processor activeProcess priority. "Текущий приоритет" queue:= Semaphore new. "Модель очереди заявок" "Создание процесса - модели канала 1" (Process forContext: [ proc1:= Processor activeProcess. whileTrue: "Цикл обслуживания" [ queue wait. "Ждать заявку" t1:= SysTime + 2. "Следующее время активизации" s1:= s1 + 1. proc1 suspend. "Приостановить процесс в ожидании окончания обслуживания" ]. proc1:= nil. "Удалить ссылку на процесс 1" ] priority: (sysPriority + 1)) resume. "Новый приоритет больше фонового" "Создание процесса - модели канала 2" (Process forContext: [ proc2:= Processor activeProcess.. whileTrue: [ queue wait. t2:= SysTime + 7. s2:= s2 + 1. proc2 suspend. ]. proc2:= nil. ] priority: (sysPriority + 1)) resume. "Продолжение описания главного процесса и модели источника" whileTrue: [ r:= (Rand next * 10) rounded. (r = 0) ifTrue: . ((SysTime rem: r) = 0) ifTrue: . "Послать заявку" "Коммутатор процессов обслуживания" (t1 = SysTime) ifTrue: . (t2 = SysTime) ifTrue: . SysTime:= SysTime + 1. "Тикает модельное время" ]. "Показать состояние счетчика заявок" PopUpMenu inform: "proc1: ",(s1 printString),", proc2: ",(s2 printString). continue:= false.


При запуске видим, что процесс 1 успел обработать 31 заявку, а процесс 2 только 11:

Публикации по теме