# =====================================================
# LATIHAN 1A
# Prediksi Permintaan Es Teh 5 Hari ke Depan
# =====================================================
permintaan1 <- c(50, 60, 70, 80, 90)
frekuensi1 <- c(10, 20, 40, 20, 10)
total1 <- sum(frekuensi1)
prob1 <- frekuensi1 / total1
prob_kum1 <- cumsum(prob1)
interval_atas1 <- floor(prob_kum1 * 100)
interval_bawah1 <- c(1, head(interval_atas1, -1) + 1)
tabel1 <- data.frame(
Permintaan = permintaan1,
Frekuensi = frekuensi1,
Probabilitas = prob1,
Prob_Kumulatif = prob_kum1,
Interval_Bawah = interval_bawah1,
Interval_Atas = interval_atas1
)
cat("=== LATIHAN 1A ===\n")
## === LATIHAN 1A ===
print(tabel1)
## Permintaan Frekuensi Probabilitas Prob_Kumulatif Interval_Bawah Interval_Atas
## 1 50 10 0.1 0.1 1 10
## 2 60 20 0.2 0.3 11 30
## 3 70 40 0.4 0.7 31 70
## 4 80 20 0.2 0.9 71 90
## 5 90 10 0.1 1.0 91 100
set.seed(123)
n <- 5
bil_acak <- sample(1:100, n, replace = TRUE)
index <- findInterval(bil_acak, interval_atas1) + 1
index[index > length(permintaan1)] <- length(permintaan1)
hasil <- permintaan1[index]
simulasi1a <- data.frame(
Hari = 1:n,
Bilangan_Acak = bil_acak,
Permintaan_Simulasi = hasil
)
print(simulasi1a)
## Hari Bilangan_Acak Permintaan_Simulasi
## 1 1 31 70
## 2 2 79 80
## 3 3 51 70
## 4 4 14 60
## 5 5 67 70
cat("Total Prediksi 5 Hari =", sum(hasil), "\n")
## Total Prediksi 5 Hari = 350
cat("Rata-rata =", mean(hasil), "\n\n")
## Rata-rata = 70
# =====================================================
# LATIHAN 1B
# Prediksi Permintaan Es Teh 20 Hari ke Depan
# =====================================================
cat("=== LATIHAN 1B ===\n")
## === LATIHAN 1B ===
set.seed(123)
n <- 20
bil_acak <- sample(1:100, n, replace = TRUE)
index <- findInterval(bil_acak, interval_atas1) + 1
index[index > length(permintaan1)] <- length(permintaan1)
hasil <- permintaan1[index]
simulasi1b <- data.frame(
Hari = 1:n,
Bilangan_Acak = bil_acak,
Permintaan_Simulasi = hasil
)
print(simulasi1b)
## Hari Bilangan_Acak Permintaan_Simulasi
## 1 1 31 70
## 2 2 79 80
## 3 3 51 70
## 4 4 14 60
## 5 5 67 70
## 6 6 42 70
## 7 7 50 70
## 8 8 43 70
## 9 9 14 60
## 10 10 25 60
## 11 11 90 90
## 12 12 91 90
## 13 13 69 70
## 14 14 91 90
## 15 15 57 70
## 16 16 92 90
## 17 17 9 50
## 18 18 93 90
## 19 19 99 90
## 20 20 72 80
cat("Total Prediksi 20 Hari =", sum(hasil), "\n")
## Total Prediksi 20 Hari = 1490
cat("Rata-rata =", mean(hasil), "\n\n")
## Rata-rata = 74.5
# =====================================================
# LATIHAN 2
# Distribusi Eksponensial dan Normal
# =====================================================
cat("=== LATIHAN 2 ===\n")
## === LATIHAN 2 ===
set.seed(123)
n_data <- 10
permintaan2 <- rexp(n_data, rate = 0.1)
frekuensi2 <- rnorm(n_data, mean = 50, sd = 5)
data_awal <- data.frame(
Hari = 1:n_data,
Permintaan = round(permintaan2, 2),
Frekuensi = round(frekuensi2, 2)
)
print(data_awal)
## Hari Permintaan Frekuensi
## 1 1 8.43 47.77
## 2 2 5.77 56.12
## 3 3 13.29 51.80
## 4 4 0.32 52.00
## 5 5 0.56 50.55
## 6 6 3.17 47.22
## 7 7 3.14 58.93
## 8 8 1.45 52.49
## 9 9 27.26 40.17
## 10 10 0.29 53.51
lambda <- 1 / mean(permintaan2)
mu <- mean(frekuensi2)
sigma <- sd(frekuensi2)
cat("Lambda =", lambda, "\n")
## Lambda = 0.1570279
cat("Mean Frekuensi =", mu, "\n")
## Mean Frekuensi = 51.05667
cat("SD Frekuensi =", sigma, "\n\n")
## SD Frekuensi = 5.180642
# =====================================================
# Fungsi Monte Carlo
# =====================================================
simulasi_MC <- function(hari, iterasi = 10000){
hasil <- numeric(iterasi)
for(i in 1:iterasi){
permintaan_sim <- rexp(hari, rate = lambda)
hasil[i] <- sum(permintaan_sim)
}
return(hasil)
}
# =====================================================
# LATIHAN 2A
# Prediksi 5 Hari
# =====================================================
pred5 <- simulasi_MC(5)
cat("=== LATIHAN 2A (5 Hari) ===\n")
## === LATIHAN 2A (5 Hari) ===
cat("Rata-rata =", mean(pred5), "\n")
## Rata-rata = 31.95008
cat("Minimum =", min(pred5), "\n")
## Minimum = 2.253334
cat("Maksimum =", max(pred5), "\n\n")
## Maksimum = 119.0174
# =====================================================
# LATIHAN 2B
# Prediksi 20 Hari
# =====================================================
pred20 <- simulasi_MC(20)
cat("=== LATIHAN 2B (20 Hari) ===\n")
## === LATIHAN 2B (20 Hari) ===
cat("Rata-rata =", mean(pred20), "\n")
## Rata-rata = 126.8202
cat("Minimum =", min(pred20), "\n")
## Minimum = 44.67145
cat("Maksimum =", max(pred20), "\n\n")
## Maksimum = 250.612
# =====================================================
# LATIHAN 2C
# Prediksi 100 Hari
# =====================================================
pred100 <- simulasi_MC(100)
cat("=== LATIHAN 2C (100 Hari) ===\n")
## === LATIHAN 2C (100 Hari) ===
cat("Rata-rata =", mean(pred100), "\n")
## Rata-rata = 636.8261
cat("Minimum =", min(pred100), "\n")
## Minimum = 443.4087
cat("Maksimum =", max(pred100), "\n\n")
## Maksimum = 938.2492
# =====================================================
# LATIHAN 2D
# Prediksi 1000 Hari
# =====================================================
pred1000 <- simulasi_MC(1000)
cat("=== LATIHAN 2D (1000 Hari) ===\n")
## === LATIHAN 2D (1000 Hari) ===
cat("Rata-rata =", mean(pred1000), "\n")
## Rata-rata = 6366.431
cat("Minimum =", min(pred1000), "\n")
## Minimum = 5583.896
cat("Maksimum =", max(pred1000), "\n")
## Maksimum = 7114.382