1. Пользовательская функция ЗАМКНУТЫЕ
Формулы финальных вероятностей и характеристик эффективности замкнутой СМО приведены в [1], сведения по VBA Excel изложены в [2, 3]. Программный код пользовательской функции ЗАМКНУТЫЕ, выполняющей вычисления по формулам для замкнутых СМО, приведен в листинге 1.
Листинг 1. Код функции ЗАМКНУТЫЕ и ее описания
Function ЗАМКНУТЫЕ(Инт_заяв, Инт_обсл, _
Каналов, Источников, P_F_T As String) As Variant
Dim n As Integer, m As Integer, p() As Single, _
L As Single, k As Single, s As Single, d As Single
w = Инт_заяв / Инт_обсл :m = Источников:n = Каналов
ReDim p(0 To m)
Dim Z(1 To 4) As Single
Dim x(1 To 2) As Single
h = Application.WorksheetFunction.Fact(m)
s = Application.WorksheetFunction.Fact(n)
p(0) = 1:L = 1
For i = 1 To m
If i < n + 1 Then
L = (m - i + 1) * w * L / i:p(0) = p(0) + L
Else
k = m – i:k = Application.WorksheetFunction.Fact(k)
p(0) = p(0) + h * w ^ i / n ^ (i - n) / k / s
End If
Next
p(0) = 1 / p(0)
For i = 1 To n
k = m – i:r = Application.WorksheetFunction.Fact(i)
k = Application.WorksheetFunction.Fact(k)
p(i) = h * w ^ i * p(0) / k / r
Next
For i = n + 1 To m
k = m - i
k = Application.WorksheetFunction.Fact(k)
p(i) = h * w ^ i * p(0) / k / n ^ (i - n) / s
Next
k = 0: s = p(0)
For i = 1 To n
If i < n Then
k = k + i * p(i):s = s + p(i)
Else
k = k + i * (1 - s)
End If
Next
Z(1) = k:Z(2) = k * Инт_обсл:d = 0
For i = 0 To m
d = d + i * p(i)
Next
Z(3) = d:L = 0
For i = n + 1 To m
L = L + i * p(i)
Next
Z(4) = L:x(1) = Z(3) / Z(2):x(2) = Z(4) / Z(2)
Select Case P_F_T
Case "P":ЗАМКНУТЫЕ = p
Case "F":ЗАМКНУТЫЕ = Z
Case "T":ЗАМКНУТЫЕ = x
End Select
End Function
Sub InstallFunc1()
Application.MacroOptions Macro:="ЗАМКНУТЫЕ",_ Description:= "При Р возвращает финальные " & _ "вероятности многоканальной замкнутой СМО, " & _
"при F - среднее число занятых каналов, " & _
"абсолютную пропускную способность, среднее " & _
"число заявок в системе и в очереди, при Т - " & _
"ср. время заявки в системе и очереди"
End Sub
2. Применение функции ЗАМКНУТЫЕ
Пример 1. Бригада из трех рабочих обслуживает 6 станков, каждый из которых отказывает с интенсивностью λ = 1 отказ в час, интенсивность ремонта μ = 2 станка в час. Найти: 1. Финальные вероятности; 2. Среднее число занятых рабочих; 3. Абсолютную пропускную способность; 4. Среднее число заявок на ремонт; 5. Среднее число заявок в очереди; 6. Среднее время пребывания заявки в системе; 7. Среднее время пребывания заявки в очереди.
Выделяется диапазон 1х7, например, А1:G1, вызывается функция ЗАМКНУТЫЕ и вводятся данные (рис. 1).
Рис. 1. 1-е применение функции ЗАМКНУТЫЕ
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения финальных вероятностей (рис. 2).
Рис. 2. Финальные вероятности
Выполняется проверка (рис. 3).
Рис. 3. Проверка
Выделяется диапазон 1х4, например, А3:D3, вызывается функция ЗАМКНУТЫЕ, вводятся числовые данные и “F” (рис. 4).
Рис. 4. 2-е применение функции ЗАМКНУТЫЕ
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения, требуемые в пунктах 2 – 5 условия примера 1 (рис. 5).
Рис. 5. Возвращаемые результаты пунктов 2–5
Выделяется новый диапазон 1х2, например, А5:В5, вызывается функция ЗАМКНУТЫЕ, вводятся числовые данные и “T” (рис. 6).
Рис. 6. 3-е применение функции ЗАМКНУТЫЕ
Команда Ctrl+Shift+Галочка (Ввод) возвращает в выделенном диапазоне значения, требуемые в пунктах 6, 7 (рис. 7).
Рис. 7. Возвращаемые результаты в пунктах 6–7
Пример 2. По данным примера 1 найти интенсивность обслуживания, при которой вероятность простоя равна 0,1.
В решении примера 1 (рис. 2) под μ оставляется, например, ячейка А2 и вводится 2. В данных рисунка 1 во второе поле вводится ссылка на ячейку А2. Вызывается инструмент «Подбор параметра» и ставится задача (рис. 8).
Рис. 8. Постановка задачи
Найденное значение показано в ячейке А2 рисунка 9.
Рис. 9. Результаты подбора параметра