Nama: Zahrina Putri Nur Amalia
NRP: 5003221162
Mata Kuliah: Proses Stokastik A
library(expm)
library(markovchain)
library(DiagrammeR)
#Parameter dasar
lambda <- 4 # arrival rate (mobil/jam)
mu <- 2 # service rate (mobil/jam)
#Jawaban bagian A
#Diagram transisi antar state
grViz("
digraph CTMC_CuciMobil {
rankdir = LR;
node [shape = circle, fontsize = 12, fixedsize = true, width = 1.2];
0 [label = '0\\nKosong'];
1 [label = '1\\nCuci'];
2 [label = '2\\nCuci+1'];
3 [label = '3\\nCuci+2\\n(Penuh)'];
0 -> 1 [label = 'λ = 4'];
1 -> 2 [label = 'λ = 4'];
2 -> 3 [label = 'λ = 4'];
1 -> 0 [label = 'μ = 2'];
2 -> 1 [label = 'μ = 2'];
3 -> 2 [label = 'μ = 2'];
}
")
##Jawaban bagian B
#Jumlah maksimum state: 0, 1, 2, 3
K <- 3
#Inisialisasi matriks generator Q
Q <- matrix(0, nrow = K + 1, ncol = K + 1)
#Nilai transisi antar state
for (i in 0:K) {
if (i < K) {
Q[i + 1, i + 2] <- lambda #masuk
}
if (i > 0) {
Q[i + 1, i] <- mu #keluar
}
}
#Nilai diagonal
for (i in 0:K) {
Q[i + 1, i + 1] <- -sum(Q[i + 1, ])
}
#Menambahkan nama baris dan kolom agar jelas
rownames(Q) <- colnames(Q) <- as.character(0:K)
cat("Generator Matrix Q:")
## Generator Matrix Q:
print(Q)
## 0 1 2 3
## 0 -4 4 0 0
## 1 2 -6 4 0
## 2 0 2 -6 4
## 3 0 0 2 -2
##Jawaban Bagian C
##Probabilitas transient: P(X(1 jam) = 2 | X(0)=0)
t <- 1 #jam
P_t <- expm(Q * t) #matriks probabilitas transisi
p02 <- P_t["0","2"] #peluang dari state 0 ke state 2
cat(sprintf(
"P(1 dicuci & 1 antre pada pukul 09:00) \nP = %.4f",
p02))
## P(1 dicuci & 1 antre pada pukul 09:00)
## P = 0.2650
##Jawaban Bagian D
##Steady‑state & waktu idle/penuh
##Cari π sehingga πQ = 0 dan Σπ = 1
A <- t(Q); A[4, ] <- 1 #ganti baris terakhir dg constraint Σπ = 1
b <- c(0, 0, 0, 1)
pi <- solve(A, b) #vektor steady‑state
names(pi) <- paste0("π", 0:3)
cat("Steady‑state Probabilities")
## Steady‑state Probabilities
print(round(pi, 4))
## π0 π1 π2 π3
## 0.0667 0.1333 0.2667 0.5333
jam_operasional <- 12 #08:00–20:00
idle_hours <- pi["π0"] * jam_operasional
full_hours <- pi["π3"] * jam_operasional
cat(sprintf(
"Rata‑rata waktu sistem idle (kosong) : %.2f jam/hari", idle_hours))
## Rata‑rata waktu sistem idle (kosong) : 0.80 jam/hari
cat(sprintf(
"Rata‑rata waktu sistem penuh (3 mobil): %.2f jam/hari", full_hours))
## Rata‑rata waktu sistem penuh (3 mobil): 6.40 jam/hari
##Jawaban Bagian E
##Peluang long‑run antrian penuh
cat(sprintf(
"P(sistem penuh pada long‑run) P = %.4f",
pi["π3"]))
## P(sistem penuh pada long‑run) P = 0.5333
##Jawaban Bagian F
##Expected first‑passage time ke state 3
##Sub‑Q untuk state transien {0,1,2}
Q_T <- Q[1:3, 1:3] #state 0,1,2
N <- solve(-Q_T) #Fundamental matrix
e <- rep(1, 3)
Tfp <- N %*% e #E[waktu ke state 3]
t0 <- Tfp[1] #dari state 0
cat(sprintf(
"Ekspektasi waktu hingga pertama kali penuh E[T] = %.4f jam",
t0))
## Ekspektasi waktu hingga pertama kali penuh E[T] = 1.0625 jam