При моделировании СМО алгоритм должен учитывать все рабочие режимы системы. При моделировании СМО используют 3 основных принципа:
1. принцип ∆t
2. принцип особых состояний
3. принцип последовательной проводки заявок
1. по принципу ∆t переход системы из одного состояния в другое рассматривается (анализируется) с интервалом ∆t
∆t t tmax
t1 t2 t5 tn
2. принцип особых состояний – система анализируется в момент, когда она меняет своё состояние. При этом включаются (анализируются) холостые проходы принципа ∆t
БООС-блок определения очередного события – определяет моменты времени наступления события
БАС-блок анализа состояния – определяет, в каком состоянии находится в данный момент система
БИС – блок измерения состояния – измеряет состояние СМО, переводя ее в следующее или предыдущее
3. Третий принцип наиболее экономичен. По этому принципу судьба любой заявки, поступившей в систему, прослеживается в порядке ее поступления до ее выхода из нее. Заявка проходит все этапы обработки состояний:
Постановка задачи
Имеется торговый центр, в котором имеется n продавцов. Центр обслуживает поток покупателей, приходящих с интенсивностью λ (чел./мин). Среднее время обслуживания покупателя одним продавцом составляет τ (мин). Помещение, в котором располагается торговый центр, может поместить (во время образования очереди) не более m покупателей. Покупатель, пребывающий, когда все m мест очереди заняты, покидает торговый центр, т.е. получает отказ в обслуживании.
Необходимо определить количество продавцов в торговом центре, чтобы среднее время пребывания покупателей в торговом центре не превышало заданного времени. Также необходимо определить вероятностные характеристики обслуживания в торговом центре.
|
Листинг программы
Private Sub Command1_Click()
Dim lam As Integer, Tzad As Single, m As Byte
Dim x As Single, Tobshvr As Integer
Dim Noch As Integer, Kotk As Integer, i As Integer
Dim Kprod As Integer, Tvrobs As Double
Dim Potk As Single, Pobs As Single, A As Single
Dim Tobshoj As Integer, Kmax As Integer
Dim Tvrochr, K As Integer
Dim Tnezan As Double, Tsroj As Single
Dim Kobs As Integer, Tobs As Single
Dim Tvrpost As Double, Tosv As Double
Dim Tpr As Single
lyamda = Val (Text1. Text)
myu = Val (Text2. Text)
m = Val (Text3. Text)
Tzad = Val (Text4. Text)
Kmax = Val (Text5. Text)
x = 500
K = 0
Kobs = 0
Kotk = 0
Tsys = 0
Noch = 0
Toj = 0
Tosv = 0
Tnezan = 0
For i = 1 To Kmax
x = Rnd(x)
tau = -1 / lyamda * Log (x / 100)
Tobs = -1 / 0.3 * Log (x / 100)
tpost = tpost + tau
K = K + 1
If K > Kmax Then
Exit For
Else
Tosv = tau + Tobs
If tpost >= Tosv Then
If Noch = 0 Then
Kobs = Kobs + 1
Tnezan = Tnezan + tau
Tobs = -1 / 0.3 * Log (x / 100)
Tosv = tau + Tobs
Tpr = Tpr + Tobs
Else
ReDim Boj(i)
ReDim toch(i)
toch (i – 1) = toch(i)
Boj(i) = Boj(i) + Tosv
If Boj(i) > Tzad Then
n = n + 1
End If
Noch = Noch – 1
Toj = Toj + Boj(i)
x = Rnd(x)
Tobs = -1 / 0.1 * Log (x / 100)
Tpr = Tpr + Boj(i)
Tosv = Tosv + Tobs
Kobs = Kobs + 1
End If
Else
If Noch > m Then
Kotk = Kotk + 1
Else
Noch = Noch + 1
ReDim toch(Noch)
toch(Noch) = tpost
End If
End If
End If
Next
Potk = Kotk / Kmax
Pobs = 1 – Potk
A = lyamda * Pobs
tauoj = Toj / Kmax
Kpr = Tnezan / Tosv
List1. AddItem «Вероятност отказа системы (Ротк)=» & Potk
List1. AddItem «Вероятность обслуживания (Робс)=» & Pobs
List1. AddItem «Среднее время ожидания в очереди (Тож)=» & tauoj
List1. AddItem «Общее время (Тобщ)=» & tpost
List1. AddItem «Коэфицент простоя системы (Кпр)=» & Kpr
List1. AddItem «Абсолютная пропускная способность (A)=» & A
List1. AddItem «Количество продовцов (n)=» & n
End Sub
Private Sub Command2_Click()
List1. Clear
End Sub