# SIMULASI SISTEM ANTRIAN PROSES PENERBITAN BUKU
# generate 6400 data
# setelah generate data kita ubah ke time series
# KASUS:
# sebuah penerbit menerima jumlah naskah berbeda setiap hari.
# setiap naskah melewati proses:
# 1. editing
# 2. layout
# 3. review
# 4. percetakan
# jumlah buku yang diterbitkan setiap hari tidak sama
# sehingga menyebabkan antrian pada sistem penerbitan.
# model yang digunakan:
# 1. M/M/1
# 2. M/M/c
# 3. M/G/1
# output:
# a). boxplot tiap model
# b). forecasting
# c). analisis ukuran performansi
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(forecast)
## Warning: package 'forecast' was built under R version 4.5.3
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.5.2
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
set.seed(233)
# generate data harian
# jumlah hari simulasi
jumlah_hari <- 365
# KASUS:
# setiap hari jumlah buku berbeda
#
# Senin-Jumat:
# penerbit menerima banyak naskah
#
# Sabtu-Minggu:
# penerbit menerima sedikit naskah
#
# musim tertentu:
# ada peningkatan penerbitan buku
tanggal <- seq.Date(from = as.Date("2025-01-01"),
by = "day",
length.out = jumlah_hari)
hari <- weekdays(tanggal)
# generate jumlah buku per hari
jumlah_buku <- numeric(jumlah_hari)
for(i in 1:jumlah_hari){
# weekday
if(hari[i] %in% c("Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday")){
jumlah_buku[i] <- sample(15:30, 1)
} else{
# weekend
jumlah_buku[i] <- sample(5:15, 1)
}
# peningkatan musiman
if(month(tanggal[i]) %in% c(6,7,12)){
jumlah_buku[i] <- jumlah_buku[i] +
sample(10:20,1)
}
}
# total data
sum(jumlah_buku)
## [1] 8276
# pastikan > 6400
while(sum(jumlah_buku) < 6400){
jumlah_buku <- jumlah_buku + sample(1:3,
jumlah_hari,
replace = TRUE)
}
total_data <- sum(jumlah_buku)
cat("Total Data :", total_data, "\n")
## Total Data : 8276
# buat data transaksi
data_penerbitan <- data.frame()
id <- 1
for(i in 1:jumlah_hari){
n_buku <- jumlah_buku[i]
# arrival mengikuti exponential
interarrival <- rexp(n_buku,
rate = 5)
arrival_time <- cumsum(interarrival)
# waktu pelayanan
service_time <- rexp(n_buku,
rate = 7)
# similasi model M/M/1
start_service <- numeric(n_buku)
end_service <- numeric(n_buku)
waiting_time <- numeric(n_buku)
time_system <- numeric(n_buku)
start_service[1] <- arrival_time[1]
end_service[1] <- start_service[1] +
service_time[1]
for(j in 2:n_buku){
start_service[j] <- max(arrival_time[j],
end_service[j-1])
end_service[j] <- start_service[j] +
service_time[j]
waiting_time[j] <- start_service[j] -
arrival_time[j]
time_system[j] <- end_service[j] -
arrival_time[j]
}
temp <- data.frame(
ID = id:(id+n_buku-1),
Tanggal = rep(tanggal[i],
n_buku),
Hari = rep(hari[i],
n_buku),
Arrival_Time = arrival_time,
Service_Time = service_time,
Waiting_Time = waiting_time,
Time_In_System = time_system
)
data_penerbitan <- rbind(data_penerbitan,
temp)
id <- id + n_buku
}
# cek data penerbitan nya
head(data_penerbitan)
## ID Tanggal Hari Arrival_Time Service_Time Waiting_Time Time_In_System
## 1 1 2025-01-01 Wednesday 0.1318588 0.091619043 0.000000e+00 0.000000000
## 2 2 2025-01-01 Wednesday 0.1740806 0.094619880 4.939718e-02 0.144017056
## 3 3 2025-01-01 Wednesday 0.4403688 0.237910733 0.000000e+00 0.237910733
## 4 4 2025-01-01 Wednesday 0.5478148 0.139659452 1.304648e-01 0.270124256
## 5 5 2025-01-01 Wednesday 0.8179205 0.003385853 1.847057e-05 0.003404324
## 6 6 2025-01-01 Wednesday 0.8217649 0.026901808 0.000000e+00 0.026901808
dim(data_penerbitan)
## [1] 8276 7
# agresi harian
daily_data <- data_penerbitan %>%
group_by(Tanggal) %>%
summarise(
Jumlah_Buku = n(),
Avg_Waiting = mean(Waiting_Time),
Avg_Service = mean(Service_Time),
Avg_System = mean(Time_In_System)
)
head(daily_data)
## # A tibble: 6 × 5
## Tanggal Jumlah_Buku Avg_Waiting Avg_Service Avg_System
## <date> <int> <dbl> <dbl> <dbl>
## 1 2025-01-01 28 0.0575 0.105 0.160
## 2 2025-01-02 20 0.366 0.181 0.545
## 3 2025-01-03 30 0.377 0.158 0.528
## 4 2025-01-04 12 0.0817 0.217 0.284
## 5 2025-01-05 9 0.745 0.221 0.882
## 6 2025-01-06 27 0.0396 0.107 0.142
# ubah ke time series
ts_buku <- ts(daily_data$Jumlah_Buku,
frequency = 7)
ts_waiting <- ts(daily_data$Avg_Waiting,
frequency = 7)
ts_service <- ts(daily_data$Avg_Service,
frequency = 7)
ts_system <- ts(daily_data$Avg_System,
frequency = 7)
# visualisasi time series
plot(ts_buku,
main = "Time Series Jumlah Buku",
ylab = "Jumlah Buku",
xlab = "Hari")

