Sistem pendukung pengambilan keputusan pengadaan stok barang untuk toserba dengan metode simple moving average : studi kasus Toko Serba Ada ``Ainun Mart``.

(1)

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.


(2)

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.


(3)

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


(4)

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


(5)

(6)

(7)

(8)

(9)

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.


(10)

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.


(11)

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.


(12)

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.


(13)

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


(14)

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


(15)

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


(16)

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


(17)

1 BAB I PENDAHULUAN

1.1Latar 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


(18)

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.2Rumusan 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.3Tujuan 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.4Batasan 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.


(19)

3 1.5Manfaat 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.6Metode 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.


(20)

4 1.7Sistematika 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.


(21)

5 BAB II

LANDASAN TEORI

2.1Sistem 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.


(22)

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.2Peramalan

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


(23)

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


(24)

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


(25)

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.


(26)

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.


(27)

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.


(28)

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.


(29)

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:


(30)

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 :


(31)

15 BAB III

ANALISA DAN PERANCANGAN SISTEM

3.1Fase 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.2Fase 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.3Fase 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


(32)

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.4Fase 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.


(33)

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 NamaBarang KodePenjualan

Jumlah

no Penjualan

Prediksi

N 1

Gambar 3.1 : ER Diagram

2. Perancangan Logikal BarangAinun

-KodeBarang : varchar(20) PK -NamaBarang : varchar(20)

Penjualan Ainun

-KodePenjualan : varchar(20) PK -jumlah : number


(34)

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)


(35)

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


(36)

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


(37)

21 3. Sequence diagram

a. Software Tester

SimulasiTest simulasiClass SimulasiKontrol simulasiDB MA

User 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()


(38)

22 b. Software User

UserFrame UserClass UserKontrol UserDB MA

user 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()


(39)

23 4. Activity diagram

a. Software Tester

Halaman SimulasiTest

masukkan data

klik Button Prediksi hitungMA mapeNormal mode=normal

else

mode = Variasi 1

Sistem

User

hitungMA mapeVar1 else

mode = Variasi 2

hitungMA mapeVar2 else

mode = Variasi 3

hitungMA mapeVar3

tampil hasil


(40)

24 b. Software User

Halaman SimulasiTest

masukkan data

klik Button Prediksi hitungMA mapeNormal

Sistem User

mapeVar1

mapeVar2

mapeVar3 cari 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


(41)

25 2. Tampilan Software User

SPPK Pengadaan Stok Barang Kode Barang

Nama Barang

Bulan Tahun

Prediksi Batal Close

Hasil Prediksi

Kode Barang Nama Barang


(42)

26 BAB IV

FASE IMPLEMENTASI

4.1Manajemen 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.


(43)

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.2Manajemen 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(),


(44)

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;


(45)

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=?";


(46)

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=?";


(47)

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);


(48)

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();


(49)

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());

}


(50)

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()


(51)

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()


(52)

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() + "%");

} }


(53)

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();


(54)

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();


(55)

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();


(56)

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);

}


(57)

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 {


(58)

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 =


(59)

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;


(60)

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 {


(61)

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;


(62)

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);


(63)

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=?";


(64)

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);


(65)

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++) {


(66)

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);

}


(67)

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);


(68)

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();


(69)

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);


(70)

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);


(71)

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.


(72)

56 4.3Manajemen 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.


(73)

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


(74)

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


(75)

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.


(76)

60 BAB V

HASIL PENGUJIAN DAN ANALISA HASIL

5.1Pengujian 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


(77)

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


(78)

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.2Kelebihan 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.


(1)

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,


(2)

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 Nama 2014

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


(3)

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


(4)

67

b.

MA Variasi 1

c.

MA Variasi 2


(5)

68


(6)