Post on 29-Jan-2016
description
LAPORAN
PEMODELAN DAN SIMULASI
PELAYANAN RESTORAN CAFÉ GAYATRI
KELOMPOK 1
ALMER HAFIZ W
(1308605011)
BRYAN WAHYU K.P (1308605028)
BAGUS RAY ARNATA (1308605032)
I GEDE OKA SUDIATMIKA (1308605050)
LEMBAR JUDUL
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
BUKIT JIMBARAN
2015
ii
KATA PENGANTAR
Puji Syukur penulis panjatkan kehadapan Tuhan Yang Maha Esa, karena
atas berkat dan rahmat-Nya penulis dapat menyusun dan menyelesaikan Laporan
Proposal dari mata kuliah Pemodelan & Simulasi dengan kriteria yang telah
ditentukan ini sesuai dengan rencana dan tepat pada waktunya.
Sehubungan dengan telah terselesaikannya laporan ini, maka diucapkan
terima kasih kepada berbagai pihak yang telah membantu penulis, antara lain:
1. Bapak I Dewa Made Bayu Atmaja Darmawan, S.Kom.,M.Cs. selaku dosen
pengajar mata kuliah Pemodelan & Simulasi.
2. Teman-teman mahasiswa di Jurusan Ilmu Komputer, khususnya angkatan
2013 yang telah memberikan saran dan dukungan moral dalam penyelesaian
laporan ini;
3. Pihak-pihak lainnya yang telah dengan tulus ikhlas memberikan saran dan
masukan yang bersifat konstruktif serta membangun dalam penyelesaian
laporan ini.
Disadari pula bahwa sudah tentu laporan ini masih mengandung kelemahan
dan kekurangan. Memperhatikan hal ini, maka masukkan dan saran-saran
penyempurnaan sangat diharapkan.
Besar harapan penulis agar laporan ini dapat bermanfaat sebagaimana
mestinya bagi kita semua.
Bukit Jimbaran, 11 November 2015
Penulis
iii
DAFTAR ISI
LEMBAR JUDUL ........................................................................................................................................ i
KATA PENGANTAR ................................................................................................................................... ii
DAFTAR ISI .............................................................................................................................................. iii
BAB I PENDAHULUAN ............................................................................................................................. 5
1.1 LATAR BELAKANG .......................................................................................................................... 5
1.2 RUMUSAN MASALAH .................................................................................................................... 5
1.3 TUJUAN ......................................................................................................................................... 5
1.4 MANFAAT PENELITIAN .................................................................................................................. 6
BAB II TINJAUAN PUSTAKA .................................................................................................................... 7
2.1 PEMBANGKITAN BILANGAN ACAK .......................................................................................... 7
2.1.1 LINEAR CONGRUENTIAL NUMBER .................................................................................. 7
2.1.2. MULTIPLICATIVE RNG ..................................................................................................... 8
2.1.3. MIXED CONGRUENTIAL RNG ........................................................................................... 8
2.2. SIMULASI MONTE CARLO ........................................................................................................ 8
BAB III METODOLOGI PENELITIAN ....................................................................................................... 10
3.1. Jenis Penelitian ...................................................................................................................... 10
3.2. Tempat Penelitian ................................................................................................................. 10
3.3. Teknik pengumpulan Data .................................................................................................... 10
3.4. Bahan dan Alat ...................................................................................................................... 10
3.5. Metode Penelitian ................................................................................................................ 10
3.6 Hasil pemantauan & Analisis data ........................................................................................ 10
3.7 Metode Pembangkitan & Logika Simulasi ............................................................................ 16
BAB IV HASIL DAN PEMBAHASAN ........................................................................................................ 18
4.1. Implementasi Simulasi .......................................................................................................... 18
4.2. Uji Program ........................................................................................................................... 25
4.3. Analisis Hasil Simulasi ........................................................................................................... 27
4.4. Uji Replikasi ........................................................................................................................... 31
BAB V PENUTUP ................................................................................................................................... 32
5.1. Kesimpulan ............................................................................................................................ 32
5.2. Saran ..................................................................................................................................... 32
iv
DAFTAR PUSTAKA ................................................................................................................................. 33
5
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
Di masa sekarang, bisnis restoran menjadi bisnis yang menjanjikan. Bisnis ini melayani
masakan dan minuman bagi para konsumen yang membutuhkan atau konsumen yang memiliki
hobi menikmati makanan. Pelanggan sering merasa kesal jika harus menunggu terlalu lama
dalam antrian, demikian juga dengan pemilik usaha seringkali bingung menentukan berapa
jumlah counter yang harus dibuka untuk meningkatkan pelayanan, namun tetap
memperhitungkan biaya yang dikeluarkan,Terkadang Stok pada makanan dapat membuat
pemilik usaha bingung memilih Stok .Karena Stok makanan akan cepat busuk bila tidak di olah
dengan cepat. Apabila stok makanan busuk akan tidak digunakan untuk memasak.Tentunya
busuknya makanan akan merugikan usaha tersebut .Apabila Stok makanan habis makanan
pelanggan akan di tutup tentunya pelanggan terpaksa memesan menu lain atau tidak jadi
memesan .Jika pemilik usaha tidak memilih Stok yang tepat dan benar maka usahanya tentunya
akan merugikan usahanya . Tentunya pemilik harus mencari tahu apa makanan kesukaan
kosumen ,mana bahan yang paling sering digunakan .
Dimana disini kami berusaha untuk mencari solusi untuk mendukungnya suatu restoran
untuk membuat bantuan suatu sistem simulasi dimana untuk mengatur dan mengantisipasi
bisnis pada suatu restoran agar mampu membuat persiapan agar suatu saat nanti tidak
menyebabkan kerugian di hari-hari awal operasional.
Simulasi yang kami buat ini adalah agar menunjang pengolahan usaha restoran pada
agar pemilik akan mendapatkan keuntungan yang optimal.
1.2 RUMUSAN MASALAH
Adapun permasalahan pada tugas Pemodelan dan Simulasi ini adalah:
1. Seberapa banyak pengunjung yang akan datang ke restoran selama n hari?
2. Seberapa banyak suplai yang dibutuhkan untuk melayani n pengunjung selama n hari?
3. Seberapa banyak omzet yang masuk selama n hari?
1.3 TUJUAN
Tujuan simulasi ini adalah:
1. Mensimulasikan antrian panjang pada restoran, sehingga apabila terjadi crowded
pelanggan sudah dapat melakukan prediksi dan tidak sampai overcrowded.
6
2. Menangani Stok barang yang kosong, dan memudahkan untuk mengetahui stok
barang yang ada
1.4 MANFAAT PENELITIAN
Manfaat penulisan dari tugas Pemodelan dan Simulasi ini adalah :
1. Memudahkan pihak restoran dalam mengatasi antrian panjang dan kenyamanan
2. Memudahkan pihak restoran dalam mengelola stok bahan baku pada restoran
7
BAB II
TINJAUAN PUSTAKA
2.1 PEMBANGKITAN BILANGAN ACAK
Bilangan acak adalah sebuah angka yang tidak diketahui dan tidak diprediksikan
kemunculannya, sementara pembangkitan bilangan acak adalah sebuah algoritma yang
menjalankan fungsi memunculkan bilangan secara acak. Tetapi, dalam praktiknya tidak ada
komputer yang bisa melakukan pengambilan bilangan secara acak murni, tetapi menggunakan
rumus matematika, dikenal dengan pseudorandom number generator (PRNG). Pembangkit
bilangan acak terdiri dari:
1. Table Random Number, yang menggunakan tabel angka sebagai sarana penentu
2. Electronic Random Number, yang banyak diterapkan di perangkat elektronika, dan
3. Congruential Pseudorandom Number, yang dipecah lagi menjadi tiga yaitu:
3.1. Linear Congruential Number/LCN
3.2. Multiplicative Random Number Generation
3.3. Mixed Congruential Random Number Generation
Terdapat 4 sifat dari pembangkitan bilangan acak, yaitu:
a. Independen, dimana variabelnya bebas dari syarat sebagai berikut.
a. Zi-1 merupakan hasil akhir
b. Z0 merupakan bilangan pertama acak tertentu
c. a merupakan angka prima yang bebas dengan ketentuan tersendiri
d. c merupakan angka bebas yang tidak ada kaitannya dengan nilai Zi-1.
b. Uniform, dimana diusahakan setiap pengambilan bilangan acak memiliki
probabilitas yang sama
c. Dense, dimana pengambilan bilangan acak harus memenuhi kaidah probabilitas,
yaitu 0 ≤ RN ≤ 1
d. Efisien, dimana pengambilan bilangan acak harus sesuai dengan variabel-variabel
yang dibutuhkan
2.1.1 LINEAR CONGRUENTIAL NUMBER
Linear congruential random number atau disingkat LCN merupakan sebuah
pseudorandom RNG yang memiliki rumus di bawah ini:
𝑍𝑖 = (𝑎𝑍𝑖−1 + 𝑏)mod 𝑚
8
Zi merupakan nilai ke-i, nilai a adalah faktor pengali, Zi-1 adalah nilai sebelum dari
Zi, b adalah nilai increment dan m adalah nilai modulus. Z0 merupakan nilai kunci
dari simulasi pembangkitan LCG, dikenal dengan umpan atau seed.
2.1.2. MULTIPLICATIVE RNG
Multiplicative RNG adalah sebuah pseudorandom RNG yang memiliki rumus di
bawah ini:
𝑍𝑖 = (𝑎𝑍𝑖−1)mod 𝑚
𝑈𝑖 = 𝑍𝑖/𝑚
Multiplicative RNG hampir memiliki kesamaan dengan RNG berjenis linier
congruential, tetapi yang membedakan adalah pemilihan nilai m (modulus) yang
seperlunya digunakan sebesar mungkin untuk memperbesar rasio dan nilai
increment diatur ke nilai 0. Multiplicative RNG ini juga sering dikenal dengan RNG
Lehmer atau Park-Miller.
2.1.3. MIXED CONGRUENTIAL RNG
Mixed Congruential RNG adalah sebuah pseudorandom RNG yang
menggabungkan dua atau lebih Linear Congruential Number sehingga membentuk
sebuah pembangkit nilai acak yang lebih kompleks. Rumusnya adalah:
𝑍𝑖 = (∑(−1)𝑗−1𝑌𝑖,𝑗
𝑘
𝑗=1
) (mod (𝑚1 − 1))
Dimana:
Zi = nilai ke i, Yi. j merupakan input Zi-1 sebagai i dari LCG ke j, mod m1 – 1
adalah modulus dari pengurangan nilai modulus m dari LCG kepertama (m1)
dikurangi 1 dan hasil penghitungan sigma.
2.2. SIMULASI MONTE CARLO
Simulasi Monte Carlo adalah algoritma yang digunakan untuk menghitung peluang
sesuatu yang tidak pasti. Di beberapa bidang seperti keuangan, manajemen bahkan
untuk membuat model prakiraan, simulasi Monte Carlo digunakan untuk menghitung
besar akibat dari sebuah risiko, keterlambatan dan ketidakpastian dalam sebuah
kejadian.
9
Dalam simulasi Monte Carlo sebuah model dibangun berdasarkan sistem yang
sebenarnya. Setiap variabel dalam model tersebut memiliki nilai yang memiliki
probabilitas yang berbeda, yang ditunjukkan oleh distribusi probabilitas atau biasa
disebut dengan probability distribution function (pdf) dari setiap variabel. Metode
Monte Carlo mengsimulasikan sistem tersebut berulang-ulang kali, ratusan bahkan
sampai ribuan kali tergantung sistem yang ditinjau, dengan cara memilih sebuah nilai
random untuk setiap variabel dari distribusi probabilitasnya. Hasil yang didapatkan dari
simulasi tersebut adalah sebuah distribusi probabilitas dari nilai sebuah sistem secara
keseluruhan.
Contoh sederhana dari Simulasi ini adalah menghitung peluang jumlah dari dua dadu
yang dikocok. Terdapat 36 kombinasi yang berbeda dari dua dadu tersebut, misal
jumlah mata dadu 5 memiliki 4 kombinasi, peluangnya adalah 1/9 atau 0,111 bila sekali
kocok. Tetapi dengan ratusan kali, bahkan ribuan perulangan, peluang menghasilkan
mata dadu 5 bisa berlipat ganda dan tidak lagi menjadi perkiraan saja.
10
BAB III
METODOLOGI PENELITIAN
3.1. Jenis Penelitian
Penelitian yang akan dilakukan ini menggunakan metode penelitian terapan karena
tujuan penelitian ini adalah menerapkan metode monte carlo dalam menghasilkan suatu
Simulasi pada pelayanan Restoran .
3.2. Tempat Penelitian
Tempat Penelitian akan dilakukan di Restoran Gayatri yang bertempat di Ubud,
Gianyar.
3.3. Teknik pengumpulan Data
Data yang berhasil dikumpulkan dan digunakan dalam penelitian ini merupakan data
primer hasil pengamatan secara langsung di cafe gayatri ini. Pola pengamatan dilakukan selama
2 minggu dan mengambil banyak waktu selama 4 jam sibuk operasional yang dibagi atas 2
waktu , yaitu pada pukul 09.00-11.00 dan pukul 18.00 – 20.00 untuk setiap harinya. Data yang
diambil adalah data waktu kedatangan konsumen, serve time dan makanan dan posisi tempat
yang favorit.
3.4. Bahan dan Alat
Alat yang kami gunakan pada penelitian ini adalah sebuah laptop Spesifikasi minimal
laptop dan software yang digunakan untuk membuat program simulasi ini terdiri dari laptop
dengan prosesor quad-core Intel CoreTM i3-2310M 2.10 GHz, RAM 2 GB, hard disk dengan
kapasitas sisa minimum 10 GB, GPU Intel(R) HD Graphics 3000 atau lebih, dan memerlukan
Visual Studio 2013 atau terbaru untuk membuat program simulasi dari kasus yang akan diteliti
ini.
3.5. Metode Penelitian
Penelitian ini merupakan penelitian simulator untuk memperoleh data jumlah
konsumen, yang dilakukan dengan tahapan di bawah ini:
1. Perencanaan simulasi, yaitu tahapan dalam menentukan masalah yang dihadapi
2. Analisis kebutuhan dalam simulasi, yaitu membuat analisis yang dibutuhkan sistem
3. Penerapan simulasi, yaitu membuat proses simulasi hingga selesai
3.6 Hasil pemantauan & Analisis data
Penelitian diselenggarakan di restoran Café Gayatri di Ubud, Gianyar, selama 5 hari
berturut-turut, dari tanggal 26 hingga 30 November 2015. Dari pemantauan tersebut, tersampel
11
jumlah pengunjung yang datang ke restoran tersebut selama 5 hari penuh memantau restoran
tersebut
Hari ke-
Jumlah pengunjung
1 452
2 362
3 159
4 160
5 332
Total 1465
Dari 1.465 pengunjung, kami meminta 150 orang atau 10,2% dari jumlah pengunjung
total yang terdata selama 5 hari, untuk memberitahu menu apa saja yang mereka pesan.
Menu tersebut dideskripsikan dalam bentuk angka untuk memudahkan pendataan.
Berikut daftar menu di bawah ini.
id_menu name price
1 Sate 45000
2 Kebab 65000
3 Steak 80000
4 Barbeque 70000
5 Hidangan Pembuka 40000
6 Sup 35000
7 Salad 35000
8 Sandwich 35000
9 Pizza 60000
10 Es Krim 35000
11 Cocktail 70000
12 Minuman Keras 35000
13 Wine 55000
14 Jus Buah 35000
15 Smoothies 35000
16 Minuman Hangat 25000
12
Dalam wawancara dengan pengunjung tersebut kami mendapatkan data di bawah ini.
No Jml. Pesanan Pesanan A Pesanan B Pesanan C
1 3 2 16 1
2 2 4 8
3 2 13 1
4 1 4
5 3 6 8 15
6 1 13
7 2 7 15
8 1 13
9 1 1
10 3 4 12 16
11 3 9 6 14
12 2 14 13
13 1 15
14 2 2 15
15 3 12 2 2
16 2 9 12
17 1 15
18 1 16
19 2 1 12
20 1 11
21 2 1 7
22 1 16
23 2 11 13
24 1 1
25 3 8 11 16
26 3 10 13 3
27 2 15 7
28 1 7
29 3 9 10 6
30 2 1 10
31 2 1 16
32 1 12
33 3 5 2 1
34 2 11 7
35 1 8
36 2 9 4
37 2 11 16
38 3 1 9 15
39 3 5 2 10
40 2 11 16
41 1 2
42 2 16 15
43 2 12 10
13
44 2 16 8
45 3 1 4 9
46 1 3
47 2 2 5
48 3 13 15 4
49 3 12 14 10
50 3 7 3 3
51 2 2 5
52 1 3
53 2 2 11
54 2 15 16
55 2 16 2
56 1 5
57 3 16 4 4
58 3 16 1 13
59 2 16 11
60 2 16 1
61 2 3 6
62 2 2 6
63 3 8 1 8
64 3 12 12 8
65 2 13 6
66 3 2 11 5
67 1 3
68 2 15 15
69 3 11 3 5
70 2 11 12
71 3 9 7 12
72 2 8 14
73 2 6 13
74 1 4
75 1 4
76 3 1 12 12
77 1 13
78 3 6 10 6
79 1 16
80 2 3 16
81 3 2 1 12
82 2 9 15
83 2 7 9
84 2 12 13
85 1 16
86 1 15
87 1 14
14
88 3 4 2 9
89 1 1
90 1 9
91 3 4 13 4
92 1 11
93 2 10 15
94 2 2 9
95 3 12 1 3
96 3 7 13 2
97 3 11 12 8
98 2 2 1
99 2 15 14
100 2 2 7
101 3 8 16 2
102 3 14 12 11
103 1 11
104 3 10 6 5
105 1 13
106 3 4 1 5
107 1 3
108 2 10 8
109 1 7
110 2 1 1
111 1 8
112 3 11 3 12
113 1 11
114 3 8 14 13
115 3 5 1 12
116 3 9 13 9
117 1 6
118 3 11 16 14
119 2 12 11
120 2 15 13
121 2 15 6
122 3 11 14 6
123 3 12 15 4
124 2 16 3
125 3 14 1 16
126 1 10
127 3 15 12 9
128 2 12 2
129 1 6
130 2 14 1
131 3 3 12 11
132 1 15
133 1 6
134 3 15 10 2
15
135 3 8 7 1
136 3 2 7 11
137 1 2
138 3 8 10 1
139 1 14
140 3 5 1 10
141 3 2 1 14
142 2 6 9
143 2 14 1
144 1 4
145 3 1 16 11
146 2 6 15
147 2 4 14
148 1 14
149 3 7 2 15
150 1 2
GT 308 44 54 52
Berdasarkan data di atas, mayoritas pelanggan restoran yang ditanyakan (54 pembeli)
memesan sebanyak-banyaknya dua menu. Probabilitas dari pesanan tersebut
dijelaskan di bawah ini.
Jml Pesan Prob. Cumulative Urutan
1 0.293333333 0.29333333 01 ke 44
2 0.36 0.65333333 45 ke 98
3 0.346666667 1 99 ke 150
Data sebelumnya yang sama juga mencatat total menu yang dibeli oleh 150 pembeli
tersampel adalah 308 buah. Dari 308 menu pesanan tersebut, kami menghitung
banyaknya pesanan di setiap menunya.
id_menu name Pesanan/menu
A B C GT
1 Sate 12 15 4 31
2 Kebab 16 7 4 27
3 Steak 7 4 3 14
4 Barbeque 10 3 4 17
5 Hidangan Pembuka
5 2 4 11
6 Sup 8 6 3 17
7 Salad 7 7 0 14
8 Sandwich 9 4 3 16
9 Pizza 8 4 4 16
10 Es Krim 5 6 3 14
11 Cocktail 14 5 4 23
12 Minuman Keras 10 10 5 25
13 Wine 7 9 2 18
16
14 Jus Buah 8 6 3 17
15 Smoothies 12 9 3 24
16 Minuman Hangat 12 9 3 24
GT 150 106 52 308
Sate menjadi pesanan paling banyak yaitu 31 pesanan, disusul dengan kebab sebanyak
27 pesanan dan minuman keras sebanyak 25 pesanan. Probabilitas dari data diatas:
Menu Prob. Cumulative Urutan
1 0.100649351 0.100649351 1 ke 31
2 0.087662338 0.188311688 32 ke 58
3 0.045454545 0.233766234 59 ke 72
4 0.055194805 0.288961039 73 ke 89
5 0.035714286 0.324675325 90 ke 100
6 0.055194805 0.37987013 101 ke 117
7 0.045454545 0.425324675 118 ke 131
8 0.051948052 0.477272727 132 ke 147
9 0.051948052 0.529220779 148 ke 163
10 0.045454545 0.574675325 164 ke 177
11 0.074675325 0.649350649 178 ke 200
12 0.081168831 0.730519481 201 ke 225
13 0.058441558 0.788961039 226 ke 243
14 0.055194805 0.844155844 244 ke 260
15 0.077922078 0.922077922 261 ke 284
16 0.077922078 1 285 ke 308
3.7 Metode Pembangkitan & Logika Simulasi
Dalam menentukan banyak antrian dalam 1 hari, kami menggunakan Linear
Congruential Random Number Generator dengan batasan minimum 100 orang, sementara
untuk menciptakan angka menu dan untuk banyaknya pesanan dan menu, menggunakan
metode yang sama (Linear Congruential RNG) dengan pembagian 3 untuk pesanan (maksimal
3, rentang 0-2), dan 16 untuk menu (maksimal 16, rentang 0-15) Logika simulasi yang
digunakan disini adalah:
1. Diasumsikan bahwa maksimal seseorang memesan makanan/minuman maksimal 3
buah, dan makanan tidak membusuk selama waktu simulasi.
2. Pemesanan yang bersifat take-away, pesan-antar dan makan di tempat dianggap sama.
3. Pertama seorang konsumen memesan menu. Banyaknya menu yang dipesan terhitung
sebagai jumlah pesanan.
4. Menu tersebut akan memengaruhi bahan-bahan yang tersedia.
17
5. Pemesanan tersebut memberi pemasukkan neraca keuangan. Sementara jika stok barang
kurang, barang tersebut harus dibeli secara periodik, dan memberikan pengeluaran
kepada neraca keuangan.
6. Hasilnya akan dicatat ke neraca keuangan, dimana bila pemasukan melebihi
pengeluaran, akan memberi tambahan kepada modal (untung), sebaliknya bila
pengeluaran melebihi pemasukan, akan mengurangi banyaknya modal (rugi).
18
BAB IV
HASIL DAN PEMBAHASAN
4.1. Implementasi Simulasi
Model simulasi ini menggunakan Bahasa Pemrograman C# dengan
menggunakan program IDE Microsoft Visual Studio. Dibawah ini adalah
implementasi-implementasi yang sesuai dengan fungsinya.
1. Modul probabilitas pembeli dan pemesan
double[] z1 = new double[waktu+2]; double[] u1 = new double[waktu+2]; a1 = rand(10, 16); m = rand(10, 20); c1 = rand(10, 20); z1[0] = 14;
z1[1] = ((a1 * z1[0]) + c1) % m; u1[1] = (int)Math.Round((z1[1] / m) * 100); for (int i = 1; i <= waktu; i++) { a1 = rand(10, 16); m = rand(10, 20); c1 = rand(10, 20); z1[i] = ((a1 * z1[i - 1]) + c1) % m; u1[i] = (int)Math.Round((z1[i] / m) * 100); //isi Probabilitas keluaran dan Orang yang datang if (i == 1) { orang[1] = rand(0,300); } else { if (u1[i] >= 0 && u1[i] < 15 ) orang[i] = rand(100,200); else if (u1[i] >= 15 && u1[i] < 33) orang[i] = rand(201,300); else if (u1[i] >= 33 && u1[i] < 66) orang[i] = rand(301,350); else if (u1[i] >= 66 && u1[i] < 75) orang[i] = rand(351,400); else if (u1[i] >= 75 && u1[i] < 80) orang[i] = rand(401,450); else if (u1[i] >= 80 && u1[i] < 85) orang[i] = rand(451,500); else if (u1[i] >= 85 && u1[i] < 90) orang[i] = rand(501,550);// isi sampe 8 else if (u1[i] >= 90 && u1[i] <= 100) orang[i] = rand(551,670); } orang1 = orang[i] + orang1; }
19
Modul di atas menjalankan fungsi menentukan jumlah orang yang akan
mendatangi restoran tersebut. Pertama, nilai Z0 sudah ditentukan ke 14, dan
nilai Z1 dihitung dengan rumus LCG, dan dibagi dengan nilai m untuk
menghasilkan nilai probabilitas U1. Hasil probabilitas U1 tersebut
digunakan untuk menentukan jumlah pengunjung yang diprediksi
memasuki restoran tersebut dalam 1 hari, dan hasil jumlah pengunjung
tersebut akan disimpan di datagridview, dan digunakan lagi dalam
penghitungan random pesanan (di bagian berikutnya) dan diulang lagi
hingga batas simulasi.
int pesan; double[] z2 = new double[orang1+2]; double[] u2 = new double[orang1+2]; int[] nan = new int[waktu+1]; a2 = rand(10, 16); m = rand(10, 20); c2 = rand(10, 20); z2[0] = 13; z2[1] = ((a2 * z2[0]) + c2) % m; u2[1] = (int)Math.Round((z2[1] / m) * 100); int[] psn = new int[orang1+1]; for (int i = 1; i <= waktu; i++) { pesan = 0; for (int j=1; j <= orang[i]; j++) { a2 = rand(10, 16); m = rand(10, 20); c2 = rand(10, 20); z2[i] = ((a2 * z2[i - 1]) + c2) % m; u2[i] = u2[i] = (int)Math.Round((z2[i] / m) * 100); if (u2[i] >= 0 && u2[i] <= 44) psn[j] = 1; else if (u2[i] >= 44 && u2[i] <= 80) psn[j] = 2; else if (u2[i] >= 80 && u2[i] <= 100) psn[j] = 3; pesan = pesan + psn[j]; pesan1 = psn[j] + pesan1; } nan[i] = pesan; }
Di modul ini, hasil hitungan pengunjung tadi digunakan kembali ke dalam
perhitungan ini, digunakan untuk menghitung banyaknya pesanan.
Sistemnya sama, dengan melibatkan LCG untuk menghitung Z1, dengan Z0
20
ditetapkan ke angka 13, dan U1 ditarik dengan membagi Z1 dengan nilai m
(ditetapkan ke 21). Setelah nilai U1 dicocokkan dengan jumlah pesanan,
sebagai prediksi jumlah pesanan dalam 1 orang, dan disimpan ke
datagridview dan dilanjutkan ke bagian selanjutnya, yaitu bagian simulasi
dan .
2. Modul probabilitas pilihan menu
int[] pesanan = new int[pesan1+2]; double[] z3 = new double[pesan1+2]; double[] u3 = new double[pesan1+2]; a2 = rand(10, 16); m = rand(10, 20); c2 = rand(10, 20); z3[0] = 53; z3[1] = ((a2 * z2[0]) + c1) % m; ; u3[1] = (int)Math.Round((z2[1] / m) * 100); for (int j = 1; j <=pesan1; j++) { a2 = rand(10, 16); m = rand(10, 20); c2 = rand(10, 20); z3[j] = ((a2 * z3[j - 1]) + c2) % m; u3[j] = (int)Math.Round((z3[j] / m) * 100); //isi suatu Pesanan random berdasarkan probabiltas berapa persentase 0-100 % if (u3[j] >= 0 && u3[j] < 15) pesanan[j] = 1; else if (u3[j] >= 15 && u3[j] < 25) pesanan[j] = 2; else if (u3[j] >= 25 && u3[j] < 40) pesanan[j] = 3; else if (u3[j] >= 40 && u3[j] < 55) pesanan[j] = 4; else if (u3[j] >= 55 && u3[j] < 65) pesanan[j] = 5; else if (u3[j] >= 65 && u3[j] < 80) pesanan[j] = 6; else if (u3[j] >= 80 && u3[j] <= 100) pesanan[j] = 7;//... isi sampe 7 }
Modul di atas menjalankan probabilitas menu yang diambil dari hasil
pesanan sebelumnya. Sistemnya juga sama yaitu dengan menggunakan
metode LCG untuk menghitung Z1 dan seterusnya, dan nilai Z1 dibagi
dengan nilai m untuk membentuk nilai U1 dan seterusnya untuk
menentukan menu yang akan dipilih calon konsumen secara acak. Menu
yang dipilih akan disimpan ke datagridview.
3. Modul simulasi
21
public static readonly Random random = new Random(); public static readonly object synlock = new object(); public int rand(int min, int max) { lock (synlock) { return random.Next(min, max); } }
Modul untuk mencetak nilai random
int p = 1; for (int a = 1; a < waktu; a++) { keluar = 0; masuk = 0; uang = uang + profit; dataGridView3.Rows.Add(1); dataGridView3.Rows[a].Cells[0].Value = a; dataGridView3.Rows[a].Cells[1].Value = orang[a]; dataGridView3.Rows[a].Cells[2].Value = nan[a]; for (int i = 1; i < nan[a]; i++) { //isi rumus stok makanan yang di butuh kan if (pesanan[p] == 1 && say >= 0 && dag >= 0 && saos >= 0) { say = say - 0.1; dag = dag - 0.1; saos = saos - 0.1; masuk = masuk + 45000; p++; } else if (pesanan[p] == 2 && say >= 0 && dag >= 0 && saos >= 0 && minyak >= 0 ) { say = say - 0.1; dag = dag - 0.4; saos = saos - 0.1; minyak = minyak - 0.1; masuk = masuk + 65000; p++; } else if (pesanan[p] == 3 && bu >= 0 && sir >= 0 ) { bu = bu - 0.2; sir = sir - 0.1; masuk = masuk + 35000; p++; } else if (pesanan[p] == 4 && say >= 0 ) { say = say - 0.4; masuk = masuk + 35000; p++; }
22
else if (pesanan[p] == 5 && es >= 0 && sir >= 0 ) { es = es - 0.5; sir = sir - 0.2; masuk = masuk + 35000; p++; } else if (pesanan[p] == 6 && say >= 0 && dag >=0 && saos >= 0 && minyak >= 0 ) { say = say - 0.3; dag = dag - 0.3; saos = saos - 0.1; minyak = minyak - 0.1; masuk = masuk + 60000; p++; } else if (pesanan[p] == 7 && say >= 0 && dag >= 0 && minyak >= 0 ) { say = say - 0.2; dag = dag - 0.2; minyak = minyak - 0.1; masuk = masuk + 35000; p++; } // isi stok jika makanan kurang dari target // gunakan if tidak mengunakan if else if (saos <= targ) { saos = saos + rest; keluar = keluar + (15000 * rest); } if (say <= targ) { say = say + rest; keluar = keluar + (20000 * rest); } if (dag <= targ) { dag = dag + rest; keluar = keluar + (60000 * rest); } if (minyak <= targ) { minyak = minyak + rest; keluar = keluar + (35000 * rest); } if (bu <= targ) { bu = bu + rest; keluar = keluar + (40000 * rest); } if (es <= targ) { es = es + rest; keluar = keluar + (22000 * rest); } if (sir <= targ) { sir = sir + rest;
23
keluar = keluar + (28000 * rest); } } profit = masuk - keluar;
Modul untuk menghitung banyaknya pemasukkan dan pengeluaran dari satu
hari simulasi aktivitas restoran.
tempdate.AddDays(1); we = tempdate.ToLongDateString(); dataGridView1.Rows.Add(1); dataGridView2.Rows.Add(1); dataGridView1.Rows[a].Cells[0].Value = a; dataGridView1.Rows[a].Cells[1].Value = say; dataGridView1.Rows[a].Cells[2].Value = sir; dataGridView1.Rows[a].Cells[3].Value = dag; dataGridView1.Rows[a].Cells[4].Value = ber; dataGridView1.Rows[a].Cells[5].Value = saos; dataGridView1.Rows[a].Cells[6].Value = es; dataGridView1.Rows[a].Cells[7].Value = bu; // dataGridView1.Rows[a].Cells[8].Value = minyak; dataGridView2.Rows[a].Cells[0].Value = a; dataGridView2.Rows[a].Cells[1].Value = uang; dataGridView2.Rows[a].Cells[2].Value = masuk; dataGridView2.Rows[a].Cells[3].Value = keluar; dataGridView2.Rows[a].Cells[4].Value = profit; } p=0; for (int a=1;a<=orang1;a++) { dataGridView4.Rows.Add(1); if (psn[a]==1) { dataGridView4.Rows[a].Cells[0].Value = a; dataGridView4.Rows[a].Cells[1].Value = pesanan[p]; p++; dataGridView4.Rows[a].Cells[2].Value = "-"; dataGridView4.Rows[a].Cells[3].Value="-"; } if(psn[a]==2) { dataGridView4.Rows[a].Cells[0].Value = a; dataGridView4.Rows[a].Cells[1].Value = pesanan[p]; p++; dataGridView4.Rows[a].Cells[2].Value = pesanan[p]; p++; dataGridView4.Rows[a].Cells[3].Value = "-"; } if(psn[a]==3) {
24
dataGridView4.Rows[a].Cells[0].Value = a; dataGridView4.Rows[a].Cells[1].Value = pesanan[p]; p++; dataGridView4.Rows[a].Cells[2].Value = pesanan[p]; p++; dataGridView4.Rows[a].Cells[3].Value = pesanan[p]; p++; } }
Modul memunculkan output
Modul ini terdiri dari 3 bagian, bagian random, finansial dan output. Modul
pertama, yaitu random, digunakan untuk menentukan nilai secara acak.
Nilai acak tersebut diambil menggunakan algoritma tertentu, dengan
batasan mulai dari 1 sampai 9.
Modul selanjutnya adalah menghitung pemasukan dan pengeluaran sebagai
akibat dari pembelian bahan dan penjualan menu yang ada. Setiap ada menu
yang dipesan, maka akan memberi pemasukan pada restoran. Sebaliknya,
setiap pengeluaran terjadi bila jumlah bahan kurang dari 0.
25
4.2. Uji Program
1. Uji Input
Saat user meminta lama jalannya simulasi, modal dan stok, program akan
memberikan output berupa hasil simulasi
2. Uji Output
Program mengeluarkan hasil berupa jumlah pelanggan, pesanan, stok dan
keuangan.
26
Dalam pengujian simulasi yang diselenggarakan selama 9 hari simulasi, kita
mengetahui bahwa dalam sekian hari ini, restoran telah mendatangkan
pelanggan sebagai berikut.
Hari ke Orang Jumlah pesanan
1 86 142
2 349 545
3 397 652
4 322 557
5 348 555
6 554 962
7 395 651
8 135 223
9 178 299
10 487 807
11 259 444
12 369 653
13 236 400
14 170 288
15 405 681
16 160 262
17 307 538
18 323 563
19 251 404
20 301 534
21 198 329
22 368 625
23 328 553
24 341 574
25 218 372
26 279 452
27 114 196
28 487 795
29 348 584
30 239 411
Selain itu, restoran meraup pemasukan sebagai berikut
Hari
ke
Modal Pemasukan Pengeluaran Keuntungan/kerugian
1 500000 6440000 11000000 -4560000
2 -4060000 23050000 9000000 14050000
3 9990000 27970000 10800000 17170000
4 27160000 23940000 10550000 13390000
27
5 40550000 24060000 9125000 14935000
6 55485000 41935000 15425000 26510000
7 81995000 27965000 10500000 17465000
8 99460000 9885000 5450000 4435000
9 103895000 13175000 4550000 8625000
10 112520000 34925000 13425000 21500000
11 134020000 18740000 7125000 11615000
12 145635000 28095000 12375000 15720000
13 161355000 17075000 4875000 12200000
14 173555000 12425000 6125000 6300000
15 179855000 29430000 10375000 19055000
16 198910000 11165000 4550000 6615000
17 205525000 23705000 9500000 14205000
18 219730000 24275000 10000000 14275000
19 234005000 17490000 6300000 11190000
20 245195000 23380000 9125000 14255000
21 259450000 14155000 4925000 9230000
22 268680000 26795000 10500000 16295000
23 284975000 23835000 9500000 14335000
24 299310000 25215000 9000000 16215000
25 315525000 16180000 7300000 8880000
26 324405000 19930000 7625000 12305000
27 336710000 8705000 3875000 4830000
28 341540000 33965000 13250000 20715000
29 362255000 25595000 9300000 16295000
30 378550000 17765000 8000000 9765000
4.3. Analisis Hasil Simulasi
Berdasarkan data yang dihasilkan dari simulasi di atas, maka kita menarik
kesimpulan bahwa:
Jumlah pelanggan: 8.952 orang
Rata-rata pemasukan: Rp 21.700.000,-
Rata-rata pemesanan: 502
1. Pengujian bilangan random dengan run test untuk jumlah pelanggan
No Bilangan Acak Tanda RUN
1
+ 0
1 86 + 0
2 349 + 1
28
3 397 - 0
4 322 - 1
5 348 + 1
6 554 + 1
7 395 - 0
8 135 - 1
9 178 + 0
10 487 + 1
11 259 - 1
12 369 + 1
13 236 - 0
14 170 - 1
15 405 + 1
16 160 - 1
17 307 + 1
18 323 - 1
19 251 + 1
20 301 - 1
21 198 + 1
22 368 - 1
23 328 + 1
24 341 - 1
25 218 + 1
26 279 - 1
27 114 + 1
28 487 - 0
29 348 -
30 239
Total Run 23
2. Menghitung rata-rata dan variansi untuk jumlah pelanggan
𝜇𝑎 =2𝑁 − 1
3=
2 × 30 − 1
3= 20
𝜎2 =16𝑁 − 29
90=
16 × 30 − 29
90= 5,01
𝜎 = 2,24
3. Uji Hipotesis dengan α=0,05 untuk jumlah pelanggan
H0 = 𝜇𝑎= 20, H1 = 𝜇𝑎≠ 20
29
𝑍 =(𝑎 − 𝜇𝑎)
𝜎=
23 − 20
2,24= 1,34
Nilai rentang α adalah -1,96 dengan 1,96 dan nilai Z adalah 1,34, maka
bilangan random ini dinyatakan terbukti sebagai kumpulan bilangan random
bebas
4. Chi-Square untuk jumlah pelanggan
𝐶𝑙𝑎𝑠𝑠 = 1 + 3,3 log 𝑁 = 1 + 3,3 log 30 = 5,87 ≈ 6
𝐿𝑖𝑚𝑆𝑃𝑅 =𝑀𝐴𝑋 − 𝑀𝐼𝑁
𝐶𝑙𝑎𝑠𝑠=
554 − 86
6=
468
6= 78
No Sebaran Frekuensi
Bil. Acak
Frekuensi
Harapan
ChiSquare
1 79-156 3 5 0,4
2 157-234 5 5 0
3 235-312 7 5 0,6
4 313-390 9 5 3,2
5 391-468 3 5 0,4
6 469-545 3 5 0,4
Total 30 30 5
5. Uji Hipotesis Chi-square
α = 0,05 = 11,071
Df = 5
Kesimpulan yang ditarik dari uji Chi-square di atas adalah bahwa nilai
ChiSquare hitung berada di bawah nilai ChiSquare tabel (5<11,071), maka
data uji terbukti uniform.
6. Pengujian bilangan random dengan run test untuk jumlah pesanan
No Bilangan Acak Tanda RUN
1
+ 0
1 142 + 0
2 545 + 1
3 652 - 0
4 557 - 1
5 555 + 1
6 962 - 0
7 651 - 1
30
8 223 + 0
9 299 + 1
10 807 - 1
11 444 + 1
12 653 - 0
13 400 - 1
14 288 + 1
15 681 - 1
16 262 + 0
17 538 + 1
18 563 - 1
19 404 + 1
20 534 - 1
21 329 + 1
22 625 - 1
23 553 + 1
24 574 - 1
25 372 + 1
26 452 - 1
27 196 + 1
28 795 - 0
29 584 -
30 411
Total Run 22
7. Menghitung rata-rata dan variansi untuk jumlah pesanan
𝜇𝑎 =2𝑁 − 1
3=
2 × 30 − 1
3= 20
𝜎2 =16𝑁 − 29
90=
16 × 30 − 29
90= 5,01
𝜎 = 2,24
8. Uji hipotesis dengan α=0,05 untuk jumlah pesanan
H0 = 𝜇𝑎= 20, H1 = 𝜇𝑎≠ 20
𝑍 =(𝑎 − 𝜇𝑎)
𝜎=
22 − 20
2,24= 0,89
Nilai rentang α adalah -1,96 dengan 1,96 dan nilai Z adalah 0,89, maka
bilangan random diatas dinyatakan terbukti sebagai kumpulan bilangan
random bebas
9. Chi-square untuk jumlah pesanan
𝐶𝑙𝑎𝑠𝑠 = 1 + 3,3 log 𝑁 = 1 + 3,3 log 30 = 5,87 ≈ 6
31
𝐿𝑖𝑚𝑆𝑃𝑅 =𝑀𝐴𝑋 − 𝑀𝐼𝑁
𝐶𝑙𝑎𝑠𝑠=
962 − 142
6=
468
6= 136,7 ≈ 137
No Sebaran Frekuensi
Bil. Acak
Frekuensi
Harapan
ChiSquare
1 137-273 4 5 0,2
2 274-410 6 5 0,2
3 411-547 6 5 0,2
4 548-684 11 5 7,2
5 685-821 2 5 0,4
6 822-958 1 5 0,2
Total 30 30 8,4
1. Uji Hipotesis Chi-square
α = 0,05 = 11,071
Df = 5
Kesimpulan yang ditarik dari uji Chi-square di atas adalah bahwa nilai
ChiSquare hitung berada di bawah nilai ChiSquare tabel (8,4<11,071), maka
data uji di atas terbukti uniform.
4.4. Uji Replikasi
Output hasil simulasi sudah diketahui untuk kondisi saat ini. Dari hasil running
1 minggu hari simulasi dengan replikasi sebanyak 10 kali didapat output tabel
sebagai berikut
Replikasi
ke
Rata-rata Orang Rata-rata Pesanan Rata-rata Omzet
1 415 692 30.030.800
2 329 564 24.458.000
3 359 591 25.600.000
4 286 473 20.290.800
5 279 466 20.090.000
6 263 430 18.642.500
7 220 366 15.745.800
8 235 407 17.698.000
9 243 418 18.025.800
10 248 417 17.940.000
Cumulative
Mean
287.7 482.4 20.852.170
Dari hasil uji replikasi diatas, dapat disimpulkan bahwa rata-rata orang dan
pesananan sudah terdata dengan jelas. Dimana rata-rata orang berjumlah sekitar
287,7 orang dan rata-rata pesanan sekitar 482,4. Dari kedua rata-rata tersebut
kita mendapatkan pula rata-rata omzet sesuai dari perhitungan awal replikasi.
32
BAB V PENUTUP
5.1. Kesimpulan
Berdasarkan hasil dari simulasi yang dilakukan dapat ditarik kesimpulan bahwa dalam
melakukan proses simulasi hal penting yang harus dilakukan adalah melakukan pengamatan
untuk mendapatkan data agar proses simulasi sesuai dengan keadaan yang sebenarnya. Dimana
dalam kasus ini dalam proses simulasi dilakukan untuk mendapatkan keuntungan optimal dari
sebuah café gayatri dengan mempertimbangkan jumlah stok barang, pesanan, dan pelanggan
masuk setiap harinya dengan menggunakan bilangan acak atau random.
5.2. Saran
Pada aplikasi ini masih menggunakan aplikasi berbasis desktop, sehingga tidak dapat
diakses dari mana saja. Sebelum melakukan simulasi agar benar-benar diperhatikan dari segi
data simulasi dengan keadaan sebenarnya karena akan sangat mempengaruhi jalannya
simulasi.
33
DAFTAR PUSTAKA
Wikipedia, 2014 Metode Monte Carlo,
https://id.wikipedia.org/wiki/Metode_Monte_Carlo
Harry, 2014 Simulasi Monte Carlo,
https://keluarandanmasukan.wordpress.com/pemrograman-simulasi/simulasi-
monte-carlo/
Nurfaisal, 2014 Rancang Bangun Aplikasi Simulasi Antrian
https://prezi.com/zt5o68qkkrno/rangcang-bangun-aplikasi-simulasi-antrian-
pelayanan-restoran/
Marantha, 2007 Usulan Rancangan Sistem Antrian yang Optimal
http://repository.maranatha.edu/4421/