i
SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN PENGADAAN
STOK BARANG UNTUK TOSERBA DENGAN METODE SIMPLE
MOVING AVERAGE
(Studi Kasus : Toko Serba Ada “Ainun Mart”)
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh :
Andreas Dian Sukarno Putro
125314113
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
DECISION SUPPORT SYSTEMS FOR SUPPLYING MINI MARKET’S
GOODS STOCK WITH SIMPLE MOVING AVERAGE METHOD
(Case Study : Mini Market “Ainun Mart”)
A Final Project
Presented as Fulfillment of The Requirement
To Obtain Sarjana Komputer Degree
In Informatics Engineering Study Program
Oleh :
Andreas Dian Sukarno Putro
125314113
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
Sistem Pendukung Pengambilan Keputusan Pengadaan Stok Barang Untuk
Toserba Dengan Metode Simple Moving Average
(Studi Kasus : Toko Serba Ada “Ainun Mart”)
ABSTRAK
Toserba “Ainun mart” memiliki banyak data penjualan. Data penjualan ini
sering dibuang karena dianggap tidak berguna. Sebenarnya, data penjualan dapat
sangat berguna jika diolah dengan benar. Salah satu pengolahan data penjualan
adalah membuat sistem pedukung pengambilan keputusan peramalan data stok
dari data penjualan bulanan toserba. Tujuan peramalan stok untuk
menyeimbangkan stok yang berada di gudang sehingga tidak berlebih dan tidak
kurang sehingga konsumen tidak lari ke kompetitor.
Metode simple moving average digunakan untuk sistem karena data
penjualan memiliki pola acak. Tahap pertama dalam penghitungan metode simple
moving average dalam sistem yang dibuat adalah mengambil data penjualan dari
24 bulan sebelum periode peramalan. Dilanjutkan dengan menghitung peramalan
dengan menggunakan data 3 periode. Penghitungan dibagi menjadi 4 variasi
penghitungan. Dari semua penghitungan, dicari Mean Absolut Percent Error
(MAPE) terkecil. Peramalan yang memiliki MAPE terkecil akan ditunjukkan
kepada pengguna sistem.
Hasil akhir sistem menunjukkan bahwa algoritma moving average dapat
digunakan untuk meramalkan stok barang, tetapi tidak semua peramalan memiliki
hasil yang baik karena datanya yang banyak dan pola yang bervariasi. Oleh karena
itu, pada setiap peramalan juga dicantumkan perkiraan error peramalan untuk
pertimbangan pengambilan keputusan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
Decision Support Systems For Supplying Mini Market’s Goods Stock With
Simple Moving Average Method
(Case Study : Mini Market “Ainun Mart”)
ABSTRACT
“Ainun mart” minimarket has a lot of sales data. The sales data is often
discarded because they are not useful. Actually, the sales data can be very useful
if treated properly. One of the sales data processing is to make the decision
support system of data forecasting from the minimarket’s monthly sales data. The
purpose of forecasting the stock is to balance the stock in the warehouse so that no
overload and no less so that consumers do not go into competitors.
Simple moving average method is used for systems because the sales data
has a random pattern. The first stage in the calculation of simple moving average
method in the system is taking sales data from the 24 months before the forecast
period. Followed by calculating forecasting using data from three periods.
Calculations are divided into 4 variation calculation. From all the counting,
searched the smallest Mean Absolute Percent Error (MAPE). Forecasting which
has the smallest MAPE will be shown to users.
The final results show that the algorithm system moving average can be
used to predict stock items, but not all of forecasting have good results because
the data are many and varied patterns. Therefore, at each forecasting, forecasting
error estimates are also listed for consideration decision.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas
berkat, rahmat dan penyertaan-Nya sehingga penulis dapat menyelesaikan skripsi
dengan judul “Sistem Pendukung Pengambilan Keputusan Pengadaan Stok
Barang Untuk Toserba Dengan Metode Simple Moving Average (Studi Kasus :
Toko Serba Ada “Ainun Mart”)”.
Penulisan skripsi ini diajukan untuk memenuhi syarat memperoleh gelar
sarjana computer program studi S1 jurusan Teknik Informatika Universitas Sanata
Dharma. Penulis menyadari bahwa skripsi ini masih jauh dari kata sempurna, oleh
karena itu penulis mengharapkan kritik dan saran yang membangun dari pembaca
demi kesempurnaan skripsi ini.
Skripsi ini dapat selesai tidak lepas dari pentingnya berbagai pihak,
sehingga pada kesempatan ini penulis mengucapkan terimakasih yang sebesar-
besarnya kepada semua yang terlibat memberikan dukungan baik secara langsung
maupun tidak langsung. Ucapan terimakasih saya ajukan kepada :
1. Tuhan Yesus selaku pembimbing hidup saya yang selalu menuntun
saya sehingga sampai pada titik ini.
2. Kedua Orang tua, Bapak VL Susilo dan Ibu Nanik Purwati yang selalu
mendukung saya, memberikan motivasi, serta memberikan dukungan
moral dan finansial yang tidak terhitung jumlahnya.
3. Kedua saudara penulis, Astrid Dian Ikasari dan Johanes Dian
Triatmaja yang memberikan keceriaan dan kebersamaanya dikala
penat menulis skripsi.
4. Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku pembimbing yang
selalu setia memberikan pengarahan serta solusi dalam pengerjaan
skripsi ini hingga selesai.
5. Odilia Chandra Okvantina yang selalu setia menemani, mendukung,
memberikan semangat ketika penulis sedang terpuruk dan memarahi
ketika pemulis sedang malas mengerjakan skripsi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
6. Semua teman-teman Teknik Informatika angkatan 2012 dan
khususnya TI kelas D yang telah berjuang bersama dan saling berbagi
keceriaan, semangat dan inspirasi.
7. Semua pihak yang telah membantu penulis dalam proses penyelesian
skripsi baik yang membantu secara langsung maupun tidak langsung.
Penulis menyadari bahwa masih banyak kekurangan dalam penulisan
skripsi ini, namun penulis berharap skripsi ini dapat bermanfaat untuk menambah
wawasan maupun referensi bagi pembaca.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
HALAMAN JUDUL ........................................................................................... i
HALAMAN JUDUL ........................................................................................... ii
HALAMAN PERSETUJUAN ............................................................................ iii
HALAMAN PENGESAHAN ............................................................................. iv
PERNYATAAN KEASLIAN KARYA ............................................................. v
LEMBAR PERNYATAAN PERSETUJUAN ................................................... vi
ABSTRAK .......................................................................................................... vii
ABSTRACT ........................................................................................................ viii
KATA PENGANTAR ........................................................................................ ix
DAFTAR ISI ....................................................................................................... xi
DAFTAR GAMBAR .......................................................................................... xiii
DAFTAR TABEL ............................................................................................... xiv
BAB I
PENDAHULUAN .............................................................................................. 1
1.1 Latar Belakang ........................................................................................... 1
1.2 Rumusan Masalah ...................................................................................... 2
1.3 Tujuan Penelitian ....................................................................................... 2
1.4 Batasan Masalah ........................................................................................ 2
1.5 Manfaat Penelitian ..................................................................................... 3
1.6 Metode Penelitian ...................................................................................... 3
1.7 Sistematika Penulisan ................................................................................ 4
BAB II
LANDASAN TEORI .......................................................................................... 5
2.1 Sistem Pendukung Pengambilan Keputusan (SPPK) ................................ 5
2.2 Peramalan .................................................................................................. 6
BAB III
ANALISA DAN PERANCANGAN SISTEM ................................................... 15
3.1 Fase Intelegensi ......................................................................................... 15
3.2 Fase Desain ................................................................................................ 15
3.3 Fase Pemilihan ........................................................................................... 15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
3.4 Fase Implementasi ..................................................................................... 16
BAB IV
FASE IMPLEMENTASI .................................................................................... 26
4.1 Manajemen Data ........................................................................................ 26
4.2 Manajemen Model ..................................................................................... 27
4.3 Manajemen Dialog..................................................................................... 56
BAB V
HASIL PENGUJIAN DAN ANALISA HASIL ................................................. 60
5.1 Pengujian dan Hasil ................................................................................... 60
5.2 Kelebihan dan Kekurangan Sistem ............................................................ 62
BAB VI
KESIMPULAN DAN SARAN ........................................................................... 63
6.1 Kesimpulan ................................................................................................ 63
6.2 Saran .......................................................................................................... 63
DAFTAR PUSTAKA ......................................................................................... 64
LAMPIRAN ........................................................................................................ 65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
DAFTAR GAMBAR
Gambar 3.1 : ER Diagram ................................................................................... 17
Gambar 3.2 : Use Case Diagram Software Tester .............................................. 19
Gambar 3.3 : Use Case Diagram software User ................................................. 19
Gambar 3.4 : Class Diagram Software Tester ..................................................... 20
Gambar 3.5 : Class Diagram Software User ....................................................... 20
Gambar 3.6 : Sequence Diagram Software Tester .............................................. 21
Gambar 3.7 : Sequence Diagram Software User ................................................ 22
Gambar 3.8 : Activity Diagram Software Tester ................................................ 23
Gambar 3.9 : Activity Diagram Software User ................................................... 24
Gambar 3.10 : Halaman Dialog Software Tester ................................................ 24
Gambar 3.11 : Halaman Dialog Software User .................................................. 25
Gambar 4.1 : Tabel BarangAinun ....................................................................... 26
Gambar 4.2 : Tabel PenjualanAinun ................................................................... 26
Gambar 4.3 : Tabel BarangPredik ....................................................................... 27
Gambar 4.4 : User Interface SimulasiTest .......................................................... 56
Gambar 4.5 : User Interface UserFrame ............................................................. 57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
DAFTAR TABEL
Tabel 3.1 Barang (BarangAinun) ....................................................................... 18
Tabel 3.2 Penjualan (PenjualanAinun) ............................................................... 18
Tabel 3.3 Peramalan (BarangPredik) .................................................................. 18
Tabel 5.1 Peramalan MA Normal ....................................................................... 60
Tabel 5.2 Peramalan MA Variasi 1 ..................................................................... 60
Tabel 5.3 Peramalan MA Variasi 2 ..................................................................... 61
Tabel 5.4 Peramalan MA Variasi 3 ..................................................................... 61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Dengan kemajuan teknologi informasi dewasa ini, kebutuhan akan
informasi yang akurat dan dapat menunjang untuk seseorang atau
kelompok sangat dibutuhkan. Kebutuhan akan informasi yang tinggi harus
diimbangi dengan pengadaan data yang memadai, valid dan berjumlah
banyak agar informasi yang dihasilkan menjadi akurat. Kemampuan
teknologi informasi dalam mengumpulkan, menganalisis dan mengolah
data sangat cepat dan akurat meninggalkan metode tradisional yang lebih
lambat dan tidak dapat menagani data dalam jumlah besar.
Pemanfaatan data yang ada dalam sistem informasi untuk
menunjang pengambilan keputusan, tidak hanya mengandalkan data saja,
tetapi data juga harus digali potensi-potensi informasi yang ada.
Pengolahan data untuk mengambil informasi berguna dalam membantu
meramalkan apa yang akan terjadi selanjutnya sehingga dapat diambil
keputusan yang tepat untuk merancang sebuah strategi.
Salah satu penerapan peramalan untuk mendapatkan informasi baru
adalah peramalan stok. Peramalan stok dapat diterapkan dalam
pengelolaan toserba (Toko Serba Ada). Toserba mempunyai banyak data
transaksi yang dilakukan tiap hari yang dapat mengurangi ketersediaan
stok dan data tersebut disimpan dalam database. Dengan transaksi yang
begitu banyak, terkadang ada toserba yang membuang data tersebut
setelah setahun berlalu, seperti toserba yang dipakai untuk studi kasus
penelitian ini yaitu Ainun mart. Data yang dibuang sebenarnya sangat
berharga bagi pemilik toko untuk membantu membuat strategi bisnis.
Salah satunya mengenai pengendalian stok dengan cara meramalkan
terlebih dahulu stok yang akan diambil untuk periode selanjutnya. Oleh
karena itu, dibutuhkan suatu sistem untuk meramalkan stok barang untuk
periode yang akan datang. Peramalan ini bertujuan untuk menjaga
kestabilan stok agar tidak berlebih yang dapat membuat barang expired
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
dan merugikan pemilik toko atau stok kurang yang akan membuat
pelanggan lari ke toserba kompetitor.
Maka pada tugas akhir ini akan dilakukan penelitian analisa data
transaksi pada toserba dengan menggunakan metode simple moving
average yang diaplikasikan pada sebuah sistem pendukung pengambilan
keputusan pengadaan stok yang diharapkan dapat memberikan
pengetahuan untuk mengatur kestabilan stok. Pengambilan keputusan
pengadaan stok yang dimaksud adalah meramalkan stok barang dengan
metode simple moving average. Metode simple moving average digunakan
karena data barsifat fluktuatif, random dan polanya sulit deketahui.
1.2 Rumusan Masalah
Berdasarkan permasalahan yang ada,maka rumusan masalah yang dapat
disimpulkan adalah :
1. Bagaimana metode simple moving average mampu meramalkan stok
barang pada data transaksi penjualan di suatu toserba?
2. Berapa presentase error dari peramalan stok yang telah diramalkan
dengan metode simple moving average?
1.3 Tujuan Penelitian
Penelitian dalam tugas akhir ini memiliki tujuan, yaitu membuat suatu
sistem pendukung pengambilan keputusan pengadaan stok barang dengan
menerapkan metode simple moving average dari analisis data transaksi
sehingga mendapatkan informasi tentang ramalan stok barang.
1.4 Batasan Masalah
Batasan masalah pada tugas akhir ini adalah :
1. Proses analisa data dilakukan dengan data di Ainun mart pada periode
transaksi penjualan tahun 2014 dan 2015.
2. Metode yang digunakan dalam penelitian adalah metode simple
moving average.
3. Pengguna sistem adalah pemilik mini market.
4. Data yang diolah diperoleh dari data yang telah tersimpan dalam
database.
5. Periode data yang digunakan adalah periode 3 bulan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.5 Manfaat Penelitian
Adapun beberapa manfaat yang diharapkan dari penulisan tugas akhir ini
adalah :
1. Bagi Penulis
Penulis dapat lebih mengetahui cara menerapkan ilmu-ilmu yang telah
dipelajari selama ini dalam merancang dan membuat sebuah sistem
dengan teknik peramalan simple moving average.
2. Bagi Pengguna Sistem
Pengguna sistem diharapkan bisa mendapatkan informasi yang
berguna tentang peramalan stok barang di gudang sehingga dapat
merencanakan pengadaan stok untuk periode penjualan berikutnya.
1.6 Metode Penelitian
Metode yang digunakan menggunakan adalah paradigma waterfall dengan
tahapan sebagai berikut:
1. Analisis Kebutuhan
Menganalisa kebutuhan untuk merancang sistem dan mengumpulkan
data-data yang dibutuhkan untuk meramalkan stok.
2. Perancangan Sistem
Merancang sebuah rancangan sistem yang akan diterjemahkan
kedalam perangkat lunak. Perancangan yang dilakukan antara lain
perancangan desain database, user interface dan rancangan
implementasi program.
3. Penulisan Program
Melakukan penerjemahan rancangan yang telah dibuat kedalam bahasa
pemrograman.
4. Pengujian
Pengujian dilakukan untuk menemukan dan menganalisis program
yang telah dibuat sehingga program dapat sesuai dengan yang
diharapkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.7 Sistematika Penulisan6
BAB I PENDAHULUAN
Bab ini menjelaskan latar belakang masalah, rumusan
masalah, tujuan penelitian, batasan masalah, manfaat
penelitian, metode penelitian, serta sitematika penulisan
laporan dari penelitian yang akan dilakukan.
BAB II LANDASAN TEORI
Bab ini berisi penjelasan tentang teori-teori yang digunakan
untuk memecahkan masalah yang akan diteliti.
BAB III ANALISA DAN PERANCANGAN SISTEM
Bab ini membahas mengenai analisa dan perancangan
sistem yang akan dibuat.
BAB IV FASE IMPLEMENTASI
Bab ini berisi penjelasan mengenai implementasi sistem
sesuai dengan analisis dan rancangan sistem ke dalam
bentuk program.
BAB V HASIL PENGUJIAN DAN ANALISA HASIL
Bab ini berisi hasil pengujian dan analisa dari implementasi
sistem yang telah dibuat.
BAB VI KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang telah diperoleh dari
penelitian yang telah dikerjakan serta saran untuk
pengembangan sistem selanjutnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
LANDASAN TEORI
2.1 Sistem Pendukung Pengambilan Keputusan (SPPK)
2.1.1 Pengertian SPPK
Sistem pendukung keputusan atau DSS (Decision Support
System) diciptakan oleh Glory dan Scoot Morton pada tahun 1971.
Gagasan tersebut didasarkan pada perlunya suatu kerangka kerja
untuk mengarahkan aplikasi komputer kepada pengambilan
keputusan manajemen
Pengambilan keputusan adalah sebuah proses memilih
tindakan (di antara berbagai alternatif) untuk mencapai suatu tujuan
atau beberapa tujuan (Turban, 2005).
2.1.2 Proses Pengambilan Keputusan
Dalam proses pengambilan keputusan disarankan untuk
mengikuti fase-fase proses pengambilan keputusan. Fase-fase
tersebut dibagi menjadi 4, yaitu :
1. Fase Intelegensi
Merupakan fase pemindaian masalah, kebutuhan atau
kesempatan yang ada dan yang akan dipecahkan menggunakan
sistem yang akan dibuat.
2. Fase Desain
Merupakan fase untuk merancang cara-cara yang akan
digunakan untuk memecahkan masalah. Pada tahap ini,
perancang dapat melihat dari berbagai sudut untuk mencari
pemecahan masalah.
3. Fase Pilihan
Merupakan Fase untuk memilih alternatif keputusan yang
terbaik dari sekian banyak cara yang sudah ditemukan pada
tahap sebelumnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
4. Fase Implementasi
Merupakan fase untuk mengimplementasikan sistem yang telah
dirancang pada tahap-tahap sebelumnya.
2.1.3 Komponen-komponen SPPK
Aplikasi SPPK dapat terdiri dari 4 subsistem. Setiap sub
sistem berkaitan satu dengan yang lainnya. Berikut adalah 4
subsistem tersebut (Turban, 2005) :
1. Subsistem manajemen data
Subsistem manajemen data memasukkan satu database yang
berisi data yang relevan untuk situasi dan dikelola oleh
perangkat lunak yang disebut DBMS (Database Management
System) .
2. Subsistem manajemen model
Merupakan paket perangkat lunak yang memasukkan berbagai
model yang diperlukan dalam sistem sehingga memberikan
kapabilitas analitik dan management perangkat lunak yang
tepat.
3. Subsistem manajemen dialog
Memuat fasilitas bagi pengguna untuk dapat berkomunikasi
dengan sistem melalui antarmuka yang meliputi piranti
masukan dan keluaran.
4. Subsistem manajemen pengetahuan
Subsistem ini dapat mendukung semua subsistem lain atau
bertindak sebagai suatu komponen independen yang
memberikan intelegensi untuk memperbesar kemampuan
pengetahuan si pengambil keputusan.
2.2 Peramalan
2.2.1 Pengertian Peramalan
Peramalan (forecasting) merupakan alat bantu yang penting
dalam perencanaan yang efektif dan efisien khususnya dalam
bidang ekonomi. Dalam organisasi modern mengetahui keadaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
yang akan datang tidak saja penting untuk melihat yang baik atau
buruk tetapi juga bertujuan untuk melakukan persiapan peramalan.
Peramalan adalah prediksi, proyeksi atau estimasi tingkat
kejadian yang tidak pasti dimasa yang akan datang (Yamit,
2003:13).
Peramalan merupakan prediksi nilai-nilai sebuah variabel
berdasarkan kepada nilai yang diketahui dari variabel tersebut atau
variabel yang berhubungan (Makridakis, 2003:24).
Beberapa faktor umum lingkungan yang mempengaruhi peramalan,
yaitu :
1. Kondisi umum bisnis dan ekonomi.
Hal ini berkaitan dengan perkembangan bisnis dan ekonomi
secara global.
2. Reaksi dan tindakan pesaing
Kita dapat memperhatikan segala reaksi dan tindakan pesaing
agar pola peramalan yang ditetapkan dapat mengimbangi
pesaing tersebut.
3. Tindakan pemerintah
Tindakan pemerintah secara makro ekonomi mengakibatkan
pola peramalan dapat berubah.
2.2.2 Tipe Peramalan
Berikut ini adalah tipe peramalan bedasarkan kegunaannya
(Alfatah, 1998):
1. Peramalan fasilitas
Peramalan fasilitas akan menghasilkan keluaran maksimum
sesuai yang diharapkan. Jangkauan waktu peramalannya adalah
jangkauan waktu perancanaan fasilitas dan waktu konstruksi
ditambah waktu pengembangan fasilitas.
2. Peramalan perencanaan produksi
Peramalan perencanaan produksi menghasilkan hasil volume
produk sesuai dengan tipe yang dipilih. Jangkauan waktu
peramalannya adalah beberapa siklus pembuatan atau paling
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
sedikit satu siklus permintaan dengan penjualan menurut
periode tertentu.
3. Peramalan produk
Peramalan produk menghasilkan satuan produk yang dijual.
Jangkauan waktu ditambah paling sedikit satu siklus
pembuatan.
2.2.3 Langkah Peramalan
Dalam melakukan peramalan, dibutuhkan langkah-langkah untuk
melakukannya. Secara ringkas ada tiga langkah yang harus
dilakukan dalam merancang suatu metode peramalan, yaitu:
1. Melakukan analisis data record untuk mendapatkan gambaran
tentang pola dari data yang bersangkutan.
2. Memilih metode yang digunakan. Metode untuk teknik
peramalan ada bermacam-macam. Pemilihan metode harus
berdasarkan kebutuhan karena tidak semua metode dapat
dianggap baik. Selain kebutuhan, pola dari data juga
memengaruhi pemilihan metode yang akan digunakan.
3. Proses transformasi dari data record menjadi peramalan
dengan metode yang telah dipilih. Jika diperlukan, maka dapat
diubah sesuai dengan kebutuhan.
2.2.4 Prinsip Peramalan
Metode peramalan merupakan metode yang tidak memiliki tingkat
akurasi 100%. Terdapat empat karakteristik atau prinsip peramalan,
yaitu (Arnold and Chapman, 2004):
1. Peramalan biasanya salah
Kesalahan dalam peramalan tidak bisa dielakkan, jadi
sebaiknya kesalahan juga harus diprediksi. Kesalahan biasanya
terjadi karena tujuan dari peramalan itu sendiri adalah melihat
masa depan yang belum diketahui sehingga bisa salah.
2. Setiap peramalan seharusnya menyertakan estimasi kesalahan
Estimasi kesalahan harus disertakan dalm setiap peramalan.
Sertakan besaran estimasi kesalahan yang dapat diukur sebagai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
tingkat kepercayaan. Tingkat estimasi kesalahan dapat disajikan
dalam bentuk presentase besarnya kesalahan sebagai rentang
nilai minimum dan maksimum.
3. Peramalan akan lebih akurat untuk kelompok atau grup
Perilaku dari setiap data satuan dalam grup adalah acak bahkan
ketika grup dalam keadaan stabil. Contohnya ketika meramal
suatu kelas, akan lebih sulit jika meramal satu orang murid
daripada meramalkan rata-rata keseluruhan kelas. Sehingga
dapat dikatakan bahwa peramalan kelompok akan lebih akurat
daripada meramalkan data satuan.
4. Peramalan lebih akurat untuk jangka waktu yang lebih dekat
Peramalan yang dilakukan untuk janka panjang akan memiliki
tingkat kesalahan yang lebih tinggi karena tidak diketahuinya
kejadian-kejadian yang akan terjadi dimasa yang akan datang.
Jadi akan lebih baik jika meramalkan dalam jangka waktu yang
lebih pendek dengan melakukan pendekata situasi yang terjadi
pada saat peramalan dilakukan.
2.2.5 Metode-metode peramalan
Peramalan jika dilihat dari sifat-sifat peramalan dapat dibedakan
menjadi dua macam, yaitu (Makridakis & Wheelwright, 1999) :
1. Peramalan kualitatif
Model peramalan yang digolongkan sebagai model kualitatif
adalah:
a. Dugaan manajemen
Dugaan manajemen adalah metode peramalan dimana
peramalan berdasarkan pada pertimbangan manajemen.
Metode ini cocok untuk situasi sensitif terhadap intuisi dari
satu atau sekelompok kecil orang yang karena
pengalamannya mampu memberikan opini yang kritis dan
relevan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
b. Riset pasar
Riset pasar adalah metode peramalan berdasarkan hasil
survey pasar dari tenaga pemasaran produk atau yang
mewakili hasil survey pasar tersebut. Metode ini
menggunakan informasi dari pelanggan untuk melihat
rencana pembelian produk di masa yang akan datang.
c. Metode kelompok terstruktur
Metode kelompok terstruktur adalah metode peramalan
berdasarkan proses konvergensi opini beberapa orang atau
ahli secara interaktif dan membutuhkan fasilitator untuk
menyimpulkan hasil dari peramalan.
d. Analogi historis
Analogi historis merupakan metode peramalan beradarkan
pola data record dari sebuah produk yang disamakan secara
analogi.
2. Peramalan kuantitatif
Peramalan kuantitatif adalah peramalan dengan dasar
kuantitatif pada masa lampau. Peramalan kuantitatif dibedakan
menjadi dua, yaitu:
a. Metode kausal
Merupakan metode dengan mengembangkan suatu model
sebab akibat antara permintaan yang akan diramalkan
dengan variabel-variabel yang dapat memengaruhinya.
Metode kausal dibagi lagi menjadi tiga bagian:
1) Metode korelasi regresi
Metode ini cocok bila digunakan untuk meramalkan
dalam jangka pendek dan data yang digunakan
merupakan kumpulan dari data beberapa tahun.
Peramalan dengan metode ini sering digunakan untuk
peramalan penjualan, peramalan keuntungan, peramalan
permintaan, dan peramalan keadaan ekonomi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
2) Metode ekonometrik
Metode ini cocok bila digunakan untuk meramalkan
kumpulan data beberapa tahun dan dengan peramalan
jangka pendek atau jangka panjang. Peramalan dengan
metode ini sering digunakan untuk peramalan penjualan
menurut kelas produksi dan peramalan keadaan
ekonomi masyarakat meliputi permintaan harga atau
penawaran.
3) Metode input-output
Metode ini cocok bila digunakan untuk meramalkan
kumpulan data 10-15 tahun dengan peramalan jangka
panjang. Peramalan dengan metode ini sering digunakan
untuk peramalan penjualan perusahaan dan peramalan
produksi dari sector atau sub-sektor industri.
b. Metode deret berkala (Time Series)
Merupakan metode dengan menganalisis suatu pola
hubungan antara variabel yang akan diramalkan dengan
variabel waktu yang dapat dipengaruhi keempat komponen
utama tren (trend), siklus (cycle), musiman (seasonal) dan
acak (random). Dalam metode deret berkala, dibagi lagi
menjadi dua metode yaitu metode moving average dan
metode ARIMA (box Jenkins). Kemudian ada metode
winter, smoothing, metode dekomposisi dan metode
proyeksi tren dengan regresi.
2.2.6 Metode Deret Berkala
Merupakan metode peramalan yang meramalkan penjualan atau
permintaan pada periode yang akan datang dengan mengolah data
record. Metode yang termasuk deret berkala adalah :
1. Metode moving average
Metode moving average merupakan metode untuk
mengembangkan suatu model berdasarkan hasil rata-rata dari
sebagian besar penelitian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
2. Metode weighted moving average
Metode weighted moving average merupakan metode dari
pengembangan moving average. Pembobotan nilai perhitungan
belum melakukan penghitungan rata-rata dari sebagian besar
penelitian.
3. Metode exponantial smoothing
Metode ini menerapkan sistem pembobotan pada data record
untuk melakukan peramalan. Pembobotan berubah menurun
secara eksponensial bergantung dari data record.
Berdasarkan pembobotannya, metode exponential smoothing
dibagi menjadi 3 jeni yaitu:
a. Metode single exponential smoothing
Pembobotan pada model ini berdasarkan level.
b. Metode double exponential smoothing
Metode ini seperti metode single exponential smoothing,
tetapi ditambahkan unsur tren pada pembobotan
penghitungannya.
c. Metode triple exponential smoothing
Metode ini dikenal juga dengan nama winter’s method.
Metode ini adalah pengembangan dari double exponential
smoothing dengan menambahkan unsur seasonal pada
pembobotan penghitungannya.
4. Metode Trend
Metode trend adalah metode peramalan dengan menggunakan
kuadrat terkecil yang membentuk trend garis lurus melalui
persamaan.
5. Metode seasonal trend
Metode seasonal trend dibagi menjadi dua, yaitu:
a. Metode seasonal
Metode seasonal merupakan metode pramalan dengan
membagi periode yang disimulasikan menjadi empat bagian
untuk mencari index yang akan digunakan untuk peramalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Metode ini dibagi menjadi dua jenis, yaitu multiplicative
dan additive (Lurgio, 1997).
b. Metode seasonal trend
Metode seasonal trend adalah perpaduan antara metode
trend dan musiman. Data yang didapatkan akan disesuaikan
dengan musiman, kemudian deseasonalized data tersebut
dihitung dengan metode trend.
2.2.7 Metode Simple Moving Average
Metode ini merupakan metode peramalan yang
menggunakan rata-rata dari suatu data dimana ditentukan terlebih
dahulu suatu titik-titik data pada outset sehingga rata-rata dapat
dihitung untuk memperkirakan data yang baru tersebut. Dengan
munculnya data yang baru, maka nilai rata-rata yang baru dapat
dihitung dengan menghilangkan data yang terlama dan
menambahkan data yang baru (Lincoln, 2001).
Menurut Spyros dkk (1993), untuk menghilangkan
pengaruh data masa lalu terhadap nilai peramalan, maka harus
ditentukan terlebih dahulu berapa jumlah nilai observasi masa lalu
yang dimasukkan untuk menghitung nilai tengah. Untuk
menggambarkan prosedur ini maka diperlukan suatu metode, yaitu
rata-rata bergerak (Moving Average) karena setiap muncul nilai
observasi baru, nilai rata-rata baru dapat dihitung dengan
membuang nilai observasi yang paling tua dan menghasilkan nilai
observasi terbaru.
Rumus single moving average dapat ditunjukkan sebagai
berikut:
dimana:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Sedangkan untuk menghitung kesalahan digunakan Mean
Absolute Percent Error (MAPE). MAPE merupakan metode
perhitungan kesalahan yang dihitung dengan mencari presentase
kesalahan dari setiap periode peramalan kemudian membaginya
dengan jumlah data/periode yang digunakan. Berikut merupakan
persamaan dari MAPE :
dimana :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
BAB III
ANALISA DAN PERANCANGAN SISTEM
3.1 Fase Intelegensi
Toserba Ainun mart selalu membuang data record penjualan, disisi
lain data tersebut sangat berguna untuk dikaji dan digunakan untuk
mengendalikan stok yang ada didalam gudang. Untuk itu, dibutuhkan
sebuah sistem yang dapat mengolah data penjualan tersebut menjadi data
yang bernilai untuk pemilik toko. Sistem yang dibuat memiliki
kemampuan untuk mendukung pengambilan keputusan pengadaan stok
barang di toserba Ainun mart. Data yang dibutuhkan adalah jumlah
transaksi penjualan selama 2 tahun sebelumnya yang digolongkan sesuai
nama barang dan digolongkan sesuai bulan transaksi dilakukan.
Selanjutnya, data yang telah masukkan akan diolah. Output yang
dikeluarkan berupa hasil pengambilan keputusan pengadaan stok.
3.2 Fase Desain
Salah satu metode untuk sistem pendukung pengambilan keputusan
pengadan stok barang adalah metode peramalan. Metode peramalan jika
dilihat dari sifatnya dibagi menjadi 2 yaitu peralaman secara kualitatif dan
kuantitatif. Dalam hal ini, peramalan stok barang termasuk dalam metode
kuantitatif karena baik input dan outputnya berupa angka.
Pola data penjualan toserba biasanya berupa trend, siklus, musiman
dan acak sehingga peramalan penjualan termasuk dalam metode deret
berkala. Dalam metode deret berkala, dapat dipecah lagi kedalam beberapa
metode lagi, yaitu : Metode moving average, metode weighted moving
average, metode exponential smoothing, metode trend, dan metode
seasonal trend.
3.3 Fase Pemilihan
Data penjualan dari 10 sample barang pada toserba Ainun mart
selama tahun 2014 dan 2015 menunjukkan bahwa pola penjualannya acak.
Pola penjualan yang acak dapat diramalkan dengan menggunakan metode
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
moving average. Sehingga dalam penelitian ini, digunakan metode simple
moving average untuk meramalkan pengadaan stok.
Metode simple moving average yang digunakan dalam penelitian
ini menggunakan n = 3. Penggunaan n yang kecil untuk meningkatkan
keakuratan karena berhubungan dengan faktor-faktor kejadian terdekat
yang dapat mempengaruhi peramalan. Dalam penelitian ini, dicoba juga
kedalam beberapa variasi pemodelan data yang baru dengan metode
simple moving average.
Variasi pemodelan data yang baru dibuat untuk memenuhi
kemungkinan jika pola data suatu barang memiliki pola yang sama setiap
tahunnya. Variasi dibagi menjadi 3 yaitu variasi 1, variasi 2 dan variasi 3.
Inti dari variasi pemodelan data yang baru adalah sama, yaitu peramalan
menggunakan data yang telah ditentukan dari tahun sebelumnya untuk
dirata-rata sehingga dapat memperkirakan data yang baru. Yang
membedakan dari ketiga variasi adalah target dari peramalan. Contoh data
yang diambil adalah data bulan 1, 2, dan 3 pada tahun 2014, kemudian
dirata-rata. Target dari variasi 1 adalah bulan 1 tahun 2015, target dari
variasi 2 adalah bulan 2 tahun 2015 dan target dari variasi 3 adalah bulan 3
tahun 2015.
3.4 Fase Implementasi
3.4.1 Manajemen data
1. Perancangan Konseptual
Sistem pendukung pengambilan keputusan memiliki 3 entitas,
antara lain : entitas kategori barang, entitas penjualan, entitas
prediksi. Entitas kategori barang memilik relasi dengan entitas
penjualan, sedangkan entitas prediksi tidak mempunyai relasi
dengan entitas lain.
a. Entitas Barang
Entitas barang menyimpan data yang berkaitan dengan
kriteria khusus mengenai kode barang dan nama barang.
Entitas ini dibuat untuk mengelompokkan barang sesuai
kriterianya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
b. Entitas Penjualan
Entitas Penjualan menyimpan data yang berkaitan dengan
transaksi penjualan berupa kode penjualan. Dalam proses
peramalan, data pada entitas ini dibutuhkan untuk
menghitung peramalan.
c. Entitas Peramalan
Entitas Peramalan menyimpan data yang berkaitan dengan
peramalan barang mengenai data penjualan dan hasil
peramalannya. Entitas peramalan merupakan sebuah entitas
untuk membantu dalam proses penghitungan peramalan.
BarangAinun PenjualanAinun
BarangPredik
memiliki
KodeBarang KodePenjualanNamaBarang
Jumlah
no
Penjualan
Prediksi
N1
Gambar 3.1 : ER Diagram
2. Perancangan Logikal
BarangAinun
-KodeBarang : varchar(20) PK
-NamaBarang : varchar(20)
Penjualan Ainun
-KodePenjualan : varchar(20) PK
-jumlah : number
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
BarangPredik
-No : number
-Penjualan : number
-Prediksi : number
3. Perancangan Fisikal
Nama Field Tipe Data Lebar Keterangan
KodeBarang varchar 20 kode barang yang
dijual di toserba
Ainun.
NamaBarang varchar 20 nama dari barang
Tabel 3.1 Barang (BarangAinun)
Nama Field Tipe Data Lebar Keterangan
KodePenjualan varchar 20 kode penjualan
selama 1 bulan
KodeBarang number - kode dari barang
yang terjual
Jumlah number - jumlah penjualan
selama 1 bulan
Tabel 3.2 Penjualan (PenjualanAinun)
Nama Field Tipe Data Lebar Keterangan
No number - nomor dari prediksi
Penjualan number - data penjualan
Prediksi number - hasil dari
peramalan
Tabel 3.3 Peramalan (BarangPredik)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
3.4.2 Manajemen Model
1. Usecase diagram
a. Software Tester
user
System
Setting mode
Peramalan
Setting Target
Peramalan
Lihat hasil
Peramalan
Input Data
Penjualan
Gambar 3.2 : Use Case Diagram Software Tester
b. Software User
user
System
Lihat Kategori
Barang
Setting Target
Peramalan
Lihat hasil
Peramalan
Input Data
Penjualan
Gambar 3.3 : Use Case Diagram software User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
2. Class Diagram
a. Software Tester
+CatatPredik()
+CariSelisih()
+CariSelisih1()
+CariSelisih2()
+CariSelisih3()
+CariPredik1()
+CariPredik2()
+CariPredik3()
-No
-Penjualan
-Prediksi
BarangPredik
Gambar 3.4 : Class Diagram Software Tester
b. Software User
+CatatPredik()
+CariSelisih()
+CariSelisih1()
+CariSelisih2()
+CariSelisih3()
+CariPredik1()
+CariPredik2()
+CariPredik3()
-No
-Penjualan
-Prediksi
BarangPredik
+CariBarangPrepared()
+LihatSeluruhBarang()
-KodeBarang
-NamaBarang
BarangAinun
+CariData()
-KodePenjualan
-KodeBarang
-Jumlah
PenjualanAinun
Gambar 3.5 : Class Diagram Software User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
3. Sequence diagram
a. Software Tester
SimulasiTest SimulasiKontrolsimulasiClass MAsimulasiDBUser ActionEvent
1 : Masukkan data()
2 : ButtonPredikActionPerformed()3 : simpan data()
4 : simpan bulan()
5 : simpan nama bulan()
6 : simpan tahun()
7 : simpan vasriasi()
8 : hitungMA()
9 : ambil data()
10 : getAvg()
11 : hasil prediksi()
12 : catatPredik()
13 : kembali()
14 : mape()15 : cariPredik()
16 : data Prediksi()
17 : cariSelisih()
18 : hasil MAPE()
19 : simpan hasil()
20 : tampil hasil()
Gambar 3.6 : Sequence Diagram Software Tester
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
b. Software User
UserFrame UserKontrolUserClass MAUserDBuser Action Event
1 : Masukkan data()
2 : ButtonPredictActionPerformed()
3 : simpan kode barang()
4 : simpan nama barang()
5 : simpan bulan()
6 : simpan nama bulan()
7 : simpan tahun()
8 : hitungMA()
9 : cariData()
10 : data penjualan()
11 : getAvg()
12 : hasil prediksi()
13 : catatPredik()
14 : kembali()
15 : mapeNormal()
16 : cariSelisih()
17 : hasil MAPE()
18 : kembali()
19 : mapeVar1()20 : cariPredik1()
21 : data Prediksi()
22 : cariSelisih1()
23 : hasil MAPE()
24 : kembali()
25 : mapeVar2()26 : cariPredik2()
27 : data Prediksi()
28 : cariSelisih2()
29 : hasil MAPE()
30 : kembali()
31 : mapeVar3()32 : cariPredik3()
33 : data Prediksi()
34 : cariSelisih3()
35 : hasil MAPE()
36 : simpanhasil()
37 : tampil hasil()
Gambar 3.7 : Sequence Diagram Software User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
4. Activity diagram
a. Software Tester
Halaman SimulasiTest
masukkan data
klik Button Prediksi hitungMA mapeNormal
mode=normal
else
mode = Variasi 1
SistemUser
hitungMA mapeVar1
else
mode = Variasi 2
hitungMA mapeVar2
else
mode = Variasi 3
hitungMA mapeVar3
tampil hasil
Gambar 3.8 : Activity Diagram Software Tester
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
b. Software User
Halaman SimulasiTest
masukkan data
klik Button Prediksi hitungMA mapeNormal
SistemUser
mapeVar1
mapeVar2
mapeVar3cari MAPE terendah
Tampil hasil
Gambar 3.9 : Activity Diagram Software User
3.4.3 Manajemen dialog
1. Tampilan Software Tester
Mode Prediksi
Target Prediksi Bulan Tahun n Bulan
Prediksi Batal Keluar
Tahun
Januari
Februari
Maret
April
Mei
Juni
Juli
Agustus
September
Oktober
November
Desember
Tahun
Januari
Februari
Maret
April
Mei
Juni
Juli
Agustus
September
Oktober
November
Desember
Gambar 3.10 : Halaman Dialog Software Tester
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
2. Tampilan Software User
SPPK Pengadaan Stok Barang
Kode Barang
Nama Barang
Bulan Tahun
Prediksi
Batal
Close
Hasil Prediksi
Kode Barang Nama Barang
Gambar 3.11 : Halaman Dialog Software User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
BAB IV
FASE IMPLEMENTASI
4.1 Manajemen Data
Langkah pertama dalam mengimplementasikan program yang telah
dirancang sebelumnya adalah membuat database. Database dibuat untuk
menampung data yang akan dipakai atau telah dihasilkan oleh sistem
kedalam tabel untuk disimpan sebagai record. Tabel yang dibuat ada 3
yaitu :
1. Tabel BarangAinun
Gambar 4.1 : Tabel BarangAinun
Gambar 4.1, merupakan tabel dari BarangAinun beserta
keterangannya. Tabel BarangAinun merupakan tabel dummy dari tabel
barang di ainun mart. Tabel ini berisi data barang apa saja yang dijual
oleh ainin mart. Tabel ini hanya memilik 2 kolom yaitu kolom
kodeKategori(PK) dan namaKategori karena dalam sistem yang dibuat
hanya membutuhkan 2 kolom tersebut.
2. Tabel PenjualanAinun
Gambar 4.2 : Tabel PenjualanAinun
Gambar 4.2 diatas, merupakan table dari PenjualanAinun beserta
keterangannya. Tabel PenjualanAinun merupakan tabel dummy dari
tabel penjualan bulanan di ainun mart. Tabel ini berisi data penjualan
bulanan barang ainun mart yang dikategorikan per barang dan per
bulan. Tabel memiliki 3 kolom, yaitu kolom kodePenjualan(PK),
kodeBarang dan jumlah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
3. Tabel BarangPredik
Gambar 4.3 : Tabel BarangPredik
Gambar 4.3 diatas, merupakan table dari BarangPredik beserta
keterangannya. Tabel BarangPredik merupakan tabel bantu untuk
program yang telah dibuat. Fungsi dari tabel ini adalah menyimpan
sementara data penjualan dan hasil prediksi untuk mempermudah
penghitungan MAPE. Tabel ini memiliki 3 kolom, yaitu kolom no,
penjualan, prediksi.
4.2 Manajemen Model
4.2.1 Software Tester
Berikut adalah fungsi-fungsi dan tahapan-tahapan peramalan pada
software tester :
1. Button Prediksi
Merupakan sebuah tombol untuk melakukan prediksi dari data-
data yang telah dimasukkan. Pada tombol prediksi dibagi
menjadi 3 kondisi sesuai dengan mode peramalan yang telah
dipilih sebelumnya. Langkah fungsi buttonPrediksi() dalam
melakukan prediksi peramalan adalah sebagai berikut :
a. Melakukan peramalan
public void hitungMA(simulasiClass sm) throws
SQLException {
int[] windowSizes = {sm.getVar()};
double[] data = {sm.getJan1(),
sm.getFeb1(), sm.getMar1(), sm.getApr1(),
sm.getMei1(), sm.getJun1(),
sm.getJul1(), sm.getAgt1(), sm.getSep1(),
sm.getOkt1(), sm.getNov1(),
sm.getDes1(), sm.getJan2(), sm.getFeb2(),
sm.getMar2(), sm.getApr2(),
sm.getMei2(), sm.getJun2(), sm.getJul2(),
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
sm.getAgt2(), sm.getSep2(),
sm.getOkt2(), sm.getNov2(), sm.getDes2()};
int i = 1;
for (int windSize : windowSizes) {
MA ma = new MA(windSize);
for (double x : data) {
if (x != 0) {
sm.setNo(i);
ma.newNum(x);
sm.setData(x);
double p = ma.getAvg();
System.out.println("Next
number = " + x + ", SMA = " + p);
sm.setPrediksi(p);
simulasiDB.getKoneksi().catatPredik(sm);
}
i++;
}
}
}
b. Menghitung dengan algoritma moving average
package testerPack;
import java.util.LinkedList;
import java.util.Queue;
public class MA {
private final Queue<Double> window = new
LinkedList<Double>();
private final int period;
private double sum;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
public MA(int period) {
assert period > 0 : "Period must be a
positive integer";
this.period = period;
}
public void newNum(double num) {
sum += num;
window.add(num);
if (window.size() > period) {
sum -= window.remove();
}
}
public double getAvg() {
if (window.isEmpty()) {
return 0; // technically the
average is undefined
}
return sum / window.size();
}
}
c. Memasukkan hasil prediksi kedalam tabel bantu
public void catatPredik(simulasiClass sim)
throws SQLException {
PreparedStatement pstmt = null;
try {
conn.setAutoCommit(false);
String sql = "update barangPredik
set penjualan=? ,prediksi=? "
+ "where no=?";
pstmt = conn.prepareStatement(sql);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
pstmt.setDouble(3, sim.getNo());
pstmt.setDouble(2,
sim.getPrediksi());
pstmt.setDouble(1, sim.getData());
pstmt.executeUpdate();
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
d. Mencari prediksi
public void cariPredik1(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
barangPredik where "
+ "no=?";
statement =
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
conn.prepareStatement(sql);
statement.setInt(1, sim.getBulan()
+ 2);
result = statement.executeQuery();
if (result.next()) {
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
sim.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariPredik2(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
barangPredik where "
+ "no=?";
statement =
conn.prepareStatement(sql);
statement.setInt(1, sim.getBulan()
+ 1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
result = statement.executeQuery();
if (result.next()) {
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
sim.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariPredik3(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
barangPredik where "
+ "no=?";
statement =
conn.prepareStatement(sql);
statement.setInt(1,
sim.getBulan());
result = statement.executeQuery();
if (result.next()) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
sim.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
e. Mencari MAPE dan menampilkan hasil
public void mapeNormal(simulasiClass sm) throws
SQLException {
int setno = sm.getNo() - 6;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
simulasiDB.getKoneksi().cariSelisih(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
sm.setJum(jum);
System.out.println("no :" + no + "
mape :" + sm.getMAPE()
+ " jumlah Mape:" +
sm.getJum());
}
int mapes = sm.getJum() / 6;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
sm.setJum(mapes);
sm.setHasil("Hasil prediksi untuk bulan
" + sm.getNamaBulan()
+ " tahun " + sm.getTahun() +
"\n adalah " + sm.getPrediksi()
+ "\n MAPE : " + sm.getJum() +
"%");
}
public void mapeVar1(simulasiClass sm)
throws SQLException {
simulasiDB.getKoneksi().cariPredik1(sm);
int setno = sm.getBulan() + 6;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
simulasiDB.getKoneksi().cariSelisih1(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
sm.setJum(jum);
System.out.println("no :" + no + "
mape :" + sm.getMAPE()
+ " jumlah Mape:" +
sm.getJum());
}
int mapes = sm.getJum() / 6;
sm.setJum(mapes);
sm.setHasil("Hasil prediksi untuk bulan
" + sm.getNamaBulan()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
+ " tahun " + sm.getTahun() +
"\n adalah " + sm.getPrediksi()
+ "\n MAPE : " + sm.getJum() +
"%");
}
public void mapeVar2(simulasiClass sm)
throws SQLException {
simulasiDB.getKoneksi().cariPredik2(sm);
int setno = sm.getBulan() + 6;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
simulasiDB.getKoneksi().cariSelisih2(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
sm.setJum(jum);
System.out.println("no :" + no + "
mape :" + sm.getMAPE()
+ " jumlah Mape:" +
sm.getJum());
}
int mapes = sm.getJum() / 6;
sm.setJum(mapes);
sm.setHasil("Hasil prediksi untuk bulan
" + sm.getNamaBulan()
+ " tahun " + sm.getTahun() +
"\n adalah " + sm.getPrediksi()
+ "\n MAPE : " + sm.getJum() +
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
"%");
}
public void mapeVar3(simulasiClass sm)
throws SQLException {
simulasiDB.getKoneksi().cariPredik3(sm);
int setno = sm.getBulan() + 6;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
simulasiDB.getKoneksi().cariSelisih3(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
sm.setJum(jum);
System.out.println("no :" + no + "
mape :" + sm.getMAPE()
+ " jumlah Mape:" +
sm.getJum());
}
int mapes = sm.getJum() / 6;
sm.setJum(mapes);
sm.setHasil("Hasil prediksi untuk bulan
" + sm.getNamaBulan()
+ " tahun " + sm.getTahun() +
"\n adalah " + sm.getPrediksi()
+ "\n MAPE : " + sm.getJum() +
"%");
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
f. Mencari selisih error
public void cariSelisih(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, sim.getNo() +
1);
statement.setInt(2, sim.getNo());
statement.setInt(3, sim.getNo() +
1);
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
sim.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
}
}
public void cariSelisih1(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, sim.getNo());
statement.setInt(2, sim.getNo() -
10);
statement.setInt(3, sim.getNo());
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
sim.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
throw exception;
}
}
public void cariSelisih2(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, sim.getNo());
statement.setInt(2, sim.getNo() -
11);
statement.setInt(3, sim.getNo());
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
sim.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
conn.rollback();
throw exception;
}
}
public void cariSelisih3(simulasiClass sim)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, sim.getNo());
statement.setInt(2, sim.getNo() -
12);
statement.setInt(3, sim.getNo());
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
sim.setMAPE(p);
}
conn.commit();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
2. Button Batal
Merupakan sebuah tombol yang akan mengembalikan semua
text field dalam sistem simulasi menjadi bersih kembali
sehingga tidak harus menghapusnya satu persatu.
3. Button Keluar
Merupakan sebuah tombol yang fungsinya adalah untuk
menutup sistem.
4.2.2 Software User
Berikut adalah fungsi-fungsi dan tahap-tahap peramalan pada
software user :
1. Button Prediksi
Merupakan sebuah tombol untuk melakukan prediksi. Berbeda
dengan software tester, software user akan langsung
menghitung keempat mode peramalan sekaligus. Keempat
mode peramalan yang dihitung akan dicari MAPE terkecil dan
MAPE terkecil itulah yang akan dikeluarkan sebagai hasil
peramalan. Langkah fungsi buttonPrediksi() dalam melakukan
prediksi peramalan adalah sebagai berikut :
a. Mencari data penjualan dalam database untuk diproses
public void cariData(UserClass usr) throws
SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
String sql = "Select jumlah from
penjualanAinun where "
+ "kodePenjualan=?";
statement =
conn.prepareStatement(sql);
statement.setString(1,
usr.getKodePjualan());
result = statement.executeQuery();
if (result.next()) {
p = result.getString("jumlah");
Double pr =
Double.parseDouble(p);
usr.setPjualan(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
b. Melakukan peramalan
public void hitungMA(UserClass sm) throws
SQLException {
int[] windowSizes = {3};
double[] data = new double[24];
for (int i = 0; i < 24; i++) {
if (sm.getBulan() < 10) {
sm.setBlnStr("0" +
sm.getBulan());
} else {
String bln =
String.valueOf(sm.getBulan());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
sm.setBlnStr(bln);
}
UserDB.getKoneksi().cariData(sm);
sm.setBulan(sm.getBulan() + 1);
if (sm.getBulan() == 13) {
sm.setBulan(1);
sm.setTahun(sm.getTahun() + 1);
}
data[i] = sm.getPjualan();
}
int i = 1;
for (int windSize : windowSizes) {
MA ma = new MA(windSize);
for (double x : data) {
if (x != 0) {
sm.setNo(i);
ma.newNum(x);
sm.setData(x);
double p = ma.getAvg();
sm.setPrediksi(p);
UserDB.getKoneksi().catatPredik(sm);
}
i++;
}
}
}
c. Menghitung dengan algoritma moving average
package testerPack;
import java.util.LinkedList;
import java.util.Queue;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
public class MA {
private final Queue<Double> window = new
LinkedList<Double>();
private final int period;
private double sum;
public MA(int period) {
assert period > 0 : "Period must be a
positive integer";
this.period = period;
}
public void newNum(double num) {
sum += num;
window.add(num);
if (window.size() > period) {
sum -= window.remove();
}
}
public double getAvg() {
if (window.isEmpty()) {
return 0; // technically the
average is undefined
}
return sum / window.size();
}
}
d. Memasukkan hasil prediksi kedalam table bantu
public void catatPredik(UserClass usr) throws
SQLException {
PreparedStatement pstmt = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
try {
conn.setAutoCommit(false);
String sql = "update barangPredik
set penjualan=? ,prediksi=? "
+ "where no=?";
pstmt = conn.prepareStatement(sql);
pstmt.setDouble(3, usr.getNo());
pstmt.setDouble(2,
usr.getPrediksi());
pstmt.setDouble(1, usr.getData());
pstmt.executeUpdate();
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
e. Mencari prediksi
public void cariPredik1(UserClass usr) throws
SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
barangPredik where "
+ "no=?";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo1() +
14);
result = statement.executeQuery();
if (result.next()) {
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
usr.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariPredik2(UserClass usr)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
barangPredik where "
+ "no=?";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo1() +
13);
result = statement.executeQuery();
if (result.next()) {
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
usr.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariPredik3(UserClass usr)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
String p = "";
try {
conn.setAutoCommit(false);
String sql = "Select prediksi from
barangPredik where "
+ "no=?";
statement =
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
conn.prepareStatement(sql);
statement.setInt(1,
usr.getNo1()+12);
result = statement.executeQuery();
if (result.next()) {
p =
result.getString("prediksi");
Double pr =
Double.parseDouble(p);
usr.setPrediksi(pr);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
f. Mencari MAPE dan menampilkan hasil
public void mapeNormal(UserClass sm) throws
SQLException {
int setno = sm.getNo() - 6;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
sm.setMAPE1(0);
sm.setJum(0);
for (int j = 0; j < 6; j++) {
UserDB.getKoneksi().cariSelisih(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
jum = jum + mape;
}
public void mapeVar1(UserClass sm) throws
SQLException {
UserDB.getKoneksi().cariPredik1(sm);
int setno = sm.getNo1() + 18;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
UserDB.getKoneksi().cariSelisih1(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
}
int mapes = jum / 6;
if (mapes < sm.getMAPE1()) {
sm.setJum(sm.getPrediksi());
sm.setMAPE1(mapes);
}
}
public void mapeVar2(UserClass sm) throws
SQLException {
UserDB.getKoneksi().cariPredik2(sm);
int setno = sm.getNo1() + 18;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
UserDB.getKoneksi().cariSelisih2(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
}
int mapes = jum / 6;
if (mapes < sm.getMAPE1()) {
sm.setJum(sm.getPrediksi());
sm.setMAPE1(mapes);
}
}
public void mapeVar3(UserClass sm) throws
SQLException {
UserDB.getKoneksi().cariPredik3(sm);
int setno = sm.getNo1() + 18;
int jum = 0;
sm.setNo(setno);
sm.setMAPE(0);
for (int j = 0; j < 6; j++) {
UserDB.getKoneksi().cariSelisih3(sm);
int no = sm.getNo() + 1;
sm.setNo(no);
int mape = sm.getMAPE();
jum = jum + mape;
}
int mapes = jum / 6;
if (mapes < sm.getMAPE1()) {
sm.setJum(sm.getPrediksi());
sm.setMAPE1(mapes);
}
int stok = (int) sm.getJum();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
sm.setHasil("Rekomendasi pengadaan stok
untuk \nbarang "
+sm.getNamaBrg()+"\npada bulan
"+ sm.getNamaBulan()
+ " tahun " + sm.getTahun() +"
adalah "+stok);
}
g. Mencari selisih error
public void cariSelisih(UserClass usr) throws
SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo() +
1);
statement.setInt(2, usr.getNo());
statement.setInt(3, usr.getNo() +
1);
result = statement.executeQuery();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
if (result.next()) {
p = result.getInt("mape");
usr.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariSelisih1(UserClass usr)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo());
statement.setInt(2, usr.getNo() -
10);
statement.setInt(3, usr.getNo());
result = statement.executeQuery();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
if (result.next()) {
p = result.getInt("mape");
usr.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariSelisih2(UserClass usr)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo());
statement.setInt(2, usr.getNo() -
11);
statement.setInt(3, usr.getNo());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
usr.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
public void cariSelisih3(UserClass usr)
throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
int p = 0;
try {
conn.setAutoCommit(false);
String sql = "select ((ABS((select
penjualan from barangpredik "
+ "where no=?)-(select
prediksi from "
+ "barangpredik where
no=?))/(select penjualan "
+ "from barangpredik where
no=?))*100) as MAPE from dual";
statement =
conn.prepareStatement(sql);
statement.setInt(1, usr.getNo());
statement.setInt(2, usr.getNo() -
12);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
statement.setInt(3, usr.getNo());
result = statement.executeQuery();
if (result.next()) {
p = result.getInt("mape");
usr.setMAPE(p);
}
conn.commit();
} catch (SQLException exception) {
conn.rollback();
throw exception;
}
}
2. Button Batal
Merupakan sebuah tombol yang akan mengembalikan semua
text field dalam sistem simulasi menjadi bersih kembali
sehingga tidak harus menghapusnya satu persatu.
3. Button Keluar
Merupakan sebuah tombol yang fungsinya adalah untuk
menutup sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
4.3 Manajemen Dialog
4.3.1 Software Tester
Gambar 4.4 : User Interface SimulasiTest
Sistem simulasi merupakan sistem yang dibuat untuk
melakukan percobaan-percobaan penghitungan dengan beberapa
permodelan terhadap barang tertentu. Sistem simulasi jika
dijalankan akan memiliki tampilan seperti diatas, yaitu tampilan
dari form simulasiTest. SimulasiTest memiliki 5 panel sesuai
dengan urutan dalam menjalankan sistem simulasi.
Urutan pertama adalah mode prediksi. Panel mode prediksi
memiliki pilihan untuk memilih mode prediksi. Mode prediksi
yang dapat dipilih adalah mode normal, variasi1, variasi2, dan
variasi3. Setiap mode prediksi yang ada memiliki algoritma yang
sama tetapi dengan variasi pemodelan data yang berbeda.
Urutan kedua adalah menentukan target prediksi. Target
prediksi dibagi menjadi 3 text field yaitu text field bulan, tahun dan
n bulan. Text field bulan dan tahun adalah target bulan pada tahun
tertentu yang ingin diramalkan. Text field n bulan adalah berapa
banyaknya n yang akan dihitung dalam algoritma. Khusus untuk n
bulan akan dapat diisi jika mode prediksi yang dipilih adalah mode
normal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Urutan ketiga adalah panel data penjualan. Panel data
penjualan dibagi menjadi 2 yaitu data pada tahun target prediksi
dan data sebelum tahun target prediksi. Masing-masing panel
berisi text field bulan yang akan diisi sesuai data penjualan pada
bulan tersebut. Text field akan terbuka dari januari pada tahun-1
sebelum target prediksi sampai bulan-1 pada tahun target prediksi
yang telah ditentukan pada panel target prediksi.
Urutan keempat adalah panel button. Panel button memiliki
3 button yaitu button Prediksi, batal dan keluar. Button Prediksi
fungsinya akan memprediksi data yang telah diinputkan oleh user.
Button Batal memiliki fungsi me-reset semua field menjadi kosong
seperti pertama membuka form simulasiTest. Kemudian button
terakhir adalah button keluar, fungsinya untuk keluar dari sistem.
Urutan kelima adalah panel hasil. Panel ini berisi informasi
hasil dari proses peramalan yang telah dilakukan, seperti hasil
peramalan dan nilai MAPE. Informasi hasil akan keluar setelah
dilakukan peramalan.
4.3.2 Software User
Gambar 4.5 : User Interface UserFrame
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Sistem user merupakan sistem yang akan diterapkan
kepada user di ainun mart. User interface yang dibuat terlihat
simple dan lebih minimalis dari sistem simulasi karena data yang
akan diolah diambil dari dummy database sehingga tidak perlu
memasukkan data barang secara manual. Pada sistem ini, semua
variasi pemodelan data peramalan akan dilakukan dan ditampilkan
hasil MAPE terkecil sehingga user hanya akan menerima informasi
hasil peramalan dengan persentase error terkecil sebagai
pertimbangan pengambilan keputusan. Sistem user memiliki
beberapa panel yaitu panel barang, target prediksi, table barang,
button, dan hasil.
Panel barang berisi text field kode barang dan nama barang.
Fungsi dari panel ini adalah untuk menentukan barang apa yang
akan diramalkan. Untuk menentukan barang hanya perlu
memasukkan kode barang lalu tekan enter. Jika kode barang valid
maka nama barang akan otomatis terisi. Sebaliknya, jika kode
barang tidak valid maka akan muncul notifikasi error.
Panel target prediksi berisi bulan dan tahun. Input bulan
dan tahun digunakan untuk menentukan bulan dan tahun berapa
prediksi yang ingin diketahui. Selain untuk menentukan bulan dan
tahun peramalan,target prediksi juga digunakan untuk menentukan
penjualan pada bulan dan tahun berapa saja yang akan dimasukkan
kedalam algoritma peramalan.
Selanjutnya, ada tabel barang. Tabel barang berisi kategori
barang apa saja yang dijual di ainun mart. Tabel barang berguna
sebagai pedoman dalam mengisi kode barang jika user lupa atau
tidak tahu kode barang dari barang yang akan diramalkan.
Panel button berisi tombol-tombol yang akan melakukan
aksi jika diklik. Panel button memilik 3 button yaitu button
prediksi, batal dan keluar. Button prediksi fungsinya akan
memprediksi data yang telah diinputkan oleh user. Button batal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
memiliki fungsi me-reset semua field menjadi kosong seperti
pertama membuka form userFrame. Kemudian button terakhir
adalah button keluar, fungsinya untuk keluar dari sistem.
Panel yang terakhir adalah panel hasil. Panel ini berisi
informasi hasil dari peramalan, seperti hasil peramalan dan nilai
MAPE. Informasi hasil akan keluar setelah dilakukan peramalan.
Informasi ini akan sangat berguna bagi user untuk menentukan
besaran jumlah stok yang akan diambil untuk bulan tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
BAB V
HASIL PENGUJIAN DAN ANALISA HASIL
5.1 Pengujian dan Hasil
Penguji sistem dilakukan dengan melakukan peramalan dan
pengukuran MAPE terhadap beberapa data penjualan. Pengujian yang
dilakukan menggunakan 10 data barang pada periode penjualan tahun
2014 dan 2015. Pengujian dilakukan 4 kali dengan menggunakan variasi
pemodelan data yang berbeda. Berikut adalah hasil dari percobaan-
percobaan yang telah dilakukan :
1. MA Normal
Tabel 5.1 Peramalan MA Normal
Percobaan pertama dengan menggunakan algoritma MA normal dan
menggunakan n=3. Dari percobaan yang dilakukan, dihasilkan 17
peramalan dengan nilai absolut error berada dibawah 10%. Rata-rata
error peramalan terendah berdasarkan bulan peramalan adalah pada
bulan 3 tahun 2015, sedangkan berdasarkan item barang ditemukan
bahwa beras mentik per kg yang paling rendah rata-rata error-nya.
2. Variasi 1
Tabel 5.2 Peramalan MA Variasi 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Percobaan pertama dengan menggunakan algoritma MA dan
menggunakan variasi pemodelan data 1. Dari percobaan yang
dilakukan, dihasilkan 21 peramalan dengan nilai absolut error berada
dibawah 10%. Rata-rata error peramalan terendah berdasarkan bulan
peramalan adalah pada bulan 5 tahun 2015, sedangkan berdasarkan
item barang ditemukan bahwa indomie goreng yang paling rendah
rata-rata error-nya.
3. Variasi 2
Tabel 5.3 Peramalan MA Variasi 2
Percobaan pertama dengan menggunakan algoritma MA dan
menggunakan variasi pemodelan data 2. Dari percobaan yang
dilakukan, dihasilkan 15 peramalan dengan nilai absolut error berada
dibawah 10%. Rata-rata error peramalan terendah berdasarkan bulan
peramalan adalah pada bulan 7 tahun 2015, sedangkan berdasarkan
item barang ditemukan bahwa marlboro yang paling rendah rata-rata
error-nya.
4. Variasi 3
Tabel 5.4 Peramalan MA Variasi 3
Percobaan pertama dengan menggunakan algoritma MA dan
menggunakan variasi pemodelan data 3. Dari percobaan yang
dilakukan, dihasilkan 13 peramalan dengan nilai absolut error berada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
dibawah 10%. Rata-rata error peramalan terendah berdasarkan bulan
peramalan adalah pada bulan 7 tahun 2015, sedangkan berdasarkan
item barang ditemukan bahwa marlboro yang paling rendah rata-rata
error-nya.
Semua pengujian yang telah dilakukan menunjukkan bahwa hasil
peramalan sangat acak dan memiliki persentase tingkat error yang
berbeda-beda untuk masing-masing variasi pemodelan data pada
barang dan periode yang sama. Variasi pemodelan data tertentu tidak
dapat digunakan secara mutlak pada suatu barang yang sama untuk
semua periode atau pada periode yang sama untuk barang yang
berbeda. Setiap peramalan memiliki ciri khas sendiri sesuai dengan
data dan polanya, sehingga variasi pemodelan data yang cocok juga
akan berbeda disetiap peramalan yang dilakukan.
5.2 Kelebihan dan kekurangan Sistem
5.3.1 Kelebihan Sistem
1. Sistem user dapat melakukan peramalan stok barang dari data
yang berasal dari database sistem.
2. Sistem menyediakan informasi tentang pertimbangan jumlah
stok yang harus disediakan oleh toko untuk bulan selanjutnya.
5.3.2 Kekurangan Sistem
1. Sistem sangat sederhana, hanya disesuaikan dengan kebutuhan
untuk menerapkan algoritma Moving Average untuk
meramalkan stok barang.
2. Sistem tidak bisa memproses dengan benar jika ada data 0
(nol) pada data penjualan yang menjadi masukkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
BAB VI
KESIMPULAN DAN SARAN
6.1 Kesimpulan
Algoritma moving average dapat digunakan untuk meramalkan
stok barang, akan tetapi tidak semua peramalan memiliki hasil yang baik
karena datanya yang banyak dan bervariasi. Oleh karena itu, pada setiap
peramalan juga dicantumkan perkiraan error peramalan yang telah
dilakukan untuk pertimbangan pengambilan keputusan. Dalam percobaan
ini, juga dikembangkan variasi pemodelan data yang baru untuk
melengkapi cara yang sudah ada sehingga dapat mengurangi tingkat error
untuk memungkinkan pengambilan keputusan yang lebih baik.
Presentase error yang ditimbulkan pada setiap barang bervariasi
berdasarkan pola data penjualan dari masing-masing barang. Setiap variasi
pemodelan data juga dapat menimbulkan presentase error yang berbeda.
Oleh karena itu, sistem yang ditujukan untuk user akan menghitung setiap
variasi pemodelan data, kemudian menyeleksi presentase terkecil untuk
ditampilkan kepada user.
6.2 Saran
Adapun beberapa saran yang penulis berikan untuk pengembangan sistem
ini, antara lain :
1. Sistem yang telah dibuat hanya menggunakan 4 metode MA yang
berbeda. Oleh karena itu, diharapkan dalam pengembangannya dapat
dimasukkan variasi-variasi pemodelan data yang lain sehingga
peramalan yang dilakukan akan semakin akurat.
2. Sistem yang telah dibuat tidak dapat mengenali pola penjualan. Dalam
pengembangannya, diharapkan sistem diberikan kemampuan untuk
dapat mengenal pola penjualan sehigga dapat diketahui metode mana
yang cocok dengan pola tersebut tanpa harus menghitung dengan
semua variasi pemodelan data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
DAFTAR PUSTAKA
Alfatah, V.A. (1998) Pemilihan Metode Peramalan (Forcasting) untuk Produk
Passanger Car C Class dan E Class Pada PT. German Motor
Manufacturing, Depok: Universitas Indonesia.
Arnold, J. R. and Chapman, N.S. (2004) Introduction to Material Management,
New Jersey: Prentice-Hall Inc.
Assauri, Sofyan. (1991) Teknik dan Metode Peramalan, Jakarta : LPFE UI.
Turban, Efraim. (2005) Decision Support Systems and Intelligent Systems 7th Ed,
New Jersey : Pearson Education
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
LAMPIRAN
1. Sample penjualan 2014
1 2 3 4 5 6 7 8 9 10 11 12
1 Indomie Ayam Bawang 68 153 88 150 42 52 81 88 62 59 76 104
2 Indomie Goreng 274 273 285 304 182 275 360 369 365 390 332 338
3 Cheetos Jagung Bakar 67 34 54 45 37 81 30 35 15 96 125 77
4 Telur per kg 88 99 118 96 162 117 121 130 150 113 160 130
5 Pantene Biru 70ml 0 1 1 0 2 2 1 3 2 2 3 2
6 Marlboro 6 27 40 20 27 43 31 34 33 37 30 31
7 Aqua Galon 92 78 93 66 94 101 83 75 67 83 73 77
8 Beras Mentik per kg 27 56 97 110 37 70 82 130 143 122 132 128
9 Kacang 2 Kelinci 100g 12 1 5 4 5 1 1 5 1 1 4 3
10 Bumbu Racik Nasi Goreng 17 17 12 11 8 0 8 16 5 8 4 12
No Nama2014
2. Sample penjualan 2015
1 2 3 4 5 6 7 8 9 10 11 12
1 Indomie Ayam Bawang 75 55 73 109 65 58 46 70 96 78 72 102
2 Indomie Goreng 231 363 410 294 295 375 380 267 460 336 230 314
3 Cheetos Jagung Bakar 116 85 59 141 80 86 60 55 52 62 126 49
4 Telur per kg 114 90 117 117 89 128 151 96 85 91 86 108
5 Pantene Biru 70ml 2 3 4 1 2 0 3 1 1 4 2 5
6 Marlboro 5 25 25 31 34 25 32 40 48 47 38 36
7 Aqua Galon 84 30 43 69 110 125 112 112 75 22 32 29
8 Beras Mentik per kg 157 53 143 151 158 154 119 114 141 105 138 174
9 Kacang 2 Kelinci 100g 8 3 7 9 3 1 2 3 2 5 1 5
10 Bumbu Racik Nasi Goreng 11 0 7 9 6 9 7 6 13 4 6 8
No Nama2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
3. Penghitungan
Penghitungan untuk meramalkan stok barang indomie ayam bawang untuk periode januari 2016.
Bulan Penjualan Normal APE MAPE Variasi 1 APE MAPE Variasi 2 APE MAPE Variasi 3 APE MAPE
Jan-14 68
Feb-14 153
Mar-14 88
Apr-14 150 103 31
May-14 42 130 210
Jun-14 52 93 79
Jul-14 81 81 0
Aug-14 88 58 34
Sep-14 62 74 19
Oct-14 59 77 31
Nov-14 76 70 8
Dec-14 104 66 37
Jan-15 75 80 6 103 37
Feb-15 55 85 55 130 137 103 87
Mar-15 73 78 7 93 28 130 79 103 41
Apr-15 109 68 38 81 25 93 14 130 20
May-15 65 79 22 58 10 81 25 93 44
Jun-15 58 82 42 74 27 58 1 81 40
Jul-15 46 77 68 77 67 74 60 58 27
Aug-15 70 56 20 70 0 77 10 74 5
Sep-15 96 58 40 66 32 70 27 77 20
Oct-15 78 71 9 80 2 66 16 70 11
Nov-15 72 81 13 85 18 80 11 66 9
Dec-15 102 82 20 78 24 85 17 80 22
Jan-16 ? 84 28 68 24 78 23 85 16
Tabel Penghitungan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
a. MA Normal
b. MA Variasi 1
c. MA Variasi 2
d. MA Variasi 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
e. MAPE peramalan Januari 2016 MA Normal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI