Peramalan Jumlah Penjualan Distributor Telur Terhadap Permintaan Pasar Menggunakan Metode Average-Based Fuzzy Time Series(ABFTS)

(1)

TERHADAP PERMINTAAN PASAR MENGGUNAKAN METODE

AVERAGE-BASED FUZZY TIME SERIES

(ABFTS)

SKRIPSI

IKA HASNITA TANJUNG

081402037

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA


(2)

TIME SERIES (ABFTS)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Teknologi Informasi

IKA HASNITA TANJUNG 081402037

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : PERAMALAN JUMLAH PENJUALAN

DISTRIBUTOR TELUR TERHADAP PERMINTAAN PASAR MENGGUNAKAN METODE AVERAGE-BASED FUZZY TIME

SERIES (ABFTS)

Kategori : SKRIPSI

Nama : IKA HASNITA TANJUNG

Nomor Induk Mahasiswa : 081402037

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI

Diluluskan di Medan, 2012

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dra. Elly Rosmaini, M.Si Dr. Erna Budhiarti Nababan, M.IT NIP. 196005201985032002

Diketahui/Disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

Prof. Opim Salim Sitompul, M.Sc NIP. 196108171987011001


(4)

PERNYATAAN

PERAMALAN JUMLAH PENJUALAN DISTRIBUTOR TELUR TERHADAP PERMINTAAN PASAR MENGGUNAKAN METODE AVERAGE-BASED FUZZY

TIME SERIES (ABFTS)

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 2012

Ika Hasnita Tanjung 081402037


(5)

PENGHARGAAN

Puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan Skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara. Dalam penyelesaian Skripsi ini penulis banyak sekali mendapatkan dukungan, saran, dan nasehat dari berbagai pihak.

Dalam kesempatan ini penulis mengucapkan terima kasih kepada: Ibu Dr. Erna Budhiarti Nababan, M.IT, selaku Dosen Pembimbing I dan Ibu Dra. Elly Rosmaini, M.Si, selaku Dosen Pembimbing II, yang telah bersedia meluangkan waktu dan pikiran untuk memberikan motivasi dan saran yang membangun dalam penyelesaian Skripsi ini, Ucapan terima kasih juga ditujukan kepada Ibu Dra. Mardiningsih, M.Si dan Bapak Syahriol Sitorus, S.Si,M.Si selaku dosen penguji dan penulis mengucapkan terima kasih kepada semua dosen Program Studi Teknologi Informasi yang telah memberikan ilmu yang bermanfaat bagi penulis.

Segala hormat dan terima kasih secara khusus penulis ucapkan kepada ayahanda Harmain Sutan Nurdin dan Ibunda Elma Tanjung serta seluruh keluarga atas motivasi, kasih sayang, dan dukungan baik secara materi maupun do’a yang tak pernah putus yang diberikan kepada penulis, tak lupa kepada adik Maslim serta seluruh sahabat penulis Stambuk 2008 khususnya Fanny, Desfi, Ester, Tara, dan Lia atas saran dan dukungan yang sangat bermanfaat.

Penulis berharap bahwa Skripsi ini bermanfaat terutama kepada penulis maupun para pembaca. Sekali lagi penulis ucapkan terima kasih atas segalanya. Semoga segala kebaikan diberikan balasan yang setimpal oleh Allah SWT.


(6)

ABSTRAK

Kegiatan memprediksi atau meramalkan jumlah penjualan untuk periode mendatang, merupakan hal penting bagi distributor telur untuk meningkatkan keuntungan, agar tidak terjadi kekurangan ataupun kelebihan telur yang dipasarkan. Pada penelitian ini, teknik fuzzy di dalam metode average-based fuzzy time series akan diimplementasikan untuk meramalkan jumlah penjualan telur untuk satu minggu ke depan pada salah satu distributor telur di Kabupaten Deli Serdang.

Kata Kunci : Average-Based Fuzzy Time Series, Fuzzy Time Series, Peramalan,Teknik


(7)

USING AVERAGE-BASED FUZZY TIME SERIES (ABFTS) METHOD

ABSTRACT

Predicting or forecasting the number of sales for the coming period is important for egg distributors to increase profits, so that no shortage or surplus eggs are marketed. In this research, average-based fuzzy time series method will be implemented to predict the amount of egg selling for a next one week on one of egg distributors in Deli Serdang.

Keyword: Average-Based Fuzzy Time Series, Forecasting, Fuzzy Technique, Time Series


(8)

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1 Latar Belakang 2

1.2 Perumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Landasan Teori 6

2.1 Peramalan 6

2.2 Himpunan Fuzzy 12

2.2.1 Fungsi Keanggotaan 13

2.2.2 Notasi Fuzzy 17

2.2.3 Operasi Himpunan Fuzzy 17

2.2.4 Nilai Linguistik 18

2.3 Peramalan dengan Metode Fuzzy Time Series 18

2.4 Penelitian Terdahulu 19

2.4 Peramalan dengan Metode Average-Based Fuzzy Time Series 21

2.4.1 Interval Berbasis Nilai Rata-rata (Average-Based Lengths) 22

2.4.2 Fuzzy Logical Relationship (FLR) 24

2.4.3 Fuzzy Logical Relationship Group (FLRG) 24

2.4.4 Peramalan dan Defuzzifikasi 24

Bab 3 Analisis dan Perancangan Sistem 27

3.1 Identifikasi Masalah 27

3.2 Data yang Digunakan 28

3.3 Analisis Sistem 29

3.4 Perancangan Sistem 38

3.4.1 Diagram Aliran Data 38

3.4.2 Kamus Data 45

3.4.3 Perancangan Menu Sistem 46


(9)

Bab 4 Implementasi dan Pengujian Sistem 52

4.1 Implementasi Sistem 52

4.1.1 Spesifikasi Perangkat Keras dan Perangkat Lunak yang Digunakan 52 4.1.2 Implementasi Perancangan Antarmuka 53 4.1.3 Implementasi Data 58

4.2 Pengujian Sistem 60

4.2.1 Rencana Pengujian Sistem 60 4.2.2 Kasus dan Hasil Pengujian Sistem 61 4.2.3 Pengujian Kinerja Sistem 67 4.3 Kesimpulan Hasil Pengujian Sistem 74

Bab 5 Kesimpulan dan Saran 76

5.1 Kesimpulan 76

5.2 Saran 76

Daftar Pustaka 77


(10)

Halaman

Tabel 2.1 Produksi dan Selisih Produksi Kopi Dunia Tahun 2000-2005 8

Tabel 2.2 Perbandingan antara Penjualan, Pembelian Bahan Baku, dan Jumlah Karyawan 8

Tabel 2.3 Data Pooled (Panel) Ekspor Impor Kopi Indonesia dan Malaysia Tahun 2005-2007 9

Tabel 2.4 Penelitian Fuzzy Time Series Terdahulu pada Peramalan Pendaftaran Universitas Alabama 21

Tabel 2.5 Pemetaan Basis Peramalan 23

Tabel 2.5 Pemetaan Basis Peramalan 23

Tabel 2.5 Pemetaan Basis Peramalan 23

Tabel 3.1 Rangkuman Data Penjualan Telur Tahun 2009-2011 28

Tabel 3.2 Kamus Data User ID 45

Tabel 3.3 Kamus Data Penjualan 46

Tabel 4.1 Rangkuman Data Penjualan Telur Tahun 2009-2011 58

Tabel 4.2 Rencana Pengujian 60

Tabel 4.3 Hasil Pengujian 61

Tabel 4.4Data Penjualan Telur per Periode 67

Tabel 4.5 Selisih Absolute dan Rata-rata Selisih Absolute 68

Tabel 4.6 Nilai Linguistik 69

Tabel 4.7 Fuzzy Logical Relationship (FLR) 70

Tabel 4.8 Defuzzifikasi Hasil Peramalan 71

Tabel 4.9 Rangkuman Hasil Pengujian untuk Data Penjualan Telur Tahun 2009-2011 73


(11)

Halaman

Gambar 2.1 Data Penjualan Beras per Bulan Tahun 2011 dengan

Pola Horizontal (H) 9

Gambar 2.2 Data Penjualan Seragam Sekolah per Bulan Tahun 2011 dengan Pola Musiman (S) 10

Gambar 2.3 Data Penjualan Mobil per Bulan Tahun 2000-2008 pada PT. Jaya Mandiri dengan Pola Siklis (C) 11

Gambar 2.4 Data Produk Domestik Bruto per Kapita dengan Pola Trend (T) 12

Gambar 2.5 Grafik Fungsi Keanggotaan pada Representasi Linier Naik 13

Gambar 2.6 Grafik Fungsi Keanggotaan pada Representasi Linier Turun 14

Gambar 2.7 Grafik Fungsi Keanggotaan pada Representasi Kurva Segitiga 14

Gambar 2.8 Grafik Fungsi Keanggotaan pada Representasi Kurva Trapesium 15

Gambar 2.9 Grafik Fungsi Keanggotaan pada Representasi Kurva Bentuk Bahu 16

Gambar 2.10 Proses dalam Metode Average-Based Fuzzy Time Series 22

Gambar 3.1 Pola Horizontal Penjualan Telur Tahun 2009-2011 29

Gambar 3.2 Algoritma Average-Based Fuzzy Time Series pada Sistem 30

Gambar 3.3 Himpunan Fuzzy untuk Data Penjualan Telur 35

Gambar 3.4 Diagram Konteks DFD 39

Gambar 3.5 DFD Level 1 40

Gambar 3.6 DFD Level 1 Proses 2.0 41

Gambar 3.7 DFD Level 1 Proses 3.0 43

Gambar 3.8 Struktur Menu Sistem 46

Gambar 3.9 Rancangan Halaman Login 46

Gambar 3.10 Rancangan Halaman Utama 47

Gambar 3.11Rancangan Halaman Pengguna 48

Gambar 3.12Rancangan Halaman Olah Data Penjualan 49

Gambar 3.13 Rancangan Halaman Peramalan 50

Gambar 4.1 Halaman Login 53

Gambar 4.2 Halaman Utama 54

Gambar 4.3 Halaman Pengguna 55

Gambar 4.4 Halaman Olah Data Penjualan 56

Gambar 4.5 Halaman Peramalan 57

Gambar 4.6 Halaman Grafik 58

Gambar 4.7 Database Penjualan Telur 59

Gambar 4.8 Input Data Pada Sistem Peramalan Penjualan Telur 72

Gambar 4.9 Hasil Peramalan oleh Sistem Peramalan Penjualan Telur 73

Gambar 4.10 Pola Data Penjualan Telur dan Hasil Peramalan 75


(12)

ABSTRAK

Kegiatan memprediksi atau meramalkan jumlah penjualan untuk periode mendatang, merupakan hal penting bagi distributor telur untuk meningkatkan keuntungan, agar tidak terjadi kekurangan ataupun kelebihan telur yang dipasarkan. Pada penelitian ini, teknik fuzzy di dalam metode average-based fuzzy time series akan diimplementasikan untuk meramalkan jumlah penjualan telur untuk satu minggu ke depan pada salah satu distributor telur di Kabupaten Deli Serdang.

Kata Kunci : Average-Based Fuzzy Time Series, Fuzzy Time Series, Peramalan,Teknik


(13)

USING AVERAGE-BASED FUZZY TIME SERIES (ABFTS) METHOD

ABSTRACT

Predicting or forecasting the number of sales for the coming period is important for egg distributors to increase profits, so that no shortage or surplus eggs are marketed. In this research, average-based fuzzy time series method will be implemented to predict the amount of egg selling for a next one week on one of egg distributors in Deli Serdang.

Keyword: Average-Based Fuzzy Time Series, Forecasting, Fuzzy Technique, Time Series


(14)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Kelangsungan sebuah usaha sangat diperlukan oleh setiap organisasi baik yang berorientasi pada profit ataupun yang nonprofit. Dalam organisasi yang berorientasi pada profit, kegiatan usaha yang dilakukan diharapkan dapat berlangsung secara terus menerus untuk jangka waktu yang lama, bahkan kegiatan usaha tersebut diharapkan juga mengalami peningkatan dari segi aktivitas operasi maupun laba yang diperoleh.

Sebagai salah satu usaha yang berorientasi pada profit, distributor telur diharapkan dapat terus meningkatkan keuntungan, salah satunya dengan menyediakan telur sesuai dengan permintaan pasar, agar tidak terjadi kekurangan atau kelebihan telur yang dipasarkan. Menurut hasil survei pada salah satu distributor telur, sering terjadi masalah dalam penyediaan telur karena jumlah telur yang akan dipasarkan tidak sesuai dengan jumlah permintaan, sehingga hal ini sering menyebabkan kerugian. Jika jumlah telur yang disediakan melebihi permintaan, maka telur akan menumpuk di gudang dan akhirnya busuk. Untuk menghindari kerugian yang lebih besar distributor ini terpaksa menjual kepada distributor lain tetapi dengan harga pokok. Sebaliknya jika jumlah telur yang disediakan lebih sedikit dari permintaan pasar, maka distributor ini terpaksa mengambil dari distributor lain untuk mencukupinya, tentu saja dengan harga diatas standar sehingga keuntungan yang diperoleh berkurang. Hal ini tentu saja akan mengancam keberlangsungan usaha tersebut. Jadi, diperlukan suatu sistem otomasi yang dapat memprediksi atau meramalkan jumlah telur yang akan dipasarkan sesuai permintaan dengan suatu metode tertentu.


(15)

Ada beberapa metode yang dikenal dan telah diimplementasikan dalam beberapa penelitian, untuk memprediksi atau meramalkan jumlah permintaan barang yang akan dipasarkan pada periode yang akan datang, diantaranya: Arima Box-Jenkins

dan Jaringan Multilayer Perceptron (Rahmawati, 2007); Metode Kuadrat Terkecil atau least square (Widodo, 2008); Metode Optimasi Linear Programming (Abbas et al. 2008); Metode Double Moving Average (Mulyandi et al. 2010); Metode

Exponentially Weighted Quantile Regression (Anggraeni et al. 2011). Dari berbagai macam metode ini didapatkan tingkat kesalahan peramalan yang berbeda-beda sesuai dengan data yang diteliti.

Pada skripsi ini penulis mencoba melakukan sebuah peramalan jumlah permintaan barang pada suatu usaha yang bergerak pada bidang pendistribusian telur dengan menggunakan metode Average-Based Fuzzy Time Series (ABFTS). Penulis tertarik dengan metode ini karena metode fuzzy time series telah banyak diterapkan diberbagai kasus peramalan seperti peramalan pendaftaran murid baru (Song et al. 1993), peramalan tingkat kecelakaan mobil (Jilani et al. 2008), dan lain sebagainya. metode Average-Based Fuzzy Time Series (ABFTS) ini juga tidak melibatkan banyak variabel, sehingga membuat perhitungan menjadi lebih sederhana (Xihao et al. 2007).

1.2 Perumusan Masalah

Sebelumnya distributor telur sering melakukan kesalahan dalam memprediksi jumlah permintaan telur yang akan dipasarkan. Seringkali telur yang akan dipasarkan melebihi jumlah permintaan pasar. Maka dalam hal ini masalah yang dapat dirumuskan adalah : “Bagaimana memprediksi atau meramalkan jumlah permintaan telur agar sesuai dengan permintaan pasar ?”.


(16)

1.3 Batasan Masalah

Mengingat akan keterbatasan waktu penulisan dan kemampuan, penulis membatasi masalah yang akan dibahas pada skripsi ini. Batasan-batasan masalah yang akan dibahas di dalam skripsi ini antara lain:

a. Data yang akan digunakan merupakan data penjualan telur untuk tiga tahun terakhir pada suatu perusahaan yang bergerak pada bidang pendistribusian telur.

b. Data akan dikelompokkan per minggu dalam hitungan Papan (1 papan adalah 30 butir telur).

c. Sistem yang dibangun hanya menghasilkan peramalan atau prediksi jumlah telur yang akan dipasarkan untuk satu minggu ke depan untuk setiap periode penjualan.

1.4 Tujuan Penelitian

Adapun tujuan penelitian ini adalah untuk melakukan peramalan tentang jumlah permintaan telur yang dipasarkan di minggu yang akan datang oleh suatu perusahaan yang bergerak dalam bidang pendistribusian telur.

1.5 Manfaat Penelitian

Adapun manfaat dari penelitian ini adalah :

a. Mengetahui bagaimana cara mengimplementasikan metode Average-Based

Fuzzy Time Series (ABFTS) pada sistem komputer.

b. Mengetahui tingkat keakuratan metode Average-Based Fuzzy Time Series

(ABFTS) berdasarkan hasil perhitungan error peramalan pada data


(17)

1.6 Metodologi Penelitian

Tahapan yang akan dilakukan pada pelaksanaan penelitian ini adalah sebagai berikut:

a. Studi Literatur

Studi literatur yang dilakukan dalam penelitian ini adalah mengumpulkan bahan referensi mengenai peramalan dan metode average-based fuzzy time series dari berbagai buku, jurnal, artikel dan beberapa referensi lainnya.

b. Analisis Permasalahan

Pada tahap ini dilakukan analisis terhadap hasil studi literatur untuk mengetahui dan mendapatkan pemahaman mengenai metode average-based

fuzzy time series untuk menyelesaikan masalah peramalan permintaan pasar

terhadap suatu barang.

c. Perancangan Sistem

Pada tahap perancangan sistem dilakukan perancangan sistem, pengumpulan data, dan merancang antarmuka. Proses perancangan dilakukan berdasarkan hasil analisis studi literatur yang telah didapatkan.

d. Implementasi Sistem

Pada tahap implementasi sistem ini akan dilakukan pengkodean program dalam sistem komputer menggunakan bahasa pemrograman Visual Basic 2010 dan database SQL Server 2008.

e. Pengujian

Pada tahap ini akan dipastikan apakah sistem peramalan jumlah permintaan pasar pada distribusi telur yang telah dibuat sudah berjalan sesuai harapan.

f. Dokumentasi dan Penyusunan Laporan

Pada tahap ini dilakukan dokumentasi hasil analisis metode average-based

fuzzy time series untuk menyelesaikan masalah peramalan jumlah permintaan


(18)

1.7 Sistematika Penulisan

Sistematika pembahasan yang digunakan untuk menyelesaikan skripsi ini adalah sebagai berikut:

BAB I : PENDAHULUAN

Menjelaskan mengenai latar belakang, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penulisan.

BAB II : LANDASAN TEORI

Membahas beberapa teori penunjang yang berhubungan dengan pokok pembahasan dalam skripsi ini yang secara garis besar berisi tentang sistem peramalan dan metode average-based fuzzy time series.

BAB III : ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini akan membahas analisis sistem, deskripsi sistem, desain sistem yang digunakan dalam pembuatan sistem peramalan jumlah permintaan pasar dalam usaha distribusi telur menggunakan metode average-based fuzzy time series.

BAB IV : IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab ini akan dijelaskan mengenai implementasi dan pengujian sistem berdasarkan hasil rancangan yang telah dibuat sebelumnya.

BAB V : KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dari keseluruhan uraian bab-bab sebelumnya dan saran-saran yang diajukan untuk pengembangan program selanjutnya.


(19)

BAB 2

LANDASAN TEORI

Bab ini membahas teori penunjang yang berhubungan dengan penerapan metode

average-based fuzzy time series pada sistem peramalan jumlah penjualan distributor telur.

2.1 Peramalan

Peramalan (forecasting) merupakan kegiatan memprediksi nilai-nilai sebuah variabel berdasarkan nilai yang diketahui dari variabel tersebut atau variabel yang berhubungan. (Ai, 1999).

Menurut sifatnya, teknik peramalan terbagi menjadi dua jenis yaitu teknik kualitatif dan teknik kuantitatif. Teknik kualitatif merupakan teknik peramalan berdasarkan pendapat suatu pihak, dan data pada teknik kualitatif tidak dapat direpresentasikan secara tegas ke dalam suatu angka atau nilai. Teknik peramalan tersebut misalnya adalah judgment forecast. Sebaliknya, teknik peramalan kuantitatif merupakan teknik peramalan berdasarkan data masa lalu atau disebut data historis dan dapat dibuat dalam bentuk angka (Jumingan, 2009).

Teknik kuantitatif dikelompokkan dalam dua jenis (Ai, 1999) :

1. Model Time Series (Runtun Waktu)

Pada model ini peramalan masa mendatang dilakukan berdasarkan nilai data masa lalu atau disebut data historis. Tujuan metode ini adalah menemukan pola dalam deret data historis dan memanfaatkan pola deret tersebut untuk peramalan masa mendatang. Keuntungan dalam menggunakan model ini adalah peramalan dapat dilakukan secara lebih sederhana dibandingkan dengan model kausal.


(20)

2. Model Regresi (Kausal)

Model ini merupakan suatu model yang mengasumsikan faktor yang diramalkan menunjukkan suatu hubungan sebab akibat dalam satu atau lebih variabel bebas dan menggunakannya untuk meramalkan nilai mendatang dari suatu variabel tak bebas. Keuntungan dalam menggunakan model ini adalah dapat menghasilkan tingkat keberhasilan yang lebih besar dalam pengambilan keputusan yang bijaksana.

Dalam ekonometrika, data dapat dikelompokkan ke dalam tiga jenis menurut waktu pengumpulannya, yaitu data time series (runtun waktu), data cross section

(silang), dan data pooled (panel). Data tersebut tentunya sangat diperlukan dalam penelitian, maupun pengambilan keputusan. Pengumpulan data biasanya memerlukan waktu yang lama karena dapat melibatkan banyak aktivitas seperti mendatangi responden, menginput data, menyunting data, maupun menampilkannya dengan suatu alat analisis tertentu. Berikut akan dibahas beberapa jenis data berdasarkan waktu pengumpulannya (Winarno, 2007).

a. Data Time Series (Runtun Waktu)

Data Time series adalah data yang menggambarkan suatu objek dari waktu ke waktu atau periode secara historis dan terjadi berurutan. Sebagai contoh adalah data harga saham, data ekspor, data nilai tukar (kurs), data produksi, dan lain sebagainya (Winarno, 2007). Pola pergerakan data atau nilai variabel dapat diikuti dengan adanya data time series, sehingga data time series dapat digunakan sebagai dasar untuk (Anwary, 2011):

1. Pembuatan keputusan pada saat ini,

2. Peramalan keadaan perdagangan dan ekonomi pada masa yang akan datang,

3. Perencanaan kegiatan untuk masa depan.

Pada beberapa kasus, misalnya data time series produksi dunia komoditas kopi pada tahun sebelumnya akan mempengaruhi harga kopi dunia pada tahun berikutnya. Oleh karena itu diperlukan data selisih produksi kopi


(21)

dunia tiap periode agar tampak apakah produksi kopi pada tahun selanjutnya bertambah atau berkurang. Seperti dapat dilihat pada Tabel 2.1.

Tabel 2.1 Produksi dan Selisih Produksi Kopi Dunia Tahun 2000-2005

Tahun Produksi Kopi (Ton) Selisih

2000 7.562.713 -

2001 7.407.986 -154.727

2002 7.876.893 468.907

2003 7.179.592 -697.301

2004 7.582.293 402.701

2005 7.276.333 -305.960

b. Data Cross Section (Silang)

Data cross section (silang) terdiri dari beberapa objek data pada waktu tertentu. Misalnya pada suatu restoran terdiri dari data penjualan, data pembelian bahan baku, data jumlah karyawan, dan data relevan lainnya. Seperti dapat dilihat pada Tabel 2.2.

Tabel 2.2 Perbandingan antara Penjualan, Pembelian Bahan Baku, dan Jumlah

Karyawan Nama

Restoran

Penjualan Pembelian Bahan Baku

Jumlah Karyawan

A 19.587.200 10.300.100 20

B 23.854.000 16.200.869 15

C 17.211.000 13.300.357 17

c. Data Pooled (Panel)

Data pooled (panel) adalah data yang menggabungkan data time series (runtun

waktu) dan data cross section (silang). Oleh karena itu data pooled (panel) terdiri dari beberapa objek dan beberapa periode waktu. Seperti dapat dilihat pada Tabel 2.3.


(22)

Tabel 2.3 Data Pooled (Panel) Ekspor Impor Kopi Indonesia dan Malaysia Tahun 2005-2007

Nama Negara Periode Ekspor Impor

Indonesia 2005 443.366 1.654

Indonesia 2006 411.721 5.092

Indonesia 2007 320.600 47.937

Malaysia 2005 666 23.826

Malaysia 2006 1.490 35.368

Malaysia 2007 984 42.165

Adapun pola data pada data time series (runtun waktu) dikelompokkan menjadi empat jenis yaitu (Makridakis et al. 1992) :

1. Pola Horizontal (H) yaitu pola data yang terjadi jika data berfluktuasi di sekitar nilai rata-rata yang konstan. Suatu produk yang penjualannya tidak meningkat atau menurun selama waktu tertentu termasuk ke dalam jenis pola ini. Contoh pola data seperti ini dapat dilihat pada Gambar 2.1.

Gambar 2.1 DataPenjualan Beras per Bulan Tahun 2011 dengan Pola Horizontal (H)


(23)

Pada Gambar 2.1 dapat dilihat bahwa jumlah penjualan beras pada bulan pertama sampai dengan bulan ke-12 Tahun 2011 pada suatu unit usaha pengecer beras berfluktuasi pada nilai rata-rata yang sama yaitu lima karung. Pola data yang sama biasanya juga dapat dijumpai pada jenis barang yang bersifat kebutuhan pokok lainnya seperti minyak goreng, telur,gula dan lain sebagainya.

2. Pola Musiman (S) yaitu pola data yang terjadi jika deret data dipengaruhi faktor musiman (misalnya kuartal tahun tertentu, bulanan, atau hari-hari pada minggu tertentu). Penjualan produk misalnya seperti es krim, seragam sekolah, atau pemanas ruangan masuk ke dalam pola data ini. Contoh pola data seperti ini dapat dilihat pada Gambar 2.2.

Gambar 2.2 DataPenjualan Seragam Sekolah per Bulan Tahun 2011 dengan

Pola Musiman (S)

Pada Gambar 2.2 dapat dilihat bahwa jumlah penjualan seragam sekolah pada bulan pertama sampai dengan bulan ke-12 Tahun 2011 pada suatu toko penyedia seragam sekolah dipengaruhi oleh faktor musiman. Pada bulan pertama dan ketujuh dari setiap tahun adalah waktu dimulainya semester baru di sekolah sehingga kebutuhan dan permintaan seragam sekolah lebih meningkat dari bulan-bulan lainnya.

3. Pola Siklis (C) yaitu pola data yang terjadi jika data dipengaruhi fluktuasi ekonomi jangka panjang seperti yang berhubungan dengan siklus bisnis. Penjualan produk seperti mobil dan baja masuk ke dalam pola data ini. Contoh pola data seperti ini dapat dilihat pada Gambar 2.3.


(24)

Gambar 2.3 DataPenjualan Mobil per Bulan Tahun 2000-2008 pada PT. Jaya Mandiri dengan Pola Siklis (C)

Pada Gambar 2.3 dapat dilihat bahwa jumlah penjualan mobil pada PT. Jaya Mandiri dipengaruhi faktor ekonomi Indonesia tiap tahunnya. Tahun 2002 dan 2008 merupakan tahun dimana perekonomian masyarakat Indonesia lebih baik dari tahun-tahun lainnya, sehingga penjualan mobil yang merupakan kebutuhan tersier juga ikut meningkat.

4. Pola Data Trend (T) yaitu pola data yang terjadi jika terjadi kenaikan ataupun penurunan sekuler jangka panjang pada data. Contoh pola data seperti ini dapat dilihat pada Gambar 2.4.


(25)

Gambar 2.4 Data Produk Domestik Bruto per Kapita dengan Pola Trend(T)

Produk domestik bruto (Gross Domestic Product) merupakan jumlah produk berupa barang dan jasa yang dihasilkan oleh unit-unit produksi di dalam batas wilayah suatu negara (domestik) selama satu tahun. Pada Gambar 2.4 dapat dilihat bahwa jumlah penjualan produk domestik bruto Indonesia mengalami kenaikan jangka panjang pada Tahun 2000-2011.

2.2 Himpunan Fuzzy

Menurut Kusumadewi dan Purnomo (2004), himpunan fuzzy merupakan generalisasi dari himpunan klasik (crisp) yang memiliki elemen-elemen dengan derajat keanggotaan yang dibatasi dengan interval [0, 1].

Anggap Х merupakan suatu himpunan semesta yang memiliki elemen-elemen, dengan setiap elemen dinyatakan dengan x, sehingga Х = x. Himpunan fuzzyA dalam

Х dinyatakan dengan fungsi keanggotaan µA(x) yang menghubungkan setiap elemen

pada interval [0, 1], dengan nilai µA(x) pada x menyatakan derajat keanggotaan dari x

dalam A. Nilai derajat keanggotaan terbesar dari x dalam A adalah nilai µA(x) yang

paling mendekati nilai 1 (Hernasary, 2007). Himpunan fuzzy dinyatakan sebagai berikut :


(26)

2.2.1 Fungsi Keanggotaan

Fungsi Keanggotaan (Membership Function) dalam himpunan fuzzy adalah suatu kurva yang menunjukkan pemetaan elemen-elemen input data ke dalam nilai keanggotaannya (sering juga disebut derajat keanggotaan) yang memiliki interval 0 sampai 1 (Kusumadewi et al. 2004). Beberapa jenis fungsi yang biasa digunakan untuk mendapatkan nilai keanggotaan yaitu (Kusumadewi et al. 2004) :

1. Representasi Linier

Pada representasi linier, pemetaan input ke derajat keanggotaannya digambarkan sebagai suatu garis lurus. Ada dua jenis himpunan fuzzy yang linier, yaitu linier naik dan linier turun. Linier naik dimulai dari domain yang memilki derajat keanggotaan nol (0) lalu bergerak ke kanan menuju ke nilai domain yang memiliki derajat keanggotaan yang lebih tinggi.

Gambar 2.5 Grafik Fungsi Keanggotaan pada Representasi Linier Naik

Fungsi keanggotaan untuk representasi linier naik :


(27)

Linier turun merupakan kebalikan dari linier naik. Linier turun dimulai dari domain yang memilki derajat keanggotaan paling tinggi lalu bergerak ke kanan menuju ke nilai domain yang memiliki derajat keanggotaan yang lebih rendah.

Gambar 2.6 Grafik Fungsi Keanggotaan pada Representasi Linier Turun

Fungsi keanggotaan untuk representasi linier turun :

µ[x] =

(2.3)

2. Representasi Kurva Segitiga

Kurva segitiga pada dasarnya merupakan gabungan antara dua garis (linier).


(28)

Fungsi keanggotaan untuk representasi kurva segitiga :

µ[x] =

(2.4)

3. Representasi Kurva Trapesium

Kurva trapesium pada dasarnya seperti bentuk segitiga, hanya saja ada beberapa titik yang memiliki nilai keanggotaan 1.

Gambar 2.8 Grafik fungsi keanggotaan pada representasi kurva trapesium

Fungsi keanggotaan untuk representasi kurva trapesium :

µ[x] =

(2.5)

4. Representasi Kurva Bentuk Bahu


(29)

Gambar 2.9 Grafik Fungsi Keanggotaan pada Representasi Kurva Bentuk Bahu

Fungsi keanggotaan untuk representasi kurva bentuk bahu pada pembagian suhu temperatur :

Dingin :

µ[x] =

(2.6)

Sejuk :

µ[x] =

(2.7)

Normal :


(30)

Hangat :

µ[x] =

(2.9)

Panas :

µ[x] =

(2.10)

2.2.2. Notasi Fuzzy

Ketika himpunan semesta Хberbentuk diskrit,notasi yang digunakan untuk himpunan

fuzzyA adalah (Hernasary, 2007):

= (2.11)

atau

(2.12)

