Главная
АИ #16 (43)
Статьи журнала АИ #16 (43)
Расчеты для открытых систем массового обслуживания функциями VBA Excel

Расчеты для открытых систем массового обслуживания функциями 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 с.

Поделиться

1940

Сдвижков О. А. Расчеты для открытых систем массового обслуживания функциями VBA Excel // Актуальные исследования. 2021. №16 (43). С. 15-20. URL: https://apni.ru/article/2246-rascheti-dlya-otkritikh-sistem-massovogo-obsl

Похожие статьи

Другие статьи из раздела «Информационные технологии, телекоммуникации»

Все статьи выпуска
Актуальные исследования

#27 (209)

Прием материалов

29 июня - 5 июля

осталось 3 дня

Размещение PDF-версии журнала

10 июля

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

22 июля