Автор(-ы):
Сдвижков Олег Александрович
Секция
Информационные технологии, телекоммуникации
Ключевые слова
Аннотация статьи
Приведены программные коды трех пользовательских функций VBA Excel, позволяющих находить на компьютере в режиме онлайн значения параметров эффективности открытых систем массового обслуживания. Все пользовательские функции имеют описания, поясняющие их назначения. Применения пользовательских функций показаны на конкретных примерах.
Текст статьи
1. Пользовательская функция СХЕМАГР
Формулы финальных вероятностей P(S = Si) = pi, i = 0, 1, … , n, схемы гибели и размножения приведены в [1], сведения по VBA Excel изложены в [2, 3]. Программный код пользовательской функции СХЕМАГР, возвращающей финальные вероятности, приведен в листинге 1.1.
Листинг 1.1. Код функции СХЕМАГР и ее описания
Function СХЕМАГР(Загрузки As Variant) As Variant
n = UBound(Загрузки)
ReDim L(0 To n)
ReDim p(0 To n)
p(0) = 1:L(0) = 1
For i = 1 To n
L(i) = L(i - 1) * Загрузки(i):p(0) = p(0) + L(i)
Next
p(0) = 1 / p(0)
For i = 1 To n
p(i) = L(i) * p(0)
Next
СХЕМАГР = p
End Function
Sub InstallFunc1()
Application.MacroOptions Macro:="СХЕМАГР", Description:=
"Возвращает финальные вероятности схемы гибели и " & _
"размножения по заданным загрузкам состояний, " & _
"начиная с состояния 0"
End Sub
Пример 1.1. В схеме гибели и размножения выполняются соотношения: λ0=1, λ1=2, λ2=3, μ1=0,5, μ2=1,5, μ3=2,5. Найти финальные вероятности.
Выделяется диапазон А1:D1, вызывается пользовательская функция СХЕМАГР и вводятся данные (рис. 1.1).
Рис. 1.1. Применение функции СХЕМАГР в примере 1.1
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения финальных вероятностей (рис. 1.2).
Рис. 1.2. Финальные вероятности в примере 1.1
2. Пользовательская функция ЭРЛАНГ
Финальные вероятности n-канальной СМО с отказами находятся по формулам Эрланга [1, с. 351]. Характеристики эффективности системы:
Рпростой = р0, Ротк = рn, Q = 1 – рn, А= λ(1 – рn), k=ρ(1-pn),
k – среднее число занятых каналов. Код пользовательской функции ЭРЛАНГ, возвращающей финальные вероятности n-канальной СМО с отказами и значения параметров Q, А, k, приведен в листинге 2.1.
Листинг 2.1. Код функции ЭРЛАНГ и ее описания
Function ЭРЛАНГ(Инт_заяв, Инт_обсл, Каналов, _
P_F As String) As Variant
n = Каналов
ReDim L(0 To n)
ReDim p(0 To n)
Dim c(1 To 3)
p(0) = 1:L(0) = 1
For i = 1 To n
L(i) = L(i - 1) * Инт_заяв / Инт_обсл / i
p(0) = p(0) + L(i)
Next
p(0) = 1 / p(0)
For i = 1 To n
p(i) = L(i) * p(0)
Next
c(1) =1 - p(n):c(2) = Инт_заяв * c(1)
c(3) = Инт_заяв / Инт_обсл * c(1)
Select Case P_F
Case “P”
ЭРЛАНГ = p
Case “F”
ЭРЛАНГ = c
End Select
End Function
Sub InstallFunc2()
Application.MacroOptions Macro:="ЭРЛАНГ", Description:=
"При Р возвращает финальные вероятности, при F – " & _
"значения Q, A и среднее число занятых каналов " & _
"СМО с отказами"
End Sub
Пример 2.1. В 2-канальной СМО с отказами λ=8, μ=6.
Найти: 1. Финальные вероятности; 2. Относительную пропускную способность; 3. Абсолютную пропускную способность; 4. Среднее число занятых каналов.
Выделяется диапазон А1:С1, вызывается пользовательская функция ЭРЛАНГ, вводятся числовые данные и “P” (рис. 2.1).
Рис. 2.1. 1-е применение функции ЭРГАНГ в примере 2.1
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения финальных вероятностей (рис. 2.2).
Рис. 2.2. Финальные вероятности в примере 2.1
Выделяется диапазон А3:С3, вызывается пользовательская функция ЭРЛАНГ, вводятся числовые данные и “F” (рис. 2.3).
Рис. 2.3. 2-е применение функции ЭРГАНГ в примере 2.1
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения пунктов 2-4 (рис. 2.4).
Рис. 2.4. Значения пунктов 2–4 примера 2.1
3. Пользовательская функция ОЧЕРЕДЬ
Код пользовательской функции ОЧЕРЕДЬ, возвращающей вероятность простоя n-канальной СМО с очередью, вероятность отказа, среднее число заявок в очереди, среднее число заявок в системе, среднее время ожидания заявки в очереди, среднее время пребывания заявки в системе, приведен в листинге 3.1.
Листинг 3.1. Код функции ОЧЕРЕДЬ и ее описания
Function ОЧЕРЕДЬ(Инт_заяв, Инт_обсл, _
Каналов, Условия_0_m) As Variant
Dim c(0 To 5) As Single
Dim w As Single, n As Integer, m As Integer, h As Integer
Dim x As Single, y As Single, S() As Single
w = Инт_заяв / Инт_обсл
n = Каналов:m = Условия_0_m:ReDim S(0 To n + 1)
h = Application.WorksheetFunction.Fact(n)
x = 1:S(0) = 1
For i = 1 To n + 1
If i < n + 1 Then
S(i) = S(i - 1) * w / i:x = x + S(i)
Else
S(i) = S(i - 1) * w / n / (1 - w / n)
y = x + S(i) * (1 - (w / n) ^ m):x = x + S(i)
End If
Next
x = 1 / x:y = 1 / y
If Условия_0_m = 0 Then
c(0) = x:c(1) = 0
c(2) = w ^ (n + 1) * x / h / n / (1 - w / n) ^ 2
c(3) = w ^ (n + 1) * x / h / n / (1 - w / n) ^ 2 + w
Else
c(0) = y
c(1) = w ^ (n + m) * y / h / n ^ m
c(2) = y * w ^ n * (w / n - (m + 1) * (w / n) ^ _
(m + 1) + m * (w / n) ^ (m + 2)) / h / (1 - w / n) ^ 2
c(3) = y * w ^ n * (w / n - (m + 1) * (w / n) ^ _
(m + 1) + m * (w / n) ^ (m + 2)) / h / + _
(1 - w / n) ^ 2 + w * (1 - c(1))
End If
c(4) = c(2) / Инт_заяв
c(5) = c(3) / Инт_заяв
ОЧЕРЕДЬ = c
End Function
Sub InstallFunc3()
Application.MacroOptions Macro:="ОЧЕРЕДЬ", Description:=
"Возвращает вероятность простоя n-канальной СМО " & _
"с очередью, вероятность отказа, средние " & _
"значения заявок в очереди, заявок в системе, " & _
"время в очереди, время в системе"
End Sub
Параметр Условие_0_m принимает значение 0, если очередь неограниченная, иначе значение параметра равно числу мест в очереди.
Пример 3.1. В 1-канальной СМО с неограниченной очередью λ=2, μ=3. Найти: 1. Вероятность простоя; 2. Вероятность отказа; 3. Среднее число заявок в очереди; 4. Среднее число заявок в системе; 5. Среднее время ожидания заявки в очереди; 6. Среднее время пребывания заявки в системе.
Выделяется диапазон 1х6, например, диапазон А1:F1, вызывается функция ОЧЕРЕДЬ и вводятся данные (рис. 3.1).
Рис. 3.1. Применение функции ОЧЕРЕДЬ в примере 3.1
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения требуемых параметров (рис. 3.2).
Рис. 3.2. Полученные результаты в примере 3.1
Пример 3.2. Решить задачу примера 3.1, если число каналов обслуживания равно 2, а число мест в очереди равно 3.
Выделяется диапазон А1:F1, вызывается функция ОЧЕРЕДЬ и вводятся данные (рис. 3.3).
Рис. 3.3. Применение функции ОЧЕРЕДЬ в примере 3.2
Возвращаемые результаты показаны на рисунке 3.4.
Рис. 3.4. Полученные результаты в примере 3.2
Список литературы
Поделиться
Сдвижков О. А. Расчеты для открытых систем массового обслуживания функциями VBA Excel // Актуальные исследования. 2021. №16 (43). С. 15-20. URL: https://apni.ru/article/2246-rascheti-dlya-otkritikh-sistem-massovogo-obsl