Моделирование торгового центра (работа 1)
Лабораторная работа № 3
Моделирование торгового центра
Цель работы
Целью работы является:
Освоение основных элементов систем массового обслуживания
Изучение основных принципов моделирования систем массового обслуживания на ПЭВМ
Получение практических навыков моделирования на примере исследования торгового центра
II.Теоретические сведения
2.1 Основные элементы систем массового обслуживания
Системой массового обслуживания (СМО) называется система, на которую в случайные моменты времени поступают заявки, нуждающиеся в том или ином виде обслуживания в течение некоторого случайного отрезка времени. Из- за случайного характера потока заявок в системе, в какие-то моменты времени могут возникнуть очереди, а в другие моменты система может работать с недогрузкой или вообще простаивать. Поэтому на практике возникают насущные задачи количественной оценки эффективности работы таких систем. СМО должна обеспечить минимизацию суммарных затрат, связанных с ожиданием и потерями от простоя средств обслуживания.
Основными элементами систем массового обслуживания являются:
Входной поток
Очередь
Прибор или канал обслуживания
Выходной поток
Общая функциональная схема системы имеет вид (Рис 1)
Входной поток
Выходной поток
Прибор обслуживания
Очередь
М
Рис 1. Функциональная схема СМО
Где - интенсивность потока заявок (среднее количество заявок, поступивших в единицу времени)
М – интенсивность обслуживания заявок (среднее количество заявок, обслуживаемых прибором в единицу времени)
Входной поток заявок представляет собой последовательность однородных событий следующих одно за другим в случайные моменты времени t>0>< t>1>, < t>2>….<t>n>
t
t>0 >t>1> t>2>……...t>i>>-1 >t>i>> …………..>t>n>
Рис.2 Входной поток заявок
Где τ>i> = t>i> -t>i>>-1 >- интервал между двумя соседними моментами поступления заявок
Если τ>i>> >= const , то токай поток называется регулярным. Если τ>i>> >меняется случайным образом , то такой поток называется случайным .
Случайный поток называется простейшим или стационарным Пуассоновским потоком, если он обладает свойствами:
Стационарности
Безпоследействия
Ординарности
Свойство стационарности означает, что все вероятностные характеристики потока не зависят от времени. Свойство безпоследействия означает, что все события являются независимыми друг от друга, т.е. появление каждого события не зависит от предистории. Свойство ординарности означает, что все события наступают (заявки приходят) поодиночке. Поэтому интервалы времени поступления заявок в Пуассоновском потоке распределены по экспоненциальному закону с плотностью- вероятностью
f(τ)=λe-λτ, (1)
где λ – интенсивность потока:
τ>0 -интервал времени поступления заявок.
Для моделирования интервала поступления заявок используется формула:
τ>i>=-ln(x>i>) (i=1,n) (2)
где x>i> -случайные числа равномерно-распределенные в интервале [0,1].
Тогда поступление заявок определяется по формуле
Для получения случайных чисел х необходимо обратиться к стандартной функции или генератору случайных чисел, равномерно-распределенных в интервале RND(x).
Очередь – это линейная цепочка выстроившихся в ряд один за другим заявок, нуждающихся в том или ином виде обслуживания. Законы, по которым регламентируется поведение очереди образуют дисциплину обслуживания в очереди. Разделяют дисциплину заполнения очереди и дисциплину выбора заявок из очереди.
Дисциплина заполнения очереди включает 4 типа:
Естественную форму заполнения очереди, когда пришедшая заявка встает в очередь последней одна за другой
Кольцевую форму заполнения очереди, когда заявка становится первой в очередь, если вся очередь полностью заполнена
Поисковую форму заполнения очереди, когда заявка встает в очередь на свободное место
Приоритетную форму заполнения очереди, когда заявки с высшим приоритетом встают в очередь первыми по отношению к заявкам с низшим приоритетом.
Дисциплина выбора заявок из очереди предусматривает 3 принципа:
«первым пришел – первым обслужен»
«последним пришел – последним обслужен»
по приоритету, т.е. заявки с высшим приоритетом обслуживаются первыми.
При этом бывают абсолютные приоритеты и относительные приоритеты. Заявки с абсолютным приоритетом полностью выбивают заявки с низшим приоритетом, которые в последствии покидают систему и не обслуживаются. Заявки с относительными приоритетами выбивают заявки с низшим приоритетом, которые в последствии либо дообслуживаются, либо обслуживаются заново.
Прибор или канал обслуживания – это устройство, в котором проводится непосредственное обслуживание заявки. В зависимости от количества приборов обслуживания системы массового обслуживания разделяются на одноканальные, однофазные, многоканальные, многофазные и смешанные или комбинированные. В многоканальных системах несколько приборов обслуживания соединены параллельно, а в многофазных – последовательно.
Основной характеристикой прибора обслуживания является продолжительность обслуживания, т.е. среднее время обслуживания одной заявки τ>обс>, которая равна
τ>обс >= (3)
где М – интенсивность обслуживания.
Выходной поток заявок характеризуется потоком обслуженных и не обслуженных заявок. Но данные характеристики не позволяют судить о качестве функционирования СМО. Поэтому в качестве входного потока используются различные вероятностные характеристики качества обслуживания:
А – абсолютная пропускная способность системы , т.е. среднее количество заявок обслуженных в единицу времени
q – относительная пропускная способность , т.е. средняя доля обслуженных заявок
Ротк – вероятность отказа системы
Робс – вероятность обслуживания
- среднее количество заявок в очереди
>ож> –среднее время ожидания в очереди
>сист >-среднее время пребывания заявок в системе
-среднее количество занятых каналов обслуживания
К>пр>-коэфицент простоя системы
Методы моделирования СМО
Для моделирования СМО на ЭВМ ее процесс функционирования преобразуется в моделирующий алгоритм, с помощью которого имитируются все элементарные явления составляющие данный процесс. При этом в алгоритме сохраняется логическая структура, последовательность протекания во времени, характер и состав информации о состояниях процесса.
Моделирующий алгоритм представляется в виде структурной схемы (блок- схемы),содержащей последовательность блоков, каждый из которых отображает одну или группу элементарных операций. При моделировании СМО на ЭВМ используются три основных метода:
Принцип ∆t
Принцип особых состояний
Принцип последовательной проводки заявок
Согласно принципу ∆t процесс перехода системы из одного состояния в другое рассматривается во времени на каждом шаге ∆t, начиная с момента времени t>0>. Конкретное состояние системы S>i>> >(t)выбирается по жребию. Так, если система имеет состояния: S>1>- поступление заявки, S>2>-освобождение прибора и т.д. то на оси времени (Рис.3)через каждые интервалы ∆t по жребию определяется наступило это состояние или нет. Если да, система переводится в это состояние, а если нет, то делается новый шаг ∆t и так далее.
∆t ∆t
t
t>0> t>1> t>2> t>3> t>4> t>5 >………………... t>n>
Рис. 3 Переход системы из одного состояния в другое по принципу ∆t
На рисунке показано, что в момент времени t>2> пришла заявка. Поэтому она встает на обслуживание, а в момент t>4> прибор освобождается.
К недостаткам этого метода относятся:
метод имеет множество “холостых ходов”, когда система не изменяет своего состояния
метод критичен к выбору интервала ∆t
метод наименее экономичен с точки зрения времени реализации его на ЭВМ
Принцип особых состояний заключается в том, что в отличии от принципа ∆t в нем фиксируются только моменты переходов системы из одного состояния в другое. Выделяют моменты наступления событий и особые состояния. Начиная с момента времени t>0> на оси системного времени определяют первый момент (приход заявки), по нему в зависимости от состояния системы следует перевести ее в новое состояние. Затем выбирается второй момент (освобождение заявки), по нему опять система переводится в новое состояние и т.д.. В этом случае переход системы производится от одного события к другому. Общая схема моделирующего алгоритма по особому состоянию представляется в виде (Рис. 4).
Б.О.О.С.
Б.А.С.1
Б.А.С.N
Б.А.С.2
…….
БМСN.1
БМС2,К
БМС2,1
БМС1,Р
БМС1,1
БМСN.M
.. .. .. ..
Рис.4 Блок- схема моделирующего алгоритма по принципу особого состояния
Б.О.О.С- блок определения очередного события
Б.А.С. – блок анализа состояния
БМС –блок модификации состояния
БООС определяет моменты времени наступления событий на оси системного времени, фиксирует время события, которое происходит за минимальное время. Затем БАС анализирует состояние или ситуацию в системе (например, прибор занят, свободен или ремонтируется). В зависимости от состояния системы БМС изменяет ее состояние (например, отметить, что он освободился и т.п.) После изменения состояния переходят к новому событию на БООС. В этом же блоке также отмечается начало и окончание моделирования.
При использовании данного метода удобно выделить события и состояния, которые можно представить в виде матрицыа>ij>> >:
Очередное событие Состояние прибора
Свободен Занят Ремонт
Начало моделирования а11 а12 а13
Поступление заявок а21 а22 а23
Начало ремонта а31 а32 а33
Освобождение прибора после ремонта
а41
а42
а43
Освобождение прибора после обслуживания
а51
а52
а53
Окончание моделирования а62 а62 а63
Тогда в зависимости от события и состояния в СМО производится соответствующее изменение состояния.
Принцип последовательной проводки заявок является наиболее экономичным из всех принципов. Он заключается в том, что судьба каждой заявки прослеживается в порядке ее поступления в систему до ее выхода из нее. Заявка проходит все этапы обработки: она может поступить в очередь или на обслуживание; покинуть прибор полностью или частично быть обслуженной; перейти вновь в очередь или к другому прибору обслуживания и т.д. В соответствии с данным принципом моделирующий алгоритм должен отказать работу всех элементов СМО. Дополняя его блоками управления и анализа состояний, получим следующую блок- схему моделирующего алгоритма (Рис.5)
Блок управления 2 вариантами моделирования
Блок формирования 3 входного потока заявок
Блок анализа состояния 4 СМО
Блок формирования 5 очереди
Блок выбора заявок из 6 очереди
Блок формирования 7 обслуживания заявок
Блок формирования 8 отказов в обслуживании
Блок определения 9 характеристики СМО
10
Рисунок 5. Обобщенная блок- схема
моделирующего алгоритма СМО
III.Задание на выполнение работы
Имеется торговый центр, в котором работает n продавцов .Центр обслуживает поток покупателей , приходящих с интенсивностью λ (чел/мин) среднее время обслуживания одного покупателя каждым продавцом составляет >обс>(мин). Помещение, в котором располагается торговый центр, может поместить (во время образования очередей) не более m покупателей. Покупатель, прибывающий, когда все m мест в очереди заняты, покидает торговый центр, т.е. не обслуживается и получает отказ.
Необходимо определить оптимальное количество продавцов в торговом центре, чтобы среднее время пребывания покупателей в торговом центре не превышало заданного времени t>зад.> (мин), т.е. чтобы выполнялось условие t>сист> t>зад, >а также вероятностные характеристики обслуживания покупателей в данном центре при найденном оптимальном количестве продавцов:
Вероятность отказа;
Относительную и абсолютную пропускную способности;
Среднее число покупателей стоящих в очереди;
среднее число занятых продавцов;
Коэффициент простоя занятых продавцов;
Среднее время пребывания покупателей в торговом центре;
Исходные данные к заданию приведены в Таблице 1. Варианты задания выбираются в соответствии с порядковым номером студента по групповому журналу.
IV Порядок выполнения работы
Для выполнения задания необходимо:
1. Представить торговый центр в виде системы массового обслуживания. Для чего следует произвести постановку задачи, проанализировать условия задачи, определить параметры (элементы) СМО и сформулировать цель решения задачи.
2. описать основные принципы моделирования СМО на ЭВМ
3. Разработать моделирующий алгоритм и составить блок - схему имитации торгового центра на ПЭВМ.
4. Составить программу моделирования торгового центра на одном из языков программирования.
5. Получить результаты моделирования на ПЭВМ и дать их физическую интерпретацию
6. Привести листинг программы с полученными результатами моделирования.
7. Оформить отчет.
К=0; К>обс>=0,
2 К>отн >=0; T>c> =0,
N>оч>= 0; T>ож> =0,
T>незан> = 0
Формирование
3 Х=RND(x)
4 τ =- ln(x)
5 Т >пост=> τ >пост>
6 К= К+1
Да
Нет
10 N>оч>= N>оч>+1
11 Т>оч>(N>оч>)=Т>пост>
12 Переход к 3
13 К>отн> = К>отн> +1
14 Переход к 3
16 К >обс> = К >обс> +1
Т>незан> = Т >незан> + Т>пост>=
17 =Т>осв>
18 Формирование
Х = RND(x)
19 Тобс= -ln(x)
20 Т >осв >= Т >пост> + Т>обс>
21 Т>с> = Т>с> + Т >обс>
23 В>от> = Т>осв >–Т>оч> (1)
25 Т>оч>(i) =Т>оч>(i+1)
26 N>оч>= N>оч>-1
27 Т>ож>=Т>ож>+В>ож>
28 Формирование
Х = RND(x)
Ротк=
34 >ож>=
>с>=
К>пр>=
29 Тобс= -ln(x)
30 Т>с> = Т>с> + В>ож>
31 Т >осв >= Т >пост> + Т>обс>
32 К >обс> = К >обс> +1
33 Переход к 8
Листинг программы
Private sub> Command1_Click()
Dim l As Integer, m As Integer, tzad As Integer, Kmax As Integer
Dim Tobs As Variant
Dim Tosv() As Double
Dim Toch() As Double
Dim Potk As Double
Dim q As Double
SumL = 0
n = 1
5: SumP = SumP + Pmin
n = n + 1
x = 0.5
k = 0
Kotk = 0
Noch = 0
Toj = 0
Tsis = 0
Kobs = 0
Tnezan = 0
Tpost = 0
l = Val(Text1.Text)
Tobss = Val(Text2.Text)
m = Val(Text3.Text)
tzad = Val(Text4.Text)
Kmax = Val(Text5.Text)
ReDim Toch(m) As Double
ReDim Tosv(n) As Double
For i = 1 To n
Tosv(i) = 0
Next i
10: x = Rnd(x)
T = -1 / l * Log(x)
Tpost = Tpost + T
k = k + 1
If k > Kmax Then
GoTo 100
End If
30: Pmin = 1
Tmin = Tosv(1)
For i = 1 To n
If Tosv(i) < Tmin Then
Pmin = i
Tmin = Tosv(i)
End If
Next i
If Tpost < Tosv(Pmin) Then
GoTo 20
Else
GoTo 40
End If
20: If Noch = m Then
Kotk = Kotk + 1
GoTo 10
Else
Noch = Noch + 1
SumL = SumL + Noch
Toch(Noch) = Tpost
GoTo 10
End If
40: If Noch = 0 Then
Kobs = Kobs + 1
Tnezan = Tpost - Tosv(Pmin)
x = Rnd(x)
Tobs = -1 / (1 / Tobss) * Log(x)
Tosv(Pmin) = Tpost + Tobs
Tsis = Tsis + Tobs
GoTo 10
Else
Voj = Tosv(Pmin) - Toch(1)
For i = 1 To Noch - 1
Toch(i) = Toch(i + 1)
Next i
Noch = Noch - 1
Toj = Toj + Voj
x = Rnd(x)
Tobs = -1 / (1 / Tobss) * Log(x)
Tsis = Tsis + Tobs + Voj
If Tsis > tzad Then GoTo 5
Tosv(Pmin) = Tosv(Pmin) + Tobs
Kobs = Kobs + 1
oTo 30
End If
100: Potk = Kotk / Kmax
q = 1 - Potk
A = q * l
Ls = SumL / Kmax
Ps = SumP / n
Kpr = Tnezan / Tsis
Text6.Text = Str(Potk)
Text7.Text = Str(q)
Text8.Text = Str(A)
Text9.Text = Str(Ls)
Text10.Text = Str(Ps)
Text11.Text = Str(Kpr)
Text12.Text = Str(Tsis)
Text13.Text = Str(n)
End sub>