Расчеты для открытых систем массового обслуживания функциями VBA Excel
научный журнал «Актуальные исследования» #16 (43), апрель '21

Расчеты для открытых систем массового обслуживания функциями VBA Excel

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

Аннотация статьи
вероятность
интенсивность
диалоговое окно
задача Эрланга
очередь
листинг
Ключевые слова

1. Пользовательская функция СХЕМАГР

Формулы финальных вероятностей P(S = Si) = pii = 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

Текст статьи
  1. Вентцель Е. С. Прикладные задачи теории вероятностей / Е. С. Вентцель, Л. А. Овчаров.  – М.: Радио и связь, 1983. – 416 с.
  2. Гарнаев А. Ю. Самоучитель VBA – 2-е изд., перераб. и доп. / А. Ю. Гарнаев. – СПб.: БХВ-Петербург, 2004. – 560 с.
  3. Сдвижков О. А. Excel-VBA. Словарь-справочник пользователя / О. А. Сдвижков. – М.: Эксмо, 2008. – 224 с.
Список литературы
Ведется прием статей
Прием материалов
c 15 мая по 21 мая
Осталось 4 дня до окончания
Публикация электронной версии статьи происходит сразу после оплаты
Справка о публикации
сразу после оплаты
Размещение электронной версии журнала
25 мая
Загрузка в eLibrary
25 мая
Рассылка печатных экземпляров
02 июня