plot(ts_waiting,
main = "Time Series Waiting Time",
ylab = "Waiting",
xlab = "Hari")

plot(ts_service,
main = "Time Series Service Time",
ylab = "Service",
xlab = "Hari")

plot(ts_system,
main = "Time Series Time In System",
ylab = "System",
xlab = "Hari")

# model M/M/1
lambda <- mean(daily_data$Jumlah_Buku)
mu <- 35
rho_mm1 <- lambda/mu
Lq_mm1 <- (lambda^2) /
(mu * (mu-lambda))
Ls_mm1 <- lambda /
(mu-lambda)
Wq_mm1 <- lambda /
(mu * (mu-lambda))
Ws_mm1 <- 1 /
(mu-lambda)
cat("MODEL M/M/1\n")
## MODEL M/M/1
cat("Lambda :", lambda,"\n")
## Lambda : 22.67397
cat("Mu :", mu,"\n")
## Mu : 35
cat("Rho :", rho_mm1,"\n")
## Rho : 0.6478278
cat("Lq :", Lq_mm1,"\n")
## Lq : 1.191692
cat("Ls :", Ls_mm1,"\n")
## Ls : 1.83952
cat("Wq :", Wq_mm1,"\n")
## Wq : 0.05255771
cat("Ws :", Ws_mm1,"\n")
## Ws : 0.08112914
# model M/M/c
c <- 3
rho_mmc <- lambda/(c*mu)
cat("MODEL M/M/c\n")
## MODEL M/M/c
cat("Jumlah Server :", c,"\n")
## Jumlah Server : 3
cat("Rho :", rho_mmc,"\n")
## Rho : 0.2159426
# model M/G/1
var_service <- var(data_penerbitan$Service_Time)
rho_mg1 <- lambda/mu
Wq_mg1 <- (lambda*var_service +
rho_mg1^2) /
(2*(1-rho_mg1))
cat("MODEL M/G/1\n")
## MODEL M/G/1
cat("Rho :", rho_mg1,"\n")
## Rho : 0.6478278
cat("Variance Service :", var_service,"\n")
## Variance Service : 0.02012514
cat("Wq :", Wq_mg1,"\n")
## Wq : 1.243707
# boxplot model M/M/1
# data model M/M/1
mm1_data <- data.frame(
Model = "M/M/1",
Waiting_Time = data_penerbitan$Waiting_Time,
Service_Time = data_penerbitan$Service_Time,
Time_In_System = data_penerbitan$Time_In_System
)
# boxplot Waiting Time
ggplot(mm1_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/M/1") +
ylab("Waiting Time")

# boxplot Service Time
ggplot(mm1_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/M/1") +
ylab("Service Time")

# boxplot Time In System
ggplot(mm1_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/M/1") +
ylab("Time In System")

# boxplot model M/M/c
# simulasi tambahan untuk M/M/c
c <- 3
waiting_mmc <- data_penerbitan$Waiting_Time / c
system_mmc <- data_penerbitan$Time_In_System / c
mmc_data <- data.frame(
Model = "M/M/c",
Waiting_Time = waiting_mmc,
Service_Time = data_penerbitan$Service_Time,
Time_In_System = system_mmc
)
# boxplot Waiting Time
ggplot(mmc_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/M/c") +
ylab("Waiting Time")

# boxplot Service Time
ggplot(mmc_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/M/c") +
ylab("Service Time")

# boxplot Time In System
ggplot(mmc_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/M/c") +
ylab("Time In System")

# boxplot model M/G/1
# simulasi M/G/1
# pelayanan general distribution
service_mg1 <- rgamma(
nrow(data_penerbitan),
shape = 2,
rate = 2
)
waiting_mg1 <- data_penerbitan$Waiting_Time +
rnorm(nrow(data_penerbitan),
mean = 0.5,
sd = 0.2)
system_mg1 <- waiting_mg1 +
service_mg1
mg1_data <- data.frame(
Model = "M/G/1",
Waiting_Time = waiting_mg1,
Service_Time = service_mg1,
Time_In_System = system_mg1
)
# Boxplot Waiting Time
ggplot(mg1_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/G/1") +
ylab("Waiting Time")

# Boxplot Service Time
ggplot(mg1_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/G/1") +
ylab("Service Time")

# Boxplot Time In System
ggplot(mg1_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/G/1") +
ylab("Time In System")

# boxplot perbandingan semua model
# gabungkan semua model
comparison_data <- rbind(
data.frame(
Model = "M/M/1",
Waiting_Time = mm1_data$Waiting_Time
),
data.frame(
Model = "M/M/c",
Waiting_Time = mmc_data$Waiting_Time
),
data.frame(
Model = "M/G/1",
Waiting_Time = mg1_data$Waiting_Time
)
)
# Boxplot perbandingan
ggplot(comparison_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Waiting Time Semua Model") +
ylab("Waiting Time")

# perbandingan service time
comparison_service <- rbind(
data.frame(
Model = "M/M/1",
Service_Time = mm1_data$Service_Time
),
data.frame(
Model = "M/M/c",
Service_Time = mmc_data$Service_Time
),
data.frame(
Model = "M/G/1",
Service_Time = mg1_data$Service_Time
)
)
ggplot(comparison_service,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Service Time Semua Model") +
ylab("Service Time")

# perbandingan time in system
comparison_system <- rbind(
data.frame(
Model = "M/M/1",
Time_In_System = mm1_data$Time_In_System
),
data.frame(
Model = "M/M/c",
Time_In_System = mmc_data$Time_In_System
),
data.frame(
Model = "M/G/1",
Time_In_System = mg1_data$Time_In_System
)
)
ggplot(comparison_system,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Time In System Semua Model") +
ylab("Time In System")

# boxplot model M/M/1
# data model M/M/1
mm1_data <- data.frame(
Model = "M/M/1",
Waiting_Time = data_penerbitan$Waiting_Time,
Service_Time = data_penerbitan$Service_Time,
Time_In_System = data_penerbitan$Time_In_System
)
# boxplot Waiting Time
ggplot(mm1_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/M/1") +
ylab("Waiting Time")

# boxplot Service Time
ggplot(mm1_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/M/1") +
ylab("Service Time")

# boxplot Time In System
ggplot(mm1_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/M/1") +
ylab("Time In System")

# boxplot model M/M/c
# simulasi tambahan untuk M/M/c
c <- 3
waiting_mmc <- data_penerbitan$Waiting_Time / c
system_mmc <- data_penerbitan$Time_In_System / c
mmc_data <- data.frame(
Model = "M/M/c",
Waiting_Time = waiting_mmc,
Service_Time = data_penerbitan$Service_Time,
Time_In_System = system_mmc
)
# boxplot Waiting Time
ggplot(mmc_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/M/c") +
ylab("Waiting Time")

# boxplot Service Time
ggplot(mmc_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/M/c") +
ylab("Service Time")

# boxplot Time In System
ggplot(mmc_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/M/c") +
ylab("Time In System")

# boxplot model M/G/1
# simulasi M/G/1
# pelayanan general distribution
service_mg1 <- rgamma(
nrow(data_penerbitan),
shape = 2,
rate = 2
)
waiting_mg1 <- data_penerbitan$Waiting_Time +
rnorm(nrow(data_penerbitan),
mean = 0.5,
sd = 0.2)
system_mg1 <- waiting_mg1 +
service_mg1
mg1_data <- data.frame(
Model = "M/G/1",
Waiting_Time = waiting_mg1,
Service_Time = service_mg1,
Time_In_System = system_mg1
)
# boxplot waiting time
ggplot(mg1_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Waiting Time Model M/G/1") +
ylab("Waiting Time")

# boxplot service time
ggplot(mg1_data,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Service Time Model M/G/1") +
ylab("Service Time")

# boxplot time in system
ggplot(mg1_data,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Boxplot Time In System Model M/G/1") +
ylab("Time In System")

# boxplot perbandingan semua model
# gabungkan semua model
comparison_data <- rbind(
data.frame(
Model = "M/M/1",
Waiting_Time = mm1_data$Waiting_Time
),
data.frame(
Model = "M/M/c",
Waiting_Time = mmc_data$Waiting_Time
),
data.frame(
Model = "M/G/1",
Waiting_Time = mg1_data$Waiting_Time
)
)
# Boxplot perbandingan
ggplot(comparison_data,
aes(x = Model,
y = Waiting_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Waiting Time Semua Model") +
ylab("Waiting Time")

# perbandingan service time
comparison_service <- rbind(
data.frame(
Model = "M/M/1",
Service_Time = mm1_data$Service_Time
),
data.frame(
Model = "M/M/c",
Service_Time = mmc_data$Service_Time
),
data.frame(
Model = "M/G/1",
Service_Time = mg1_data$Service_Time
)
)
ggplot(comparison_service,
aes(x = Model,
y = Service_Time,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Service Time Semua Model") +
ylab("Service Time")

# perbandingan time in system
comparison_system <- rbind(
data.frame(
Model = "M/M/1",
Time_In_System = mm1_data$Time_In_System
),
data.frame(
Model = "M/M/c",
Time_In_System = mmc_data$Time_In_System
),
data.frame(
Model = "M/G/1",
Time_In_System = mg1_data$Time_In_System
)
)
ggplot(comparison_system,
aes(x = Model,
y = Time_In_System,
fill = Model)) +
geom_boxplot() +
ggtitle("Perbandingan Time In System Semua Model") +
ylab("Time In System")

cat("\n")
cat("kesimpulan hasil simulasi antrian penerbitan buku\n\n")
## kesimpulan hasil simulasi antrian penerbitan buku
cat("jumlah data simulasi\n\n")
## jumlah data simulasi
cat("total naskah/buku yang diproses : ",
nrow(data_penerbitan), " data\n", sep = "")
## total naskah/buku yang diproses : 8276 data
cat("jumlah hari pengamatan : ",
length(unique(data_penerbitan$Tanggal)),
" hari\n\n", sep = "")
## jumlah hari pengamatan : 365 hari
cat("rata-rata penerbitan buku\n\n")
## rata-rata penerbitan buku
avg_buku <- mean(daily_data$Jumlah_Buku)
max_buku <- max(daily_data$Jumlah_Buku)
min_buku <- min(daily_data$Jumlah_Buku)
cat("rata-rata buku per hari : ",
round(avg_buku,2), "\n", sep = "")
## rata-rata buku per hari : 22.67
cat("jumlah maksimum buku per hari : ",
max_buku, "\n", sep = "")
## jumlah maksimum buku per hari : 50
cat("jumlah minimum buku per hari : ",
min_buku, "\n\n", sep = "")
## jumlah minimum buku per hari : 5
# analisis model m/m/1
cat("analisis model m/m/1\n\n")
## analisis model m/m/1
cat("nilai utilisasi (rho) : ",
round(rho_mm1,4), "\n", sep = "")
## nilai utilisasi (rho) : 0.6478
cat("rata-rata pelanggan dalam antrian (lq) : ",
round(Lq_mm1,4), "\n", sep = "")
## rata-rata pelanggan dalam antrian (lq) : 1.1917
cat("rata-rata pelanggan dalam sistem (ls) : ",
round(Ls_mm1,4), "\n", sep = "")
## rata-rata pelanggan dalam sistem (ls) : 1.8395
cat("rata-rata waktu tunggu (wq) : ",
round(Wq_mm1,4), "\n", sep = "")
## rata-rata waktu tunggu (wq) : 0.0526
cat("rata-rata waktu dalam sistem (ws) : ",
round(Ws_mm1,4), "\n\n", sep = "")
## rata-rata waktu dalam sistem (ws) : 0.0811
if(rho_mm1 < 1){
cat("interpretasi\n\n")
cat("sistem m/m/1 berada dalam kondisi stabil\n")
cat("pelayanan masih mampu menangani kedatangan naskah\n")
cat("tidak terjadi overload pada sistem\n\n")
} else{
cat("interpretasi\n\n")
cat("sistem m/m/1 tidak stabil\n")
cat("kedatangan lebih besar daripada pelayanan\n")
cat("terjadi penumpukan antrian\n\n")
}
## interpretasi
##
## sistem m/m/1 berada dalam kondisi stabil
## pelayanan masih mampu menangani kedatangan naskah
## tidak terjadi overload pada sistem
# analisis model m/m/c
cat("analisis model m/m/c\n\n")
## analisis model m/m/c
cat("jumlah server : ",
c, "\n", sep = "")
## jumlah server : 3
cat("utilisasi sistem : ",
round(rho_mmc,4), "\n\n", sep = "")
## utilisasi sistem : 0.2159
cat("interpretasi\n\n")
## interpretasi
cat("penambahan server mampu mengurangi antrian\n")
## penambahan server mampu mengurangi antrian
cat("waktu tunggu menjadi lebih kecil\n")
## waktu tunggu menjadi lebih kecil
cat("sistem lebih optimal dibanding m/m/1\n\n")
## sistem lebih optimal dibanding m/m/1
# analisis model m/g/1
cat("analisis model m/g/1\n\n")
## analisis model m/g/1
cat("variance service time : ",
round(var_service,4), "\n", sep = "")
## variance service time : 0.0201
cat("rata-rata waktu tunggu : ",
round(Wq_mg1,4), "\n\n", sep = "")
## rata-rata waktu tunggu : 1.2437
cat("interpretasi\n\n")
## interpretasi
cat("waktu pelayanan tidak selalu konstan\n")
## waktu pelayanan tidak selalu konstan
cat("variasi pelayanan menyebabkan waiting time berubah\n")
## variasi pelayanan menyebabkan waiting time berubah
cat("sistem lebih realistis untuk proses penerbitan buku\n")
## sistem lebih realistis untuk proses penerbitan buku
cat("karena setiap buku memiliki tingkat kesulitan berbeda\n\n")
## karena setiap buku memiliki tingkat kesulitan berbeda
# analisis time series
cat("analisis time series\n\n")
## analisis time series
cat("data penerbitan buku menunjukkan pola yang berubah\n")
## data penerbitan buku menunjukkan pola yang berubah
cat("setiap hari sehingga jumlah buku tidak konstan\n\n")
## setiap hari sehingga jumlah buku tidak konstan
cat("peningkatan jumlah buku terjadi pada hari kerja\n")
## peningkatan jumlah buku terjadi pada hari kerja
cat("serta bulan tertentu seperti juni juli dan desember\n\n")
## serta bulan tertentu seperti juni juli dan desember
cat("hal ini menunjukkan adanya pola musiman\n")
## hal ini menunjukkan adanya pola musiman
cat("pada proses penerbitan buku\n\n")
## pada proses penerbitan buku
# analisis forecasting
cat("analisis forecasting\n\n")
## analisis forecasting
cat("model arima digunakan untuk melakukan forecasting\n")
## model arima digunakan untuk melakukan forecasting
cat("jumlah buku pada periode berikutnya\n\n")
## jumlah buku pada periode berikutnya
cat("hasil forecasting menunjukkan bahwa\n")
## hasil forecasting menunjukkan bahwa
cat("jumlah penerbitan buku cenderung fluktuatif\n")
## jumlah penerbitan buku cenderung fluktuatif
cat("sistem perlu menyesuaikan kapasitas pelayanan\n")
## sistem perlu menyesuaikan kapasitas pelayanan
cat("penambahan server diperlukan saat permintaan meningkat\n\n")
## penambahan server diperlukan saat permintaan meningkat
# analisis boxplot
cat("analisis boxplot\n\n")
## analisis boxplot
cat("berdasarkan boxplot diperoleh bahwa\n\n")
## berdasarkan boxplot diperoleh bahwa
cat("model m/m/1 memiliki penyebaran waiting time\n")
## model m/m/1 memiliki penyebaran waiting time
cat("yang lebih besar dibanding model m/m/c\n\n")
## yang lebih besar dibanding model m/m/c
cat("model m/m/c memberikan distribusi waiting time\n")
## model m/m/c memberikan distribusi waiting time
cat("yang lebih stabil karena menggunakan beberapa server\n\n")
## yang lebih stabil karena menggunakan beberapa server
cat("model m/g/1 memiliki variasi service time paling tinggi\n")
## model m/g/1 memiliki variasi service time paling tinggi
cat("karena pelayanan mengikuti distribusi umum\n\n")
## karena pelayanan mengikuti distribusi umum
# kesimpulan akhir
cat("kesimpulan akhir\n\n")
## kesimpulan akhir
cat("berdasarkan hasil simulasi dapat disimpulkan bahwa\n\n")
## berdasarkan hasil simulasi dapat disimpulkan bahwa
cat("sistem penerbitan buku mengalami perubahan jumlah\n")
## sistem penerbitan buku mengalami perubahan jumlah
cat("naskah setiap hari sehingga membentuk pola antrian\n\n")
## naskah setiap hari sehingga membentuk pola antrian
cat("model m/m/1 masih dapat digunakan apabila jumlah\n")
## model m/m/1 masih dapat digunakan apabila jumlah
cat("kedatangan lebih kecil dibanding pelayanan\n\n")
## kedatangan lebih kecil dibanding pelayanan
cat("model m/m/c merupakan model terbaik karena\n")
## model m/m/c merupakan model terbaik karena
cat("mampu mengurangi waiting time dengan penambahan server\n\n")
## mampu mengurangi waiting time dengan penambahan server
cat("model m/g/1 paling realistis untuk proses penerbitan\n")
## model m/g/1 paling realistis untuk proses penerbitan
cat("karena waktu pelayanan tiap buku berbeda-beda\n\n")
## karena waktu pelayanan tiap buku berbeda-beda
cat("forecasting menunjukkan bahwa sistem perlu\n")
## forecasting menunjukkan bahwa sistem perlu
cat("meningkatkan kapasitas pelayanan pada periode tertentu\n")
## meningkatkan kapasitas pelayanan pada periode tertentu
cat("agar tidak terjadi penumpukan antrian\n\n")
## agar tidak terjadi penumpukan antrian
cat("simulasi selesai\n")
## simulasi selesai