Definição dos Parâmetros
m <- 8
lambda1 <- 2
lambda2 <- 3
mu <- 1/4
A1 <- lambda1 / mu
A2 <- lambda2 / mu
Descobrir estados válidos (ocupados)
peso <- function(n1, n2) {
(A1^n1 / factorial(n1)) * (A2^n2 / factorial(n2))
}
estados <- data.frame()
for (n1 in 0:(m %/% 2)) {
for (n2 in 0:m) {
canais_ocupados <- 2 * n1 + n2
if (canais_ocupados <= m) {
w <- peso(n1, n2)
estados <- rbind(estados, data.frame(n1, n2, canais_ocupados, peso = w))
}
}
}
Z <- sum(estados$peso)
estados$pi <- estados$peso / Z
Calcular Probabilidade de Bloqueio
B2 <- sum(estados$pi[estados$canais_ocupados == m])
B1 <- sum(estados$pi[estados$canais_ocupados %in% c(m, m - 1)])
cat("Probabilidade de bloqueio para chamadas intra (B1):", round(B1, 4), "\n")
## Probabilidade de bloqueio para chamadas intra (B1): 0.8472
cat("Probabilidade de bloqueio para chamadas extra (B2):", round(B2, 4), "\n")
## Probabilidade de bloqueio para chamadas extra (B2): 0.5899
print(estados[order(estados$canais_ocupados, estados$n1), ])
## n1 n2 canais_ocupados peso pi
## 1 0 0 0 1.00000 7.581391e-06
## 2 0 1 1 12.00000 9.097669e-05
## 3 0 2 2 72.00000 5.458602e-04
## 10 1 0 2 8.00000 6.065113e-05
## 4 0 3 3 288.00000 2.183441e-03
## 11 1 1 3 96.00000 7.278135e-04
## 5 0 4 4 864.00000 6.550322e-03
## 12 1 2 4 576.00000 4.366881e-03
## 17 2 0 4 32.00000 2.426045e-04
## 6 0 5 5 2073.60000 1.572077e-02
## 13 1 3 5 2304.00000 1.746753e-02
## 18 2 1 5 384.00000 2.911254e-03
## 7 0 6 6 4147.20000 3.144155e-02
## 14 1 4 6 6912.00000 5.240258e-02
## 19 2 2 6 2304.00000 1.746753e-02
## 22 3 0 6 85.33333 6.469454e-04
## 8 0 7 7 7109.48571 5.389979e-02
## 15 1 5 7 16588.80000 1.257662e-01
## 20 2 3 7 9216.00000 6.987010e-02
## 23 3 1 7 1024.00000 7.763344e-03
## 9 0 8 8 10664.22857 8.084969e-02
## 16 1 6 8 33177.60000 2.515324e-01
## 21 2 4 8 27648.00000 2.096103e-01
## 24 3 2 8 6144.00000 4.658007e-02
## 25 4 0 8 170.66667 1.293891e-03