set.seed(1)
x <- runif(10000)
EX2 <- mean(x^2)
EX2
## [1] 0.3348666
set.seed(2)
n_values <- c(100, 1000, 10000)
results <- lapply(n_values, function(n) {
data <- rnorm(n, mean = 100, sd = 15)
list(mean = mean(data), sd = sd(data), data = data)
})
par(mfrow = c(1, 3))
for (i in 1:3) {
hist(results[[i]]$data, main = paste("n =", n_values[i]), col = "lightblue", breaks = 20)
}
set.seed(3)
binomial_samples <- rbinom(5000, size = 30, prob = 0.25)
mean(binomial_samples >= 15)
## [1] 0.0016
rumus_s <- function(x) {
n <- length(x)
sqrt((sum(x^2) - (sum(x)^2)/n)/(n - 1))
}
set.seed(4)
data <- rnorm(1000, mean = 89, sd = 10)
rumus_s(data)
## [1] 9.693035
simulasi_bank <- function(n_teller = 2, hari = 20) {
bank <- simmer("Bank")
customer <- trajectory("nasabah") %>%
seize("teller", 1) %>%
timeout(function() rexp(1, rate = 1/8)) %>%
release("teller", 1)
bank %>%
add_resource("teller", capacity = n_teller) %>%
add_generator("nasabah", customer, function() rexp(1, 1/12)) %>%
run(until = hari * 60 * 6)
return(bank)
}
bank_sim <- simulasi_bank(2, 20)
get_mon_arrivals(bank_sim) %>%
mutate(waktu_tunggu = end_time - start_time - activity_time) %>%
summarise(rata2_waktu_tunggu = mean(waktu_tunggu))
## rata2_waktu_tunggu
## 1 1.085676
res <- get_mon_resources(bank_sim)
res_teller <- res %>% filter(resource == "teller")
res_teller %>% summarise(utilisasi = mean(server / capacity) * 100)
## utilisasi
## 1 54.04504
bank_sim3 <- simulasi_bank(3, 20)
res3 <- get_mon_resources(bank_sim3)
res3_teller <- res3 %>% filter(resource == "teller")
res3_teller %>% summarise(utilisasi = mean(server / capacity) * 100)
## utilisasi
## 1 36.45922
library(ggplot2)
res_queue <- get_mon_resources(bank_sim) %>%
filter(resource == "teller")
ggplot(res_queue, aes(time, queue)) +
geom_line(color = "steelblue") +
labs(title = "Panjang Antrian Teller Sepanjang Hari",
x = "Waktu (menit)",
y = "Jumlah dalam Antrian")
simulasi_stok <- function(hari = 60, stok_awal = 100, pesanan = 50, frekuensi = 5) {
stok <- numeric(hari)
stok[1] <- stok_awal
kehabisan <- 0
for (i in 2:hari) {
penjualan <- sample(8:15, 1)
stok[i] <- stok[i - 1] - penjualan
if (i %% frekuensi == 0) {
stok[i] <- stok[i] + pesanan
}
if (stok[i] < 0) {
kehabisan <- kehabisan + 1
stok[i] <- 0
}
}
return(list(stok = stok, kehabisan = kehabisan))
}
hasil <- simulasi_stok()
plot(hasil$stok, type = 'l', main = "Stok Beras Selama 60 Hari", ylab = "Stok", xlab = "Hari")
hasil$kehabisan
## [1] 0
strategi <- c(40, 50, 60)
sapply(strategi, function(p) simulasi_stok(pesanan = p)$kehabisan)
## [1] 16 5 0
frekuensi <- c(3, 5, 7)
sapply(frekuensi, function(f) simulasi_stok(frekuensi = f)$kehabisan)
## [1] 0 2 18
stok_opt <- simulasi_stok(pesanan = 60, frekuensi = 5)
plot(stok_opt$stok, type = 'l', col = 'darkgreen', lwd = 2,
main = "Grafik Stok Beras Bu Sari (Strategi Optimal)",
xlab = "Hari ke-", ylab = "Jumlah Stok Karung")
abline(h = 0, col = "red", lty = 2)
Bu Sari sebaiknya memesan 60 karung setiap 5 hari karena strategi ini: - Minim kehabisan stok (kerugian minim). - Tidak terlalu sering memesan (efisien logistik). - Menjaga stok stabil dan aman selama 60 hari.