# =========================================================================
# 1. MEMBUAT DATA AWAL PERMINTAAN BARU
# =========================================================================
tabel_permintaan <- data.frame(
permintaan = c(40, 55, 70, 85, 100),
frekuensi = c(15, 25, 35, 15, 10)
)
# Menghitung probabilitas dan probabilitas kumulatif
total_frekuensi <- sum(tabel_permintaan$frekuensi)
tabel_permintaan$probabilitas <- tabel_permintaan$frekuensi / total_frekuensi
tabel_permintaan$probabilitas_kumulatif <- cumsum(tabel_permintaan$probabilitas)
# Menentukan batas bawah dan atas dalam skala persen (1 - 100)
tabel_permintaan$batas_bawah <- c(1, head(tabel_permintaan$probabilitas_kumulatif, -1) * 100 + 1)
tabel_permintaan$batas_atass <- tabel_permintaan$probabilitas_kumulatif * 100
# Hitung Ekspektasi Teoritis (Manual)
nilai_ekspektasi <- sum(tabel_permintaan$permintaan * tabel_permintaan$probabilitas)
# =========================================================================
# 2. FUNGSI SIMULASI MONTE CARLO
# =========================================================================
permintaan_simulasi <- function(n, data_tabel) {
# Bangkitkan bilangan acak diskrit 1 sampai 100 sebanyak n
bilangan_acak <- sample(1:100, n, replace = TRUE)
# Membuat vektor batas untuk pemisahan interval yang aman
# Ditambah angka 0 di depan agar batas bawah 1 masuk kategori pertama
batas_vektor <- c(0, data_tabel$batas_atass)
# findInterval akan menentukan bilangan acak masuk ke kelompok indeks mana (1-5)
indeks_terpilih <- findInterval(bilangan_acak, batas_vektor, rightmost.closed = TRUE)
# Ambil nilai permintaan berdasarkan indeks yang terpilih
prediksi_permintaan <- data_tabel$permintaan[indeks_terpilih]
# Mengembalikannya dalam bentuk data frame
return(data.frame(
bilangan_acak = bilangan_acak,
prediksi_permintaan = prediksi_permintaan
))
}
# =========================================================================
# 3. JALANKAN SIMULASI
# =========================================================================
# Run Simulasi 1000
set.seed(88)
sim_1000 <- permintaan_simulasi(1000, tabel_permintaan)
cat("Rata-rata N=1000:", mean(sim_1000$prediksi_permintaan), "\n")
## Rata-rata N=1000: 67.225
# Run Simulasi 5000
set.seed(88)
sim_5000 <- permintaan_simulasi(5000, tabel_permintaan)
cat("Rata-rata N=5000:", mean(sim_5000$prediksi_permintaan), "\n")
## Rata-rata N=5000: 67.471
# Run Simulasi 20000
set.seed(88)
sim_20000 <- permintaan_simulasi(20000, tabel_permintaan)
cat("Rata-rata N=20000:", mean(sim_20000$prediksi_permintaan), "\n")
## Rata-rata N=20000: 67.46725
# =========================================================================
# 4. TABEL PERBANDINGAN AKHIR
# =========================================================================
perbandingan_tugas <- data.frame(
Kondisi_Simulasi = c("Ekspektasi Teoritis (Manual)", "Simulasi N = 1.000", "Simulasi N = 5.000", "Simulasi N = 20.000"),
Rata_Rata_Permintaan = c(
round(nilai_ekspektasi, 4),
round(mean(sim_1000$prediksi_permintaan), 4),
round(mean(sim_5000$prediksi_permintaan), 4),
round(mean(sim_20000$prediksi_permintaan), 4)
)
)
print(perbandingan_tugas)
## Kondisi_Simulasi Rata_Rata_Permintaan
## 1 Ekspektasi Teoritis (Manual) 67.0000
## 2 Simulasi N = 1.000 67.2250
## 3 Simulasi N = 5.000 67.4710
## 4 Simulasi N = 20.000 67.4673
Berdasarkan hasil eksekusi program dengan data awal permintaan yang telah dimodifikasi, simulasi Monte Carlo terbukti secara konsisten mampu mendekati nilai ekspektasi perhitungan manual (teoritis) sebesar 67 unit. Hasil simulasi menunjukkan rata-rata permintaan sebesar 67,225 unit pada 1.000 percobaan, 67,471 unit pada 5.000 percobaan, dan 67,4673 unit pada 20.000 percobaan. Nilai-nilai tersebut relatif dekat dengan nilai ekspektasi teoritis, sehingga dapat disimpulkan bahwa simulasi Monte Carlo mampu menggambarkan rata-rata permintaan berdasarkan distribusi probabilitas yang telah ditentukan. Selain itu, hasil simulasi pada 5.000 dan 20.000 percobaan cenderung stabil, yang menunjukkan bahwa semakin besar jumlah percobaan, hasil simulasi akan semakin konsisten. Dengan demikian, rata-rata permintaan diperkirakan berada di sekitar 67 unit pada setiap periode.