Ketika himpunan semesta Х berbentuk kontinu, notasi yang digunakan untuk himpunan fuzzyA adalah :

(2.13)

2.2.3 Operasi Himpunan Fuzzy

Jika dinyatakan terdapat dua himpunan fuzzy di dalam himpunan semesta yaitu A1 dan


(31)

himpunan operasi gabungan, irisan, dan complement dinyatakan untuk A1dan A2 pada himpunan semesta yaitu :

Gabungan :

µ

A1A2

(x) = µ

A1

(x) µ

A2

(x)

(2.14) Irisan :

µ

A1∩A2

(x)= µ

A1

(x) µ

A2

(x)

(2.15)

Complement :

µ A

= 1- µ A

(2.16)

2.2.4 Nilai Linguistik

Nilai Linguistik adalah nilai dalam bentuk kata atau kalimat, nilai linguistik dari suatu variabel biasanya dibuat berdasarkan nilai numerik variabel tersebut. Sebagai contoh : “Young” adalah nilai linguistik dari variabel “Umur” yang dibuat berdasarkan nilai

numerik variabel tersebut yaitu “5 Tahun” (Hernasary, 2007).

2.3 Peramalan dengan Metode Fuzzy Time Series

Fuzzy time series adalah metode peramalan data yang menggunakan prinsip-prinsip

fuzzy sebagai dasarnya. Sistem peramalan dengan fuzzy time series menangkap pola data pada masa lalu kemudian digunakan untuk memproyeksikan data pada masa yang akan datang (Anwary, 2011).

Jika diasumsikan Y(t); (t = 1,2…,n), adalah himpunan bagian dari U yang menjadi himpunan semesta dimana himpunan fuzzy fi(t); (i=1,2,…,n), telah didefinisikan sebelumnya dan jadikan F(t) menjadi kumpulan fi(t); (i=1,2,…,n). Maka,

F(t) dinyatakan fuzzy time series terhadap Y(t); (t = 1,2…,n).

Dari defenisi tersebut, dapat dilihat bahwa F(t) bisa dianggap sebagai variabel yang mempunyai nilai linguistik dan fi(t); (i=1,2,…,n) bisa dianggap sebagai kemungkinan nilai linguistik dari F(t), dimana fi(t); (i=1,2,…,n) direpresentasikan oleh suatu himpunan fuzzy. Bisa dilihat juga bahwa F(t) adalah suatu fungsi waktu dari t


(32)

misalnya, nilai-nilai dari F(t) dapat berbeda bergantung bahwa kenyataan pada himpunan semesta, bisa berbeda pada waktu yang berbeda. Dan jika F(t) hanya disebabkan oleh F(t-1) maka hubungan ini digambarkan dengan F(t-1)F(t). (Chen, 1996).

2.4 Penelitian Terdahulu

Model Peramalan time series secara statistik yang telah ada selama ini belum dapat secara efektif diterapkan untuk data historis dalam jumlah yang sedikit, maka metode

fuzzy time series dikembangkan. Song dan Chissom (1993) mengusulkan model time

invariant untuk fuzzy time series. Mereka melakukan proses fuzzifikasi dalam hal pendaftaran di Universitas Alabama pada tahun 1993. Mereka jadi orang pertama yang melakukan peramalan dengan fuzzy time series.

Adapun langkah-langkah metode fuzzy time series dengan model time

invariant yang dirumuskan oleh Song dan Chissom adalah (Huarng, 2000) :

1. Mendefenisikan himpunan semesta yang diasumsikan sebagai U dari variasi data historis yang ada.

2. Membagi himpunan semesta U menjadi sejumlah subhimpunan dengan panjang interval yang sama dengan jumlah subhimpuan yang ditentukan secara acak.

3. Mendefinisikan himpunan fuzzyAi.

4. Fuzzifikasi data historis yang ada.

5. Menyatakan Fuzzy Logical Relationship (FLR).

6. Menjadikan relasi fuzzy orde pertama menjadi satu Fuzzy Logical Relationship Group (FLRG) dan menghitung relasi Ri untuk setiap fuzzy ke-i.

7. Meramalkan output peramalannya dan melakukan defuzzifikasi. 8. Menghitung peramalan.

Pada Tahun 1996, Chen melakukan penelitian lanjutan dan merumuskan model Arithmetic Operation dengan langkah :


(33)

1. Mendefenisikan himpunan semesta yang diasumsikan sebagai U dari variasi data historis yang ada.

2. Membagi himpunan semesta U menjadi sejumlah subhimpunan dengan panjang interval yang sama dengan jumlah subhimpuan yang ditentukan secara acak.

3. Mendefinisikan himpunan fuzzyAi.

4. Fuzzifikasi data historis yang ada.

5. Menyatakan Fuzzy Logical Relationship (FLR).

6. Peramalan.

Selanjutnya Huarng (2000) melakukan penelitian lanjutan tentang apa yang telah diteliti Song dan Chissom pada data pendaftaran di Universitas Alabama. Dari penelitiannya, Huarng berhasil merumuskan model peramalan fuzzy time series baru

yaitu model Heuristic.

Adapun langkah-langkah metode fuzzy time series yang dirumuskan oleh Huarng adalah :

1. Mendefenisikan himpunan semesta yang diasumsikan sebagai U dari variasi data historis seperti yang dirumuskan oleh Song dan Chissom.

2. Membagi himpunan semesta U menjadi sejumlah subhimpunan dengan panjang interval yang sama dengan jumlah subhimpuan yang ditentukan secara acak.

3. Mendefinisikan himpunan fuzzy dengan persamaan

A1 = 1 / u1 + 0.5 / u2 + 0 / u3 + 0 / u4+…+ 0 / ui

A2 = 0.5 / u1 + 1 / u2 + 0.5 / u3 + 0 / u4+…+ 0 / ui

. . .


(34)

Dimana 0 atau 1 adalah derajat keanggotaan himpunan ui pada himpunan fuzzy

Ai,dan apabila derajat keanggotaan maksimum suatu data berada dalam

himpunan fuzzy Ai, maka nilai linguistik atau hasil fuzzifikasi data tersebut

adalah Ai (Haris, 2010).

4. Fuzzifikasi data historis yang ada.

5. Menetapkan Heuristic Fuzzy Logical Relationship Group. 6. Peramalan.

Adapun penelitian sebelumnya dirangkum pada Tabel 2.4 (Stevenson et al. 2009)

Tabel 2.4 Penelitian Fuzzy Time Series Terdahulu pada Peramalan Pendaftaran

Universitas Alabama

No. Peneliti Model Fuzzy Time Series yang digunakan

Tingkat Error

AFER

1. Song dan Chissom Time Invariant 4.3 %

2. Chen Arithmetic Operation 3.11%

3. Huarng Heuristic 1.5%

Adapun perbedaan metode fuzzy time series yang telah diteliti sebelumnya dengan metode average-based fuzzy time series yang akan diimplementasikan pada penelitian ini, terletak pada proses penentuan jumlah himpunan fuzzy yang akan digunakan. Pada penelitian ini jumlah himpunan fuzzy yang digunakan akan ditentukan menurut interval berbasis nilai rata-rata. Dan untuk peramalan, model yang diterapkan pada metode average-based fuzzy time series menerapkan model yang hampir sama dengan model yang diterapkan Chen pada Arithmetic Operation.

2.4 Peramalan dengan Metode Average-Based Fuzzy Time Series

Pada penelitian tentang peramalan dengan metode fuzzy time series sebelumnya disimpulkan bahwa semakin banyak himpunan fuzzy yang digunakan maka tingkat


(35)

fuzzy yang efektif belum ada, sehingga jumlah himpunan fuzzy ditentukan secara acak (Hernasary, 2007). Xihao dan Yimin (2007) melakukan penelitian untuk menentukan jumlah himpunan fuzzy yang efektif , yaitu dengan penentuan interval berbasis nilai rata-rata. Proses penentuan interval inilah yang diterapkan dalam metode

average-based fuzzy time series dan menjadi keunggulannya dibanding metode fuzzy time

series sebelumnya.

Adapun proses dalam metode average-based fuzzy time series dapat dilihat pada Gambar 2.10

Gambar 2.10 Proses dalam Metode Average-Based Fuzzy Time Series

2.4.1 Interval Berbasis Nilai Rata- rata ( Average-Based Lengths)

Interval berbasis nilai rata-rata berpengaruh dalam penentuan jumlah himpunan fuzzy

yang akan digunakan dalam proses peramalan dengan metode average-based fuzzy Menentukan himpunan semesta dari data historis lalu membaginya menjadi

beberapa subhimpunan sesuai interval berbasis nilai rata-rata.

.Mendefinisikan himpunan fuzzydengan persamaan (2.17)

Menentukan derajat keanggotaan tiap data dan merubah data ke dalam nilai linguistik

fuzzy

Menentukan Fuzzy Logical Relationship (FLR)

Menentukan Fuzzy Logical Relationship Group (FLRG)


(36)

time series, Adapun langkah-langkah untuk menentukan interval berbasis nilai rata-rata adalah (Xihao et al. 2007):

1. Kalkulasikan seluruh selisih absolute antara Dt+1 dan Dt (t=1,.., n). Dimana D

adalah data aktual dan t adalah periode. Lalu hitung nilai rata-ratanya. 2. Ambil setengah dari nilai rata-rata selisih absolute (langkah 1).

3. Sesuai nilai yang diperoleh (langkah 2) tetapkan basis nilai tesebut menurut Tabel 2.5.

Tabel 2.5 Pemetaan Basis Peramalan (Xihao et al. 2007).

Range Basis

0.1-1.0 0.1

1.1-10 1

11-100 10

101-1000 100

4. Bulatkan nilai yang diperoleh (langkah 2) sesuai dengan tabel pemetaan basis yang ada pada Tabel 2.5 untuk mendapatkan interval berbasis nilai rata-rata.

Sebagai contoh misalkan terdapat data time series penjualan telur dalam hitungan papan yaitu : 30, 50, 80, 120, 110, dan 70. Maka langkah-langkah untuk mendapatkan interval berbasis nilai rata-rata dari data time series tersebut adalah :

1. Selisih absolute tiap data adalah 20,30,40,10, dan 40 maka rata-ratanya adalah 28.

2. Ambil setengah dari nilai 28, maka diperoleh nilai 14. 3. Menurut Tabel 2.5 nilai 14 termasuk ke dalam basis 10.

4. Bulatkan 14 dengan basis 10, maka didapatkan interval berbasis nilai rata-rata yaitu 10.


(37)

2.4.2Fuzzy Logical Relationship (FLR)

Jika terdapat relasi R (t, t+1 ) sehingga Ai(t+1) = Ai(t) × R (t,t+1) dengan simbol ×

adalah suatu operator maka Ai(t+1) disebabkan oleh Ai(t). fuzzy logical relationship

(FLR) yang ada antara Ai(t+1) dan Ai(t) dinotasikan dengan (Xihao et al, 2007) :

Ai(t) → Ai(t+1) (2.18)

Dimana Ai(t)disebut sebagai “sisi kiri” dan Ai(t+1)disebut “sisi kanan”.

2.4.3 Fuzzy Logical Relationship Group (FLRG)

Fuzzy logical relationship group (FLRG) pada metode average based fuzzy time

series adalah proses mengeliminasi fuzzy logical relationship (FLR) yang berulang dan menggabungkan FLR dengan sisi kiri yang sama kedalam satu grup (Xihao et al. 2007)

Contoh :

Untuk sisi kiri Ai yang sama dan berulang, FLRG dinyatakan sebagai berikut :

Ai→ A(i+1)

Ai→ A(i+1) Ai A(i+1), A(i+2) (2.19)

A i A(i+2)

… … …


(38)

Pada peramalan dengan metode average-based fuzzy time series, peramalan ditentukan dari fuzzy logical relationship group (FLRG). Jika terdapat FLRG

Ai A(i+1), A(i+2)

Maka dapat ditentukan data aktual pada periode t fuzzified pada himpunan fuzzy Ai,

dan untuk peramalan pada periode t+1 diramalkan data akan fuzzified di sekitar himpunan fuzzy A(i+1) dan A(i+2) (Xihao et al. 2007).

Defuzzifikasi adalah cara untuk mendapatkan hasil nilai tegas (crisp) dari himpunan fuzzy (Hernasary, 2007). Proses defuzzifikasi pada metode average-based fuzzy time series diasumsikan (Xihao et al. 2007) :

u

i

U ; (i =1,2,…,n) (2.20)

u

i

Ai ; (i =1,2,…,n) (2.21)

Dimana U adalah himpunan semesta, ui merupakan subhimpunan ke- i dari U dan Ai

adalah himpunan fuzzy dari ui., maka defuzzifikasi pada metode peramalan

average-based fuzzy time series adalah sebagai berikut (Xihao et al. 2007) :

1. Jika hasil fuzzifikasi data pada periode t adalah Aidan hanya ada satu fuzzy logical

relationship (FLR) dengan sisi kiri adalah Ai pada fuzzy logical relationship

group (FLRG) sebagaimana berikut :

AiA(i+1)

Dimana Ai dan A(i+1) adalah himpunan fuzzy dan nilai maksimum derajat

keanggotaan fuzzy A(i+1) terdapat pada himpunan u(i+1), dan midpoint atau nilai


(39)

2. Jika hasil fuzzifikasi data pada periode t adalah Ai dan terdapat beberapa fuzzy

logical relationship (FLR) dengan sisi kiri adalah Ai pada fuzzy logical

relationship group (FLRG) sebagaimana berikut :

AiA(i+1), A(i+2), A(i+3)

Dimana Ai, A(i+1), A(i+2), A(i+3) adalah himpunan fuzzy dan nilai maksimum

keanggotaan fuzzy A(i+1) terdapat pada himpunan u(i+1), nilai maksimum

keanggotaan fuzzy A(i+2) terdapat pada himpunan u(i+2), dan nilai maksimum

keanggotaan fuzzy A(i+3) terdapat pada himpunan u(i+3) dan midpoint atau nilai

tengah dari u(i+1), u(i+2), u(i+3) adalah m1,m2, dan m3 maka hasil peramalan untuk

periode t+1 adalah nilai rata-rata dari m1, m2, dan m3 atau (m1+m2+m3)/3.

3. Jika hasil fuzzifikasi pada periode t adalah Ai dan tidak terdapat logical

relationship (FLR) dengan sisi kiri adalah Ai pada fuzzy logical relationship

group (FLRG) dimana Ai nilai maksimum keanggotaan fuzzy-nya terdapat

pada himpunan ui dan midpoint atau nilai tengah dari ui adalah m, maka hasil

peramalan untuk periode t +1 adalah m.

Dari teori yang telah dibahas sebelumnya, sistem komputasi untuk peramalan

fuzzy time series dapat dilakukan secara lebih mudah dengan metode average-based

fuzzy time series, karena metode ini mempunyai model interval berbasis nilai rata-rata

yang secara terstruktur dapat menentukan jumlah himpunan fuzzy yang akan digunakan sistem, dibandingkan dengan fuzzy time series pada penelitian sebelumnya yang menentukan himpunan fuzzy secara acak dan tidak terstruktur yang menjadikan sistem komputasi menjadi agak rumit. Oleh karena itu pada Bab 3 tentang analisis dan perancangan sistem, penulis akan mengimplementasikan metode average-based fuzzy time series.


(40)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Bab ini secara garis besar membahas analisis metode average-based fuzzy timeseries

pada sistem dan tahap-tahap yang akan dilakukan dalam perancangan sistem yang akan dibangun.

3.1 Identifikasi Masalah

Sebagai salah satu usaha yang berorientasi pada profit, distributor telur diharapkan dapat terus meningkatkan keuntungan, salah satunya dengan menyediakan telur sesuai dengan permintaan pasar, agar tidak terjadi kekurangan atau kelebihan telur yang dipasarkan. Menurut hasil survei pada salah satu distributor telur, sering terjadi masalah dalam penyediaan telur karena jumlah telur yang akan dipasarkan tidak sesuai dengan jumlah permintaan, sehingga hal ini sering menyebabkan kerugian. Jika jumlah telur yang disediakan melebihi permintaan, maka telur akan menumpuk di gudang dan akhirnya busuk. Untuk menghindari kerugian yang lebih besar distributor ini terpaksa menjual kepada distributor lain tetapi dengan harga pokok. Sebaliknya jika jumlah telur yang disediakan lebih sedikit dari permintaan pasar, maka distributor ini terpaksa mengambil dari distributor lain untuk mencukupinya, tentu saja dengan harga diatas standar sehingga keuntungan yang diperoleh berkurang. Hal ini tentu saja akan mengancam keberlangsungan usaha tersebut. Jadi, diperlukan suatu sistem otomasi yang dapat memprediksi atau meramalkan jumlah telur yang akan dipasarkan sesuai permintaan dengan suatu metode tertentu untuk periode mendatang.


(41)

3.2 Data yang Digunakan

Data yang digunakan dalam penelitian ini adalah data jumlah penjualan telur pada salah satu distributor telur di Kabupaten Deli Serdang dari Tahun 2009-2011. Data dikelompokkan per minggu agar peramalan dapat dilakukan sesering mungkin. Seluruh data berjumlah 155 data seperti yang dirangkum pada Tabel 3.1

Tabel 3.1 Rangkuman Data Penjualan Telur Tahun 2009-2011

No. Periode Jumlah (Papan)

1. 5 Januari 2009 322

2. 12 Januari 2009 331

3. 19 Januari 2009 383

4. 26 Januari 2009 341

5. 2 Februari 2009 352

6. 9 Februari 2009 390

7. 16 Februari 2009 361

8. 23 Februari 2009 300

9. 2 Maret 2009 342

. . . . . . . . .

70. 3 Mei 2010 350

71. 10 Mei 2010 362

72. 17 Mei 2010 310

. . . . . . . . .

150. 14 November 2011 384

151. 21 November 2011 352

152. 28 Desember 2011 333

153. 5 Desember 2011 322

154. 12 Desember 2011 383


(42)

Dari Tabel 3.1 diatas dapat ditentukan bahwa data penjualan telur dari Tahun 2009-2011 merupakan data time series berbentuk pola horizontal karena data tersebut disusun secara periodik yaitu per minggu dan beruntun serta berfluktuasi pada nilai rata-rata yang konstan yaitu antara 300 sampai dengan 390 papan. Untuk pola data pada Tabel 3.1 dapat dilihat pada Gambar 3.1

Gambar 3.1 Pola Horizontal Penjualan Telur Tahun 2009-2011

3.3 Analisis Sistem

Sistem Peramalan Jumlah Penjualan Distributor Telur terhadap Permintaan Pasar menggunakan Metode Average-Based Fuzzy Time Series merupakan suatu sistem yang dikhususkan untuk membantu penentuan jumlah penjualan telur satu minggu ke depan sesuai dengan permintaan pasar.

Sistem menerima masukan berupa data penjualan telur berbentuk time series

yang berisi jumlah telur yang terjual per minggu. Kemudian data tersebut diproses dengan metode average-based fuzzy time series untuk mendapatkan hasil peramalan satu minggu ke depan. Adapun gambaran algoritma metode average-based fuzzy time series dapat dilihat pada Gambar 3.2.


(43)

Mulai

Input data penjualan telur

Membagi himpunan data penjualan telur menjadi sejumlah bagian sesuai interval

berbasis nilai rata-rata.

Menentukan himpunan fuzzy

Menghitung derajat keanggotaan dan merubah data ke dalam nilai linguistik fuzzy

Defuzzifikasi hasil peramalan

Output berupa hasil peramalan dalam bilangan tegas (crisp)

Selesai

Menentukan Fuzzy Logical Relationship Group Menentukan Fuzzy Logical Relationship

Peramalan


(44)

Adapun cara kerja sistem peramalan yang akan dibangun, dirancang untuk beroperasi sebagai berikut :

1. Input data penjualan telur per minggu ke dalam ke dalam database SQL Server 2008.

2. Sistem yang dibangun akan menentukan himpunan semesta dari data penjualan telur yang telah diinput ke dalam database. Himpunan semesta dari data penjualan telur dapat diinisialkan dengan

U = (Dmin, Dmax) (3.1)

Dimana : Dmin = Data Penjualan Telur Minimal Dmax = Data Penjualan Telur Maksimal

3. Menentukan interval berbasis nilai rata-rata dengan langkah-langkah sebagai berikut :

a. Menjumlahkan seluruh selisih absolute antara Dt+1 dan Dt (t=1,.., n). Dimana D

adalah data penjualan telur dan t adalah periode. Lalu dihitung nilai rata-ratanya.

b. Menentukan setengah dari nilai rata-rata selisih absolute (langkah a).

c. Sesuai nilai yang diperoleh (langkah b) ditetapkan basis nilai tesebut menurut pemetaan basis peramalan pada Tabel 2.5.

d. Membulatkan nilai yang diperoleh (langkah b) sesuai dengan tabel pemetaan basis yang ada pada Tabel 2.5. Hasil pembulatan tersebut merupakan interval berbasis nilai rata-rata.

4. Membagi himpunan semesta U pada persamaan (3.1) menjadi subhimpunan ui

sesuai interval berbasis rata-rata. Dimana ui adalah subhimpunan ke-i dari


(45)

Ada dua cara untuk membagi himpunan semesta U menjadi subhimpunan ui,

yang pertama dengan menjadikan interval berbasis nilai rata-rata sebagai pembaginya, dan yang kedua dengan menjadikan interval berbasis nilai rata-rata sebagai range bagi setiap subhimpunan ui.

1. Pembagian himpunan semesta U menjadi subhimpunan ui dengan menjadikan

interval rata-rata sebagai pembaginya (Haris, 2010):

a.Tetapkan U = (Dmin, Dmax)

Dimana Dmin = Data Penjualan Minimal Dmax = Data Penjualan Maksimal Contoh : U = (300,390)

b. Tetapkan n = Banyak subhimpunan u yang akan digunakan.

n =

(3.2)

Contoh : n =

n = 9

Jadi, ditetapkan himpunan semesta U dapat dibagi sebanyak 9 subhimpunan

ui, yang diketahui dari nilai n.

c. Tetapkan ui sebagai subhimpunan dari himpunan semesta U yang ke-i;

(i = 1,2,…,n), dimana :

ui = (Dmin, D)

.

. (3.3)

. un = (D, Dmax)

D adalah data penjualan ditambah range yang disesuaikan dimulai dari Dmin.


(46)

u2 = (310,320)

u3 = (320,330)

u4 = (330,340)

u5 = (340,350)

u6 = (350,360)

u7 = (360,370)

u8 = (370,380)

u9 = (380,390)

2. Pembagian himpunan semesta U menjadi subhimpunan ui dengan menjadikan

interval berbasis nilai rata-rata sebagai range bagi setiap subhimpunan ui (Xihao

et al. 2007):

a. Tetapkan U = (Dmin, Dmax)

Dimana Dmin = Data Penjualan Minimal; Dmax = Data Penjualan Maksimal; Contoh : U = (300,390).

b. Tetapkan ui sebagai subhimpunan dari himpunan semesta U yang ke-i;

(i = 1,2,…,n), Dimana

ui = (3.4)

r merupakan interval berbasis nilai rata-rata yang telah ditentukan sebelumnya,dan tidak lebih besar dari .

Contoh : Untuk interval berbasis rata-rata bernilai 10

u1 =

= (300,310) u2 =

= (310,320) u3 =


(47)

u4 =

= (330,340) u5 =

= (340,350) u6 =

= (350,360) u7=

= (360,370) u8=

= (370,380) u9=

= (380,390)

Menurut hasil penelitian, persamaan (3.4) akan menjadikan proses komputasi lebih sederhana dari persamaan (3.3), maka sistem peramalan yang akan dibangun akan menggunakan persamaan (3.4) untuk mempermudah proses komputasi dalam penentuan jumlah subhimpunan ui.

5. Mendefinisikan himpunan fuzzy sesuai persamaan (2.17) dan merubah data kedalam nilai linguistik fuzzy. Dari data penjualan telur Tahun 2009-2011 yang dimiliki, variabel jumlah penjualan telur dibagi kedalam 5 interval yaitu :

1. u1 untuk jumlah penjualan telur < 320 papan.

2. u2 untuk 320 papan ≤ jumlah penjualan telur < 340 papan.

3. u3 untuk 340 papan ≤ jumlah penjualan telur < 360 papan.

4. u4 untuk 360 papan ≤ jumlah penjualan telur < 380 papan.

5. u5untuk jumlah penjualan telur ≥ 380 papan.

Dari variabel jumlah penjualan telur diatas dibuat himpunan fuzzy berdasarkan persamaan 2.17

A1(Sangat Menurun) = 1 / u1 + 0.5 / u2 + 0 / u3 + 0 / u4+ 0 / u5.

A2(Menurun) = 0.5 / u1 + 1 / u2 + 0.5 / u3 + 0 / u4+ 0 / u5.


(48)

A4(Meningkat) = 0 / u1 + 0 / u2 + 0.5 / u3 + 1 / u4+ 0.5 / u5.

A5 (Sangat Meningkat) = 0 / u1 + 0 / u2 + 0 / u3 + 0.5 / u4+ 1 / u5.

Dengan uiUdiberi simbol ”/” untuk menyatakan derajat keanggotaan ui (i= 1…5)

terhadap Ai (i= 1… 5). Untuk himpunan fuzzy sesuai dengan persamaan (2.17) dapat dilihat pada Gambar 3.3

Gambar 3.3 Himpunan Fuzzy untuk Data Penjualan Telur

Jika data penjualan telur pada periode t adalah D(t), dan D(t)

ui dan jika nilai yang

dinyatakan oleh himpunan fuzzy Ai dengan nilai keanggotaan maksimum jatuh pada

ui, maka D(t) dinyatakan fuzzified pada Ai. (Hernasary, 2007).

6. Menentukan Fuzzy Logical Relationship (FLR) untuk setiap data dengan persamaan (2.18).

7. Menentukan Fuzzy Logical Relationship Group (FLRG) dan peramalan dengan persamaan (2.19).

8. Defuzzifikasi untuk mendapatkan hasil peramalan.dengan metode average-based

dengan ketentuan sebagai berikut (Xihao et al.2007): 0

0.5 1

300 320 340 360 380 400

De

ra

ja

t

Ke

an

ggot

aa

n

Data Penjualan Telur

A1 (Sangat Menurun) A2 (Menurun) A3 (Sedang) A4 (Meningkat) A5 (Sangat Meningkat)


(49)

a. Misalkan,hasil fuzzifikasi data pada periode t adalah Ai dan hanya ada satu

fuzzy logical relationship (FLR) dengan sisi kiri adalah Ai sebagaimana

berikut :

AiA(i+1)

Dimana Ai dan A(i+1) adalah himpunan fuzzy dan nilai maksimum

derajat keanggotaan fuzzy A(i+1) terdapat pada himpunan u(i+1), dan midpoint

atau nilai tengah dari u(i+1) adalah m1, maka hasil peramalan untuk periode

t +1 adalah m1.

Contoh :

A1A2

Dimana A1 dan A2 adalah himpunan fuzzy dan nilai maksimum derajat keanggotaan fuzzy A2 terdapat pada himpunan u2, dan midpoint atau nilai tengah dari u2adalah 307, maka hasil peramalan untuk periode t +1 adalah 307.

b. Misalkan, hasil fuzzifikasi data pada periode t adalah Ai dan terdapat beberapa

fuzzylogical relationship (FLR) dengan sisi kiri adalah Ai sebagaimana berikut

:

AiA(i+1), A(i+2), A(i+3)

Dimana Ai, A(i+1), A(i+2), A(i+3) adalah himpunan fuzzy dan nilai

maksimum keanggotaan fuzzy A(i+1) terdapat pada himpunan u(i+1), nilai

maksimum keanggotaan fuzzy A(i+2) terdapat pada himpunan u(i+2), dan nilai

maksimum keanggotaan fuzzy A(i+3) terdapat pada himpunan u(i+3) dan

midpoint atau nilai tengah dari u(i+1), u(i+2), u(i+3) adalah m1,m2, dan m3 maka

hasil peramalan untuk periode t + 1 adalah nilai rata-rata dari m1, m2, dan m3

atau (m1+m2+m3)/3.

Contoh :


(50)

Dimana A1, A2, A3, A4 adalah himpunan fuzzy dan nilai maksimum keanggotaan fuzzy A2 terdapat pada himpunan u2, nilai maksimum

keanggotaan fuzzy A3 terdapat pada himpunan u3, dan nilai maksimum

keanggotaan fuzzy A4 terdapat pada himpunan u4 dan midpoint atau nilai

tengah dari u2, u3, u4 adalah 307, 321, dan 335 maka hasil peramalan untuk

periode t+1 adalah nilai rata-rata dari 307, 321, dan 335 atau (307+321+335)/3, yaitu 321.

c. Jika hasil fuzzifikasi data pada periode t adalah Ai dan tidak terdapat fuzzy

logical relationship (FLR) dengan posisi kiri adalah Ai, dimana Ai nilai

maksimum keanggotaan fuzzy-nya terdapat pada himpunan ui dan midpoint

atau nilai tengah dari ui adalah m, maka hasil peramalan untuk periode t +1

adalah m.

Contoh :

A1

-A1 nilai maksimum keanggotaan fuzzy-nya terdapat pada himpunan u1 dan

midpoint atau nilai tengah dari u1 adalah 305, maka hasil peramalan untuk

periode t +1 adalah 305.

Algoritma average-based fuzzy time series dapat dijelaskan oleh pseudocode berikut :

average_based_fuzzy_time_series {

Dmin ← min(D)

Dmax ← max(D) ave ← 0 n ← D.size

for i=0 to n-2 do

ave = ave + D[i][0] – D[i+1][0]

ave = abs(ave) end for

ave = ave / (2n)

interval = nearest10(ave)

c ← 0

for i=Dmin to Dmax step interval do u[c][0]=i


(51)

u[c][1] = i+interval c = c+1

end for

for i=0 to D.size do idx=0

while (D[i][0] > u[idx][1]) and idx<u.size idx++

A[i]=idx end for

for i=0 to D.size do

flrg[A[i]].add(A[i+1]) end for

for i=0 to D.size do FuzzyResult = 0

if (flrg[A[i]].count<1) Then

FuzzyResult = average(u[A[i]][0], u[A[i]][1]) else

for j=0 to flrg[A[i]].size do

FuzzyResult = FuzzyResult + average(u[A[i]][0],

u[A[i]][1]) end for

FuzzyResult = FuzzyResult / flrg[A[i]].size Result[i] = FuzzyResult

end if end for }

3.4 Perancangan Sistem

Pada tahap perancangan sistem akan dilakukan perancangan bagaimana data penjualan telur diproses di dalam sistem dan dilakukan juga perancangan tentang antarmuka sistem yang akan dibangun.

3.4.1 Diagram Aliran Data

Diagram Aliran Data / Data Flow Diagram (DFD) adalah alat yang biasa dipakai untuk mendokumentasi proses dalam sistem atau sebuah teknis grafis yang menggambarkan aliran informasi dan transformasi yang diaplikasikan pada saat data bergerak dari input menjadi output (Simorangkir, 2012). Gambar 3.4 menggambarkan diagram aliran data dari sistem yang akan dibuat.


(52)

Pengguna

Sistem Peramalan Penjualan Telur dengan

Metode ABFTS

Data Penjualan Telur

Hasil Peramalan Penjualan Telur

Gambar 3.4 Diagram Konteks DFD

Penjelasan proses diagram konteks sistem peramalan penjualan telur dengan metode ABFTS adalah sebagai berikut :

a. Proses

Nama Proses : Sistem Peramalan Penjualan Telur dengan Metode ABFTS Keterangan : Proses untuk melakukan peramalan jumlah penjualan telur

satu minggu ke depan dengan metode ABFTS.

b. Arus Data

Masukan : - Data penjualan telur berupa periode penjualan dan jumlah penjualan.

Keluaran : - Data penjualan telur beserta hasil peramalan untuk satu minggu ke depan

Proses pada diagram konteks diatas dapat dipecah lagi menjadi proses-proses yang lebih kecil dan lengkap dalam DFD Level 1. Diagram untuk DFD level 1dapat dilihat pada Gambar 3.5.


(53)

Gambar 3.5 DFD Level 1

Penjelasan proses DFD Level 1 sistem peramalan penjualan telur dengan metode ABFTS adalah sebagai berikut :

a. Proses 1.0

Nama Proses : Login.

Masukan : username dan password. Keluaran : Pemberitahuan error login. Keterangan : Proses untuk masuk ke sistem.

b. Proses 2.0

Nama Proses : Olah Data Penjualan.

Masukan : Periode penjualan telur beserta jumlah penjualan pada masing- masing periode.

Keluaran : Detail data penjualan telur.

Keterangan : Proses untuk mengolah data penjualan.

c. Proses 3.0

Nama Proses : Peramalan


(54)

pengguna.

Keluaran : Detail data penjualan telur beserta hasil peramalan satu minggu ke depan.

Proses 2.0 pada DFD Level 1 dapat dipecah lagi menjadi proses-proses yang lebih jelas yang dapat dilihat pada Gambar 3.6.

2.1 Tambah Data

Penjualan

2.2 Ubah Data

Penjualan

2.3 Hapus Data

Penjualan

Data Penjualan Pengguna

Input Data Penjualan Baru

Ubah Data Penjualan

Detail Data Penjualan

Hapus Data Penjualan

Detail data penjualan Detail Data Penjualan

Gambar 3.6 DFD Level 1 Proses 2.0

Penjelasan DFD Level 1 Proses 2.0 sistem peramalan penjualan telur dengan metode ABFTS adalah sebagai berikut :

a. Proses 2.1

Nama Proses : Tambah Data Penjualan. Masukan : Data penjualan baru. Keluaran : Detail data penjualan telur.

Keterangan : Proses untuk memasukkan data penjualan telur yang baru.

b. Proses 2.2

Nama Proses : Ubah Data Penjualan.

Masukan : Data baru untuk menggantikan data yang lama. Keluaran : Detail data penjulan telur.


(55)

c. Proses 2.3

Nama Proses : Hapus Data Penjualan.

Masukan : Data penjualan telur yang akan dihapus. Keluaran : Detail data penjualan telur.

Keterangan : Proses untuk menhapus data penjualan telur.

Proses 3.0 pada DFD Level 1 dapat dipecah lagi menjadi proses-proses yang lebih jelas yang dapat dilihat pada Gambar 3.7.


(56)

Gambar 3.7 DFD Level 1 Proses 3.0

Penjelasan DFD Level 1 Proses 3.0 sistem peramalan penjualan telur dengan metode ABFTS adalah sebagai berikut :

a. Proses 3.1

Nama Proses : Mengambil Data Penjualan dari Database.

Masukan : Range periode yang ditentukan pengguna. Keluaran : Detail data penjualan telur.


(57)

b. Proses 3.2

Nama Proses : Penentuan Himpunan Semesta Data Penjualan . Masukan : Data penjualan yang diinginkan pengguna. Keluaran : Himpunan semesta data penjualan.

Keterangan : Proses untuk menentukan himpunan semesta dari data penjualan.

c. Proses 3.3

Nama Proses : Penentuan Interval Berbasis Nilai Rata-rata. Masukan : Himpunan semesta data penjualan.

Keluaran : Interval berbasis nilai rata-rata.

Keterangan : Proses untuk menentukan interval berbasis nilai rata-rata.

d. Proses 3.4

Nama Proses : Pembagian Himpunan Semesta sesuai Interval berbasis nilai rata- rata.

Masukan : interval berbasis nilai rata- rata.

Keluaran : Beberapa subhimpunan dari himpunan semesta data penjualan.

Keterangan : Proses untuk membagi himpunan semesta menjadi beberapa subhimpunan.

e. Proses 3.5

Nama Proses : Perhitungan Derajat Keanggotaan Data Penjualan pada Himpunan Fuzzy.

Masukan : Subhimpunan dari himpunan semesta data penjualan. Keluaran : Nilai linguistik fuzzy.

Keterangan : Proses untuk menentukan derajat keanggotaan data penjualan pada himpunan fuzzy dan merubah data ke dalam nilai

linguistik fuzzy.


(58)

f. Proses 3.6

Nama Proses : Fuzzy Logical Relationship (FLR). Masukan : Nilai linguistik data penjualan.

Keluaran : Fuzzy logical relationship group (FLRG).

Keterangan : Proses untuk menentukan hubungan antar data dan melakukan peramalan penjualan.

g. Proses 3.7

Nama Proses : Defuzzifikasi.

Masukan : Fuzzy Logical Relationship Group (FLRG).

Keluaran : Hasil peramalan berbentuk bilangan tegas atau crisp.

Keterangan : Proses untuk mengubah peramalan secara FLRG ke dalam bilangan tegas atau crisp.

3.4.2 Kamus Data

Kamus data adalah suatu daftar data elemen yang terorganisir dengan defenisi yang tetap dan sesuai dengan sistem sehingga pengguna dan analis sistem mempunyai pengertian yang sama tentang input, output dan komponen data store (Simorangkir, 2011). Kamus data ini berguna pada tahapan implementasi sistem.

Tabel 3.2. Kamus Data User ID

No. Field Tipe Data Panjang Keterangan

1. Kode Varchar 255 Kode pengguna sebagai

primary key

2. Username Varchar 255 Nama Pengguna


(59)

Tabel 3.3. Kamus Data Penjualan

No. Field Tipe Data Panjang Keterangan

1. Kode Varchar 255 Kode penjualan sebagai

primary key

2. Tanggal Date - Periode penjualan

3. Jumlah Int - Jumlah Penjualan

3.4.3 Perancangan Menu Sistem

Gambar 3.8 Struktur Menu Sistem

3.4.4 Perancangan Antarmuka

1. Rancangan Halaman Login

x Username

Password

Ok Cancel


(60)

Halaman ini digunakan untuk masuk ke menu utama sistem. Pengguna diminta untuk mengisi Username dan Password.

2. Rancangan Halaman Utama

Halaman Utama - x

Sistem || Olah Data Penjualan || Peramalan

Pengguna

a Logout b

c

Keluar

SISTEM PERAMALAN PENJUALAN TELUR DENGAN METODE ABFTS

Gambar 3.10 Rancangan Halaman Utama

Keterangan :

Pada Halaman Utama terdapat tiga menu pilihan :

a. Menu Sistem yang memungkinkan user untuk pergi ke halaman pengguna, logout

dari halaman utama atau keluar dari sistem.

b. Menu Olah Data Penjualan yang memungkinkan user untuk pergi ke halaman olah data penjualan.


(61)

3. Rancangan Halaman Pengguna

Form Pengguna - x Utama

Kode Penggguna

Username Simpan a

Password Ubah Batal

Konfirmasi Password Hapus

b

Filter

Kode Pengguna Username Cari

c

Gambar 3.11 Rancangan Halaman Pengguna

Keterangan :

a. User dapat memasukkan data pengguna baru berupa username dan password untuk

disimpan pada database.

b. User dapat mencari data pengguna yang telah disimpan sebelumnya di dalam

database untuk diubah atau dihapus dari database.

c. Menampilkan seluruh data pengguna yang tersimpan di dalam database, atau hanya data pengguna yang dicari oleh user.


(1)

MsgBox("Pilih bulan dan tahun") Else

If deconvMonth(BulanCombo.Text) = 1 Or deconvMonth(BulanCombo.Text) = 2 Then

cond = " WHERE tanggal LIKE '%" & TahunCombo.Text & "%-0" & deconvMonth(BulanCombo.Text) & "-%'"

Else

cond = " WHERE tanggal LIKE '%" & TahunCombo.Text & "%-%" & deconvMonth(BulanCombo.Text) & "%-%'"

End If proses() End If End Sub

Private Sub TahunCombo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TahunCombo.SelectedIndexChanged

IsiBulan(TahunCombo.Text) End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Button4.Enabled = True Button3.Enabled = True

cond = "WHERE tanggal BETWEEN '" & Format(Tanggal1DP.Value, "yyyy-MM-dd") & "' AND '" & Format(Tanggal2DP.Value, "yyyy-MM-"yyyy-MM-dd") & "'"

proses() End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

FormGrafik.Show() End Sub

'Print data grid

Private oStringFormat As StringFormat

Private oStringFormatComboBox As StringFormat Private oButton As Button

Private oCheckbox As CheckBox Private oComboBox As ComboBox Private nTotalWidth As Int16 Private nRowPos As Int16 Private NewPage As Boolean Private nPageNo As Int16 Private Header As String

Private sUserName As String = FormUtama.LabelPengguna.Text

Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint oStringFormat = New StringFormat

oStringFormat.Alignment = StringAlignment.Near oStringFormat.LineAlignment = StringAlignment.Center oStringFormat.Trimming = StringTrimming.EllipsisCharacter oStringFormatComboBox = New StringFormat

oStringFormatComboBox.LineAlignment = StringAlignment.Center oStringFormatComboBox.FormatFlags = StringFormatFlags.NoWrap oStringFormatComboBox.Trimming = StringTrimming.EllipsisCharacter


(2)

oButton = New Button oCheckbox = New CheckBox oComboBox = New ComboBox nTotalWidth = 0

For Each oColumn As DataGridViewColumn In DataGridView1.Columns nTotalWidth += oColumn.Width

Next

nPageNo = 1 NewPage = True nRowPos = 0 End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Static oColumnLefts As New ArrayList

Static oColumnWidths As New ArrayList Static oColumnTypes As New ArrayList Static nHeight As Int16

Dim nWidth, i, nRowsPerPage As Int16 Dim nTop As Int16 = e.MarginBounds.Top Dim nLeft As Int16 = e.MarginBounds.Left If nPageNo = 1 Then

For Each oColumn As DataGridViewColumn In DataGridView1.Columns nWidth = CType(Math.Floor(oColumn.Width / nTotalWidth * nTotalWidth * (e.MarginBounds.Width / nTotalWidth)), Int16)

nHeight = e.Graphics.MeasureString(oColumn.HeaderText, oColumn.InheritedStyle.Font, nWidth).Height + 11

oColumnLefts.Add(nLeft) oColumnWidths.Add(nWidth)

oColumnTypes.add(oColumn.GetType) nLeft += nWidth

Next End If

Do While nRowPos < DataGridView1.Rows.Count

Dim oRow As DataGridViewRow = DataGridView1.Rows(nRowPos) If nTop + nHeight >= e.MarginBounds.Height + e.MarginBounds.Top Then

DrawFooter(e, nRowsPerPage) NewPage = True

nPageNo += 1

e.HasMorePages = True Exit Sub

Else

If NewPage Then ' Draw Header

e.Graphics.DrawString(Header, New Font(DataGridView1.Font, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top - e.Graphics.MeasureString(Header, New Font(DataGridView1.Font, FontStyle.Bold), e.MarginBounds.Width).Height - 13)

' Draw Columns

nTop = e.MarginBounds.Top i = 0

For Each oColumn As DataGridViewColumn In DataGridView1.Columns

e.Graphics.FillRectangle(New

SolidBrush(Drawing.Color.LightGray), New Rectangle(oColumnLefts(i), nTop, oColumnWidths(i), nHeight))

e.Graphics.DrawRectangle(Pens.Black, New Rectangle(oColumnLefts(i), nTop, oColumnWidths(i), nHeight)) e.Graphics.DrawString(oColumn.HeaderText,


(3)

New RectangleF(oColumnLefts(i), nTop, oColumnWidths(i), nHeight), oStringFormat)

i += 1 Next

NewPage = False End If

nTop += nHeight i = 0

For Each oCell As DataGridViewCell In oRow.Cells

If oColumnTypes(i) Is GetType(DataGridViewTextBoxColumn) OrElse oColumnTypes(i) Is GetType(DataGridViewLinkColumn) Then

e.Graphics.DrawString(oCell.Value.ToString,

oCell.InheritedStyle.Font, New SolidBrush(oCell.InheritedStyle.ForeColor), New RectangleF(oColumnLefts(i), nTop, oColumnWidths(i), nHeight), oStringFormat) ElseIf oColumnTypes(i) Is GetType(DataGridViewButtonColumn) Then

oButton.Text = oCell.Value.ToString

oButton.Size = New Size(oColumnWidths(i), nHeight) Dim oBitmap As New Bitmap(oButton.Width,

oButton.Height)

oButton.DrawToBitmap(oBitmap, New Rectangle(0, 0, oBitmap.Width, oBitmap.Height))

e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts(i), nTop))

ElseIf oColumnTypes(i) Is GetType(DataGridViewCheckBoxColumn) Then

oCheckbox.Size = New Size(14, 14)

oCheckbox.Checked = CType(oCell.Value, Boolean) Dim oBitmap As New Bitmap(oColumnWidths(i), nHeight) Dim oTempGraphics As Graphics =

Graphics.FromImage(oBitmap)

oTempGraphics.FillRectangle(Brushes.White, New Rectangle(0, 0, oBitmap.Width, oBitmap.Height))

oCheckbox.DrawToBitmap(oBitmap, New Rectangle(CType((oBitmap.Width - oCheckbox.Width) / 2, Int32),

CType((oBitmap.Height - oCheckbox.Height) / 2, Int32), oCheckbox.Width, oCheckbox.Height))

e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts(i), nTop))

ElseIf oColumnTypes(i) Is GetType(DataGridViewComboBoxColumn) Then

oComboBox.Size = New Size(oColumnWidths(i), nHeight) Dim oBitmap As New Bitmap(oComboBox.Width,

oComboBox.Height)

oComboBox.DrawToBitmap(oBitmap, New Rectangle(0, 0, oBitmap.Width, oBitmap.Height))

e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts(i), nTop))

e.Graphics.DrawString(oCell.Value.ToString,

oCell.InheritedStyle.Font, New SolidBrush(oCell.InheritedStyle.ForeColor), New RectangleF(oColumnLefts(i) + 1, nTop, oColumnWidths(i) - 16, nHeight),

oStringFormatComboBox)

ElseIf oColumnTypes(i) Is GetType(DataGridViewImageColumn) Then

Dim oCellSize As Rectangle = New Rectangle(oColumnLefts(i), nTop, oColumnWidths(i), nHeight)

Dim oImageSize As Size = CType(oCell.Value, Image).Size e.Graphics.DrawImage(oCell.Value, New

Rectangle(oColumnLefts(i) + CType(((oCellSize.Width - oImageSize.Width) / 2), Int32), nTop + CType(((oCellSize.Height - oImageSize.Height) / 2), Int32), CType(oCell.Value, Image).Width, CType(oCell.Value, Image).Height))


(4)

End If

e.Graphics.DrawRectangle(Pens.Black, New Rectangle(oColumnLefts(i), nTop, oColumnWidths(i), nHeight)) i += 1

Next End If nRowPos += 1 nRowsPerPage += 1 Loop

DrawFooter(e, nRowsPerPage) e.HasMorePages = False End Sub

Private Sub DrawFooter(ByVal e As

System.Drawing.Printing.PrintPageEventArgs, ByVal RowsPerPage As Int32) Dim sPageNo As String = nPageNo.ToString + " of " +

Math.Ceiling(DataGridView1.Rows.Count / RowsPerPage).ToString ' Right Align - User Name

e.Graphics.DrawString(sUserName, DataGridView1.Font, Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width - e.Graphics.MeasureString(sPageNo, DataGridView1.Font, e.MarginBounds.Width).Width), e.MarginBounds.Top +

e.MarginBounds.Height + 7) ' Left Align - Date/Time

e.Graphics.DrawString(Now.ToLongDateString + " " +

Now.ToShortTimeString, DataGridView1.Font, Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top + e.MarginBounds.Height + 7)

' Center - Page No. Info

e.Graphics.DrawString(sPageNo, DataGridView1.Font, Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width - e.Graphics.MeasureString(sPageNo, DataGridView1.Font, e.MarginBounds.Width).Width) / 2, e.MarginBounds.Top + e.MarginBounds.Height + 31)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

If RadioButton1.Checked Then

Header = "Data penjualan dan peramalan pada bulan " & BulanCombo.Text & " tahun " & TahunCombo.Text

Else

Header = "Data penjualan dan peramalan " & Tanggal1DP.Text & " - " & Tanggal2DP.Text

End If

Dim dlg As New PrintPreviewDialog() dlg.Width = 600

dlg.Height = 700

dlg.Document = PrintDocument1 dlg.ShowDialog()

End Sub End Class

5.

Halaman Grafik

Public Class FormGrafik

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim i As Integer


(5)

dt.Columns.Add("tanggal") dt.Columns.Add("jumlah") dt.Columns.Add("peramalan")

For i = 0 To FormPeramalan.DataGridView1.Rows.Count - 1 Dim dr As DataRow = dt.NewRow

dr("tanggal") =

Format(FormPeramalan.DataGridView1.Rows(i).Cells(1).Value, "yyyy-MM-dd") dr("jumlah") =

Math.Round(FormPeramalan.DataGridView1.Rows(i).Cells(2).Value) dr("peramalan") =

Math.Round(FormPeramalan.DataGridView1.Rows(i).Cells(3).Value) dt.Rows.Add(dr)

Next

Chart1.DataSource = dt

Chart1.Series(0).Name = "Hasil sebenarnya" Chart1.Series.Add("Prediksi")

Chart1.Series(0).IsValueShownAsLabel = True Chart1.Series(1).IsValueShownAsLabel = True Chart1.Series(0).XValueMember = "tanggal" Chart1.Series(1).XValueMember = "tanggal" Chart1.Series(0).YValueMembers = "jumlah" Chart1.Series(1).YValueMembers = "peramalan" Chart1.DataBind()

End Sub

'Print data grid

Private oStringFormat As StringFormat

Private oStringFormatComboBox As StringFormat Private oButton As Button

Private oCheckbox As CheckBox Private oComboBox As ComboBox Private nTotalWidth As Int16 Private nRowPos As Int16 Private NewPage As Boolean Private nPageNo As Int16 Private Header As String

Private sUserName As String = FormUtama.LabelPengguna.Text

Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint oStringFormat = New StringFormat

oStringFormat.Alignment = StringAlignment.Near oStringFormat.LineAlignment = StringAlignment.Center oStringFormat.Trimming = StringTrimming.EllipsisCharacter oStringFormatComboBox = New StringFormat

oStringFormatComboBox.LineAlignment = StringAlignment.Center oStringFormatComboBox.FormatFlags = StringFormatFlags.NoWrap oStringFormatComboBox.Trimming = StringTrimming.EllipsisCharacter oButton = New Button

oCheckbox = New CheckBox oComboBox = New ComboBox nTotalWidth = 0

For Each oColumn As DataGridViewColumn In FormPeramalan.DataGridView1.Columns

nTotalWidth += oColumn.Width Next

nPageNo = 1 NewPage = True nRowPos = 0


(6)

End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim myImage As New Bitmap(780, 500)

Dim myRectangle As New Drawing.Rectangle(0, 0, 780, 500) Chart1.DrawToBitmap(myImage, myRectangle)

e.Graphics.DrawImage(myImage, 0, 150) e.Graphics.DrawString(Header, New

Font(FormPeramalan.DataGridView1.Font, FontStyle.Bold), Brushes.Black,

e.MarginBounds.Left, e.MarginBounds.Top - e.Graphics.MeasureString(Header, New Font(FormPeramalan.DataGridView1.Font, FontStyle.Bold),

e.MarginBounds.Width).Height - 13) DrawFooter(e, nRowPos) myImage.Dispose() End Sub

Private Sub DrawFooter(ByVal e As

System.Drawing.Printing.PrintPageEventArgs, ByVal RowsPerPage As Int32) Dim sPageNo As String = nPageNo.ToString + " of 1"

' Right Align - User Name

e.Graphics.DrawString(sUserName, FormPeramalan.DataGridView1.Font, Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width -

e.Graphics.MeasureString(sPageNo, FormPeramalan.DataGridView1.Font,

e.MarginBounds.Width).Width), e.MarginBounds.Top + e.MarginBounds.Height + 7) ' Left Align - Date/Time

e.Graphics.DrawString(Now.ToLongDateString + " " +

Now.ToShortTimeString, FormPeramalan.DataGridView1.Font, Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top + e.MarginBounds.Height + 7) ' Center - Page No. Info

e.Graphics.DrawString(sPageNo, FormPeramalan.DataGridView1.Font, Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width -

e.Graphics.MeasureString(sPageNo, FormPeramalan.DataGridView1.Font,

e.MarginBounds.Width).Width) / 2, e.MarginBounds.Top + e.MarginBounds.Height + 31)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If FormPeramalan.RadioButton1.Checked Then

Header = "Data penjualan dan peramalan pada bulan " &

FormPeramalan.BulanCombo.Text & " tahun " & FormPeramalan.TahunCombo.Text Else

Header = "Data penjualan dan peramalan " &

FormPeramalan.Tanggal1DP.Text & " - " & FormPeramalan.Tanggal2DP.Text End If

Dim dlg As New PrintPreviewDialog() dlg.Width = 600

dlg.Height = 700

dlg.Document = PrintDocument1 dlg.ShowDialog()

End Sub

Private Sub Chart1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Chart1.Click

End Sub End Class