PERENCANAAN JUMLAH PRODUKSI SNACK PADA NIKI
ECO MENGGUNAKAN LOGIKA FUZZY TSUKAMOTO
Tugas Akhir disusun untuk memenuhi syarat
Mencapai gelar Kesarjanaan Komputer pada
Program Studi Teknik Informatika
Jenjang Program Strata-1
oleh:
ERISAL ADHI NUGROHO
13.01.53.0040
15389
FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS STIKUBANK (UNISBANK)
SEMARANG
2017
ii
iii
iv
MOTTO DAN PERSEMBAHAN
MOTTO
1. Pendidikan merupakan perlengkapan paling baik untuk hari tua
(Aristoteles)
2. Hari ini harus lebih baik dari hari kemarindan hari esok adalah harapan
3. Menunggu kesuksesan adalah tindakan yang sia-sia.
4. Jangan tunda sampai besok apa yang bias engkau kerjakan hari ini.
5. Hidup ini hanya sebentar, jangan gunakan hanya untuk memikirkan
duniawi dan melakukan hal yang tak berguna
6. Jangan terlalu memikirkan masa lalu karena telah pergi dan selesai, dan
jangan terlalu memikirkan masa depan hingga dia datang sendiri. Karena
jika melakukan yang terbaik dihari ini maka hari esok akan lebih baik
PERSEMBAHAAN
1. Orang tua yang telah memberikan kasih sayang serta doa dan
mengajarkan arti kehidupan yang sebenarnya.
2. Saudara-saudara dan keluarga besar yang telah memberikan dukungan dan
doa sehingga Skripsi ini dapat terselesaikan sesuai dengan keinginan.
3. Teman-teman Teknik Informatika yang selalu memberikan semangat
sehingga Skripsi dapat terselesaikan sesuai harapan.
v
FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS STIKUBANK (UNISBANK) SEMARANG
Program Studi : Teknik Informatika
Tugas Akhir Sarjana Komputer
Semester Ganjil Tahun 2017
PERENCANAAN JUMLAH PRODUKSI SNACK PADA NIKI ECO
MENGGUNAKAN LOGIKA FUZZY TSUKAMOTO
ERISAL ADHI NUGROHO
NIM : 13.01.53.004
Abstrak
Niki Eco adalah sebuah usaha rumahan yang bergerak dibidang penjualan
jajanan pasar tradisional dan memproduksi berbagai macam-macam jajanan pasar
tradisional (snack) juga melayani pemesanan snack yang beralamat di pujasera
Pasar Bulu Semarang. Permasalahan yang timbul dari Niki Eco adalah kesulitan
dalam perencanaan jumlah produksi snack untuk bulan-bulan berikutnya. Karena
dalam tiap bulannya penjualan snack meningkat dan Niki Eco hanya
mengandalkan perencanaan tradisional dalam merencanakan produksi snack pada
tiap bulannya
Metode pengembangan sistem yang digunakan dalam penelitian ini adalah
Waterfall, metode analisis menggunakan Logika Fuzzy Tsukamoto, kriteria yang
digunakan yaitu retur sebagai input, penjualan sebagai input, produksi sebagai
output, perancangan menggunakan UML, implementasi menggunakan PHP dan
MySQL.
Perencanaan jumlah produksi snack arem-arem pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto dapat digunakan untuk memprediksi
jumlah produksi snack pada Niki Eco.
Kata Kunci
Niki Eco, Logika Fuzzy Tsukamoto, PHP, MySQL
Semarang : 29 Juli 2017
Pembimbing
(Widiyanto Tri Handoko, DRS, M.Kom)
vi
KATA PENGANTAR
Dengan memanjatkan puji syukur kehadirat Allah SWT. yang telah
melimpahkan segala rahmat, hidayah dan inayah-Nya kepada penulis sehingga
laporan tugas akhir dengan judul “Perencanaan Jumlah Produksi Snack Pada
Niki Eco Menggunakan Logika Fuzzy Tsukamoto” dapat penulis selesaikan
sesuai dengan rencana karena dukungan dari berbagai pihak yang tidak ternilai
besarnya. Oleh karena itu penulis menyampaikan terimakasih kepada:
1. Dr. H. Hasan Abdul Rozak, S.H., C.N selaku Rektor Universitas Stikubank
Semarang.
2. Dr. Drs. Yohanes Suhari, M.MSI selaku Dekan Fakultas Teknologi Informasi.
3. Jati Sasongko, S.Kom, M.Cs selaku Ketua Program Studi Teknik Informatika.
4. Widiyanto Tri Handoko, DRS, M.Kom selaku Pembimbing yang telah
membantu dan memberikan bimbingan serta pengarahan dalam penelitian ini.
5. Dosen-dosen pengampu di Program Studi Teknik Informatika Fakultas
Teknologi Informasi Universitas Stikubank Semarang yang telah memberikan
ilmu dan pengalamannya masing-masing, sehingga penulis dapat
mengimplementasikan ilmu yang telah disampaikan.
Semoga Allah SWT memberikan balasan yang lebih besar kepada beliau-beliau,
dan pada akhirnya penulis berharap bahwa penulisan laporan tugas akhir ini dapat
bermanfaat dan berguna sebagaimana fungsinya.
Semarang, Juli 2017
Penulis
vii
DAFTAR ISI
HALAMAN JUDUL ..................................................................................... i
HALAMAN PERSETUJUAN ...................................................................... ii
HALAMAN PENGESAHAN ....................................................................... iii
MOTTO DAN PERSEMBAHAN ................................................................ iv
ABSTRAKSI ................................................................................................ v
KATA PENGANTAR .................................................................................. vi
DAFTAR ISI ................................................................................................. vii
DAFTAR TABEL ......................................................................................... x
DAFTAR GAMBAR .................................................................................... xi
BAB I PENDAHULUAN
1.1 Latar Belakang Masalah ................................................. 1
1.2 Perumusan Masalah ........................................................ 3
1.3 Tujuan dan Manfaat Penelitian ....................................... 4
1.4 Metode Penelitian ........................................................... 5
1.4.1. Objek Penelitian .................................................. 5
1.4.2. Metode Pengumpulan Data ................................. 5
1.4.3. Metode Pengembangan Sistem ........................... 6
1.5 Sistematika Penulisan ..................................................... 7
BAB II TINJAUAN PUSTAKA
2.1 Pustaka Yang Terkait Dengan Penelitian ....................... 9
2.2 Perbedaan Penelitian Yang Dilakukan Penulis Dengan
Penelitian Terdahulu ....................................................... 13
BAB III LANDASAN TEORI
3.1 Perencanaan .................................................................... 15
3.2 Produksi .......................................................................... 16
3.3 Logika Fuzzy .................................................................. 17
viii
3.3.1. Himpunan Fuzzy ................................................. 17
3.3.2. Fungsi Keanggotaan ............................................ 20
3.3.3. Logika Fuzzy Tsukamoto .................................... 23
3.4 UML (Unified Modeling Language) .............................. 27
3.4.1. Use Case Diagram ............................................... 28
3.4.2. Class Diagram ..................................................... 31
3.4.3. Activity Diagram ................................................. 33
3.4.4. Sequence Diagram .............................................. 34
3.5 PHP ................................................................................. 36
3.6 MySQL ........................................................................... 38
BAB IV ANALISA DAN PERANCANGAN SISTEM
4.1 Analisa Sistem ................................................................. 42
4.1.1. Analisa Permasalahan ......................................... 42
4.1.2. Analisa Kebutuhan Perangkat Keras ................... 43
4.1.3. Analisa Kebutuhan Perangkat Lunak .................. 43
4.1.4. Kriteria Sistem .................................................... 44
4.1.5. Fuzzifikasi ........................................................... 44
4.1.6. Pembentukan Rule .............................................. 48
4.1.5. Fuzzifikasi ........................................................... 44
4.2 Perancangan Sistem ........................................................ 48
4.2.1. Use Case Diagram ............................................... 49
4.2.2. Class Diagram ..................................................... 50
4.2.3. Activity Diagram ................................................. 51
4.2.4. Sequence Diagram .............................................. 51
4.2.5. Perancangan Database ......................................... 52
4.2.6. Perancangan Interface ......................................... 55
BAB V IMPLEMENTASI SISTEM
5.1 Login ............................................................................... 61
5.2 Snack ............................................................................... 62
ix
5.3 Retur ................................................................................ 64
5.4 Penjualan ......................................................................... 66
5.5 Rule ................................................................................. 67
5.6 Perencanaan..................................................................... 68
5.7 Admin .............................................................................. 70
BAB VI HASIL PENELITIAN DAN EVALUASI SISTEM
6.1 Proses Fuzzifikasi ........................................................... 72
6.1.1. Kriteria Retur ...................................................... 72
6.1.2. Kriteria Penjualan................................................ 74
6.2 Mesin Inferensi................................................................ 77
6.3 Defuzzifikasi ................................................................... 86
BAB VII PENUTUP
7.1 Kesimpulan ..................................................................... 88
7.2. Saran ................................................................................ 89
DAFTAR PUSTAKA
LAMPIRAN
x
DAFTAR TABEL
Tabel 3.1. Simbol Use Case Diagram ....................................................... 30
Tabel 3.2. Simbol Class Diagram ............................................................. 32
Tabel 3.3. Simbol Sequence Diagram ....................................................... 35
Tabel 4.1. Rule .......................................................................................... 48
Tabel 4.2. Tabel Bulan .............................................................................. 53
Tabel 4.3. Tabel Snack .............................................................................. 53
Tabel 4.4. Tabel Hasil ............................................................................... 53
Tabel 4.5. Tabel Penjualan ........................................................................ 54
Tabel 4.6. Tabel Rule ................................................................................ 54
Tabel 4.7. Tabel Retur ............................................................................... 55
Tabel 6.1. Retur Snack Arem-Arem.......................................................... 72
Tabel 6.2. Fuzzifikasi Retur ...................................................................... 74
Tabel 6.3. Penjualan Snack Arem-Arem ................................................... 75
Tabel 6.4. Fuzzifikasi Penjualan ............................................................... 76
Tabel 6.5. Mesin Inferensi Januari 2016 ................................................... 80
Tabel 6.6. Mesin Inferensi Pebruari 2016 ................................................. 81
Tabel 6.7. Mesin Inferensi Maret 2016 ..................................................... 81
Tabel 6.8. Mesin Inferensi April 2016 ...................................................... 82
Tabel 6.9. Mesin Inferensi Mei 2016 ........................................................ 82
Tabel 6.10. Mesin Inferensi Juni 2016 ........................................................ 83
Tabel 6.11. Mesin Inferensi Juli 2016 ......................................................... 83
Tabel 6.12. Mesin Inferensi Agustus 2016 ................................................. 84
Tabel 6.13. Mesin Inferensi September 2016 ............................................. 84
Tabel 6.14. Mesin Inferensi Oktober 2016 ................................................. 85
Tabel 6.15. Mesin Inferensi November 2016 .............................................. 86
Tabel 6.16. Defuzzifikasi ............................................................................ 86
xi
DAFTAR GAMBAR
Gambar 3.1. Himpunan Fuzzy Temperatur (°C) .................................... 18
Gambar 3.2. Representasi Linier Naik .................................................... 20
Gambar 3.3. Representasi Linier Turun .................................................. 21
Gambar 3.4. Representasi Kurva Segitiga .............................................. 22
Gambar 3.5. Representasi Kurva Trapesium .......................................... 22
Gambar 3.6. Representasi Kurva Bentuk Bahu ...................................... 23
Gambar 3.7. Metode Tsukamoto............................................................. 25
Gambar 3.8. Class ................................................................................... 31
Gambar 4.1. Fungsi Keanggotaan pada Kriteria Retur ........................... 45
Gambar 4.2. Fungsi Keanggotaan pada Kriteria Penjualan .................... 46
Gambar 4.3. Fungsi Keanggotaan pada Kriteria Produksi...................... 47
Gambar 4.4. Use Case Diagram .............................................................. 49
Gambar 4.5. Class Diagram .................................................................... 50
Gambar 4.6. Activity Diagram ................................................................ 51
Gambar 4.7. Sequence Diagram ............................................................. 52
Gambar 4.8. Halaman Login ................................................................... 55
Gambar 4.9. Perancangan Snack............................................................. 56
Gambar 4.10. Perancangan Retur ............................................................. 57
Gambar 4.11. Perancangan Penjualan....................................................... 58
Gambar 4.12. Perancangan Rule ............................................................... 58
Gambar 4.13. Perancangan Perencanaan .................................................. 59
Gambar 4.14. Perancangan Admin ........................................................... 60
Gambar 5.1. Login .................................................................................. 61
Gambar 5.2. Pesan Username atau Password Salah ............................... 62
Gambar 5.3. Snack .................................................................................. 63
Gambar 5.4. Retur ................................................................................... 65
Gambar 5.5. Penjualan ............................................................................ 66
Gambar 5.6. Rule .................................................................................... 68
Gambar 5.7. Perencanaan........................................................................ 69
xii
Gambar 5.8. Admin ................................................................................. 71
Gambar 6.1. Defuzzifikasi ...................................................................... 87
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Produksi merupakan suatu kegiatan untuk menciptakan atau
menghasilkan atau menambah nilai guna terhadap suatu barang atau jasa
untuk memenuhi kebutuhan oleh orang atau badan (produsen). Orang atau
badan yang melakukan kegiatan produksi dikenal dengan sebutan produsen.
Sedangkan barang atau jasa yang dihasilkan dari melakukan kegiatan
produksi disebut dengan produk.
Niki Eco adalah sebuah usaha rumahan yang bergerak dibidang
penjualan jajanan pasar tradisional dan memproduksi berbagai macam-
macam jajanan pasar tradisional (snack) juga melayani pemesanan snack
yang beralamat di pujasera Pasar Bulu Semarang. Permasalahan yang timbul
dari Niki Eco adalah kesulitan dalam perencanaan jumlah produksi snack
untuk bulan-bulan berikutnya. Karena dalam tiap bulannya penjualan snack
meningkat dan Niki Eco hanya mengandalkan perencanaan tradisional
dalam merencanakan produksi snack pada tiap bulannya. Perencanaan
tradisional disini adalah dalam bentuk produksi yang dilakukan dalam
jumlah yang sama dari bulan ke bulan atau berdasarkan permintaan tanpa
adanya perhitungan terlebih dahulu. Hal tersebut tentunya akan membuat
pihak Niki Eco kesulitan dalam mengetahui jumlah produk yang harus
diproduksi. Untuk dapat mengatasi permasalahan tersebut dan meningkatkan
2
kinerja dari Niki Eco, maka diperlukan proses perencanaan secara otomatis
menggunakan kecerdasan buatan. Perencanaan adalah suatu proses
menentukan apa yang ingin dicapai di masa yang akan dating serta
menetapkan tahapan-tahapan yang dibutuhkan untuk mencapainya (Rustiadi,
2008:339). Salah satu metode dalam kecerdasan buatan yang dapat
digunakan untuk proses perencanaan adalah Fuzzy Logic.
Fuzzy Logic adalah sebuah metodologi “berhitung” dengan variabel
kata-kata (linguistic variable), sebagai pengganti berhitung dengan bilangan.
Kata- kata yang digunakan dalam Fuzzy Logic memang tidak sepresisi
bilangan, namun kata-kata jauh lebih dekat dengan intuisi manusia. Dengan
Fuzzy Logic, sistem kepakaran manusia bisa diimplementasikan ke dalam
bahasa mesin secara mudah dan efisien. Motivasi utama teori Fuzzy Logic
adalah memetakan sebuah ruang input ke dalam ruang output dengan
menggunakan IF-THEN rules. Pemetaan dilakukan dalam suatu Fuzzy
Inference System (FIS). FIS adalah sebuah metode yang menginterpretasikan
harga-harga dalam vektor input, menarik kesimpulan berdasar sekumpulan
IF-THEN rules yang diberikan, dan kemudian menghasilkan vektor output
(Kusumadewi, 2010:52).
Penelitian ini akan membahas mengenai perencanaan jumlah
produksi snack pada Niki Eco dengan menggunakan Fuzzy Logic. Fuzzy
Logic digunakan karena dibandingkan dengan logika konvensional, Fuzzy
Logic memiliki kemampuan dalam proses penalaran secara bahasa sehingga
dalam perancangannya tidak memerlukan persamaan matematik yang rumit.
3
Selain itu karena Fuzzy Logic yang mudah dimengerti, memiliki toleransi
data-data yang tidak tepat, mampu memodelkan fungsi-fungsi non linear
yang sangat kompleks, serta dapat bekerja sama dengan teknik-teknik
kendali secara konvensional dan didasarkan pada bahasa alami. Dalam
Fuzzy Logic terdapat 3 jenis Fuzzy yaitu : Tsukamoto, Mamdani, dan
Sugeno. Pada kasus pada Niki Eco yang akan dipakai adalah Tsukamoto.
Hal ini dikarenakan Fuzzy Tsukamoto memiliki penalaran Fuzzy yang cukup
mudah untuk dipahami. Adapun perbedaan Fuzzy Tsukamoto dengan Fuzzy
yang lain salah satunya terdapat pada penggunaan. Fuzzy Tsukamoto
penggunaannya lebih pada Humanis Controll, Fuzzy Mamdani lebih pada
Humanis, sedangkan untuk Fuzzy Sugeno pada Control. Berdasarkan uraian
latar belakang yang telah dijelaskan diatas, penulis mengambil judul
mengenai “Perencanaan Jumlah Produksi Snack Pada Niki Eco
Menggunakan Logika Fuzzy Tsukamoto”.
1.2. Perumusan Masalah
Berdasarkan uraian latar belakang yang ada maka dirumuskan pokok
permasalahannya adalah
1. Bagaimana menerapkan metode Fuzzy Tsukamoto dalam merencanakan
jumlah produksi snack berdasaran data penjualan dan jumlah retur.
2. Bagaimana mengetahui perbandingan jumlah produksi hasil
perhitungan metode Tsukamoto dalam sistem dengan kenyataan dalam
hal akurasinya dengan menggunakan pengujian MSE (mean square
error) atau kuadrat dari rata- rata nilai absolute dari kesalahan
4
perencanaan.
Adapun pembatasan masalah dalam penelitian ini yaitu :
1. Data yang digunakan adalah data penjualan bulan Januari 2016 sampai
bulan Desember 2016.
2. Hanya digunakan untuk melakukan perencanaan jumlah produksi snack
untuk bulan berikutnya dari kriteria penjualan snack dan jumlah retur
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto.
1.3. Tujuan Dan Manfaat Penelitian
Tujuan yang ingin dicapai dalam penelitian ini adalah :
1. Menerapkan metode Fuzzy Tsukamoto dalam merencanakan jumlah
produksi snack berdasaran data penjualan dan jumlah retur.
2. Mengetahui perbandingan jumlah produksi hasil perhitungan metode
Tsukamoto dalam sistem dengan kenyataan dalam hal akurasinya
dengan menggunakan pengujian MSE (mean square error) atau kuadrat
dari rata- rata nilai absolute dari kesalahan perencanaan.
Hasil dari penelitian ini diharapkan nantinya dapat bermanfaat bagi
banyak pihak, diantaranya:
1. Bagi Niki Eco
Dapat dijadikan acuan untuk pengambilan keputusan dalam
memproduksi jumlah produksi snack.
2. Bagi Akademik
5
Dapat digunakan sebagai bahan informasi, referensi, artikel dan
arsip dan sebagai tolak ukur keberhasilan dalam membimbing
mahasiswa.
3. Bagi Penulis
Dapat menerapkan dan mengembangkan ilmu yang diperoleh di
bangku kuliah melalui kasus nyata serta menambah wawasan sehingga
memungkinkan mempertinggi kemampuan serta penguasaan dari
penelitian yang dibuat.
1.4. Metode Penelitian
Metodologi penelitian merupakan suatu cara atau prosedur yang
digunakan untuk mengumpulkan data, dengan perantara teknik tertentu.
Dalam penulisan skripsi ini, akan menggunakan beberapa metode penelitian
yaitu:
1.4.1. Objek Penelitian
Dalam metodologi penelitian penulis mengambil objek
penelitian pada Niki Eco yang beralamat di pujasera Pasar Bulu
Semarang.
1.4.2. Metode Pengumpulan Data
Metode yang digunakan dalam proses pengumpulan data
sebagai bahan pembuatan sistem adalah:
1. Wawancara
Dalam metode wawancara melakukan tanya jawab dengan
wawancara atau tanya jawab dengan Bapak Ari selaku pemilik
6
Niki Eco tentang perencanaan jumlah produksi snack yang ada
pada Niki Eco.
2. Studi Pustaka
Metode yang dilakukan dengan cara mencari sumber dari
buku-buku Logika Fuzzy, UML, PHP dan MySQL dari
perpustakaan Universitas Stikubank Semarang dan jurnal yang
berhubungan dengan penelitian diantaranya Fuzzy Inference
System Dengan Metode Tsukamoto Sebagai Penunjang
Keputusan Produksi (Studi Kasus : PT. Talkindo Selaksa
Anugrah) dan Sistem Berbasis Aturan Menggunakan Logika
Fuzzy Tsukamoto Untuk Prediksi Jumlah Produksi Roti Pada CV.
Gendis Bakery.
1.4.3. Metode Pengembangan Sistem
Metode yang digunakan untuk pengembangan sistem adalah
Waterfall (Whitten, 2004). Tahap-tahap pengembangannya adalah
1. Permulaan Sistem
Pada tahap ini menentukan jenis sistem yang tepat dan
dapat menjawab persoalan yang dihadapi oleh Niki Eco serta
menenetukan penanganan masalah yang dihadapi oleh Niki Eco.
2. Analisis Sistem
Pada tahap ini menyiapkan dan menyusun sistem baru,
kemudian mengembangkan secara tertulis. Kegiatan yang
dilakukan meliputi mengidentifikasi masalah yang dihadapi
7
dalam pembuatan sistem, mengidentifikasi kebutuhan perangkat
keras dan kebutuhan perangkat lunak.
3. Perancangan Sistem
Pada tahap ini menyiapkan dan menyusun sistem baru,
kemudian mengembangkan secara tertulis. Kegiatan yang
dilakukan meliputi merancang sistem dengan menggunakan
UML, perancangan database dan perancangan antar muka
sistem.
4. Implementasi Sistem
Pada tahap ini membuat perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto
dengan menggunakan PHP dan MySQL.
1.5. Sistematika Penulisan
Untuk memudahkan pemahaman tentang penelitian ini, maka
pembahasan akan dibagi dalam beberapa bab sesuai dengan pokok
permasalahannya, yaitu:
BAB I. PENDAHULUAN
Berisi latar belakang masalah, perumusan masalah,
tujuan dan manfaat penelitian, metodologi penelitan dan
sistematika penulisan.
BAB II. TINJAUAN PUSTAKA
8
Berisi tentang informasi hasil penelitian yang telah
dilakukan sebelumnya dan menghubungkan dengan
masalah yang sedang diteliti.
BAB III LANDASAN TEORI
Berisi tentang pembahasan atau penjelasan dari
landasan teori dalam penelitian.
BAB IV ANALISA DAN PERANCANGAN SISTEM
Pada bab ini akan dijelaskan mengenai analisa dan
perancangan perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto.
BAB V IMPLEMENTASI SISTEM
Pada bab ini akan tahapan–tahapan pengembangan
sistem dan disertakan implementasi yang memberikan
gambaran tentang program yang dibuat dengan
menggunakan PHP dan MySQL.
BAB VI HASIL PENELITIAN DAN PEMBAHASAN
Pada bab ini berisi tentang hasil pembahasan dari
penelitian perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto.
BAB VII PENUTUP
Pada bab ini berisi tentang kesimpulan dan saran
pembuatan sistem.
9
BAB II
TINJAUAN PUSTAKA
Pada bagian ini akan dipaparkan penjelasan tentang tinjauan pustaka yang
dipakai dalam pembuatan perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto. Tinjauan Pustaka tersebut yaitu hasil
penelitian terdahulu tentang informasi hasil penelitian yang telah dilakukan
sebelumnya dan dihubungkan dengan masalah yang sedang diteliti.
2.1. Pustaka Yang Terkait Dengan Penelitian
Penelitian terdahulu dilakukan oleh Hetty Rohayani (2015) dari
STIKOM Dinamika Bangsa Jambi dengan judul “Fuzzy Inference System
Dengan Metode Tsukamoto Sebagai Penunjang Keputusan Produksi (Studi
Kasus : PT. Talkindo Selaksa Anugrah)”. Selama ini pemutusan produksi
roti pada PT. Talkindo Selaksa Anugrah selalu mengandalkan perkiraan
dari manager saja. Dimana dengan hal tersebut banyak ditemui kekurangan
yang berakibat kerugian bagi pihak perusahaan. Berdasarkan data
persediaan dan jumlah permintaan, maka dirancang suatu sistem penunjang
keputusan menggunakan metode tsukamoto.Dalam sistem penunjang
keputusan ini ada tiga variabel yang dimodelkan, yaitu: permintaan,
persediaan dan produksi. Variabel permintaan terdiri dari dua himpunan
fuzzy, yaitu: TURUN, dan NAIK, variabel persediaan terdiri dari dua
himpunan fuzzy,yaitu: SEDIKIT, dan BANYAK, sedangkan variabel
produksi terdiri dari dua himpunan fuzzy yaitu: BERKURANG, dan
10
BERTAMBAH. Dengan mengkombinasikan semua himpunan fuzzy
tersebut, diperoleh empat aturan fuzzy, yang selanjutnya digunakan dalam
tahap inferensi. Pada tahap inferensi, dicari nilai keanggotaan anteseden (α)
dan nilai perkiraan jumlah produksi (z) dari setiap aturan. Jumlah barang
yang akan diproduksi (Z) dicari dengan defuzzifikasi rata-rata terpusat
(Rohayani, 2015).
Penelitian terdahulu dilakukan oleh Riyadi Yudha Wiguna, Hanny
Haryanto (2012) dari Universitas Dian Nuswantoro Semarang dengan judul
“Sistem Berbasis Aturan Menggunakan Logika Fuzzy Tsukamoto Untuk
Prediksi Jumlah Produksi Roti Pada CV. Gendis Bakery”. Suatu perusahaan
produksi harus mengambil keputusan yang tepat dalam memprediksi jumlah
produksi yang akan diproduksi. Penjualan roti pada CV. Gendis Bakery
mengalami peningkatan dan pihak perusahaan hanya mengandalkan
prediksi tradisional dalam memproduksi roti pada tiap bulannya. Prediksi
tradisional disini adalah dalam bentuk produksi yang dilakukan dalam
jumlah yang sama dari hari ke hari tanpa adanya perhitungan terlebih
dahulu. Hal tersebut tentunya akan membuat pihak perusahaan kesulitan
dalam mengetahui jumlah produk yang harus diproduksi. Untuk dapat
mengatasi permasalahan tersebut dan meningkatkan kinerja dari
perusahaan, maka diperlukan proses prediksi secara otomatis menggunakan
kecerdasan buatan. Fuzzy Logic adalah sebuah metodologi “berhitung”
dengan variabel kata-kata (linguistic variable), sebagai pengganti berhitung
dengan bilangan. Dengan fuzzy logic, sistem kepakaran manusia bisa
11
diimplementasikan ke dalam bahasa mesin secara mudah dan efisien. Hasil
perhitungan sistem tidak berbeda jauh dengan hasil perhitungan yang
dilakukan secara manual, hal ini ditunjukkan dengan tabel Mean Squared
Error dengan hasil error di bawah 1. Sehingga, tanpa mengurangi ketepatan
dalam perhitungan, sistem dapat digunakan untuk menghemat waktu dalam
menentukan jumlah barang yang akan diproduksi (Wiguna dan Haryanto,
2012).
Penelitian terdahulu dilakukan oleh Iklila Muzayyanah, Wayan
Firdaus Mahmudy, Imam Cholissodin (2014) dari Universitas Brawijaya
Malang dengan judul “Penentuan Persediaan Bahan Baku Dan Membantu
Target Marketing Industri Dengan Metode Fuzzy Inference System
Tsukamoto”. Produksi merupakan kegiatan vital yang ada dalam suatu
industri. Kegiatan industri sangat erat kaitannya dengan jumlah bahan baku
yang harus disediakan, ketersediaan bahan baku dalam suatu industri sangat
penting dikarenakan berpengaruh terhadap lancarnya kegiatan produksi.
Persediaan bahan baku dipengaruhi oleh jumlah produk jadi yang akan
diproduksi. Perhitungan jumlah bahan baku yang harus disediakan
dilakukan dengan pertimbangan yang matang, hal ini diharapkan dapat
menentukan kebutuhan bahan baku yang tepat agar tidak terjadi kelebihan
atau kekurangan bahan baku. Pada penelitian ini akan digunakan Fuzzy
Inference System (FIS) dengan metode Tsukamoto untuk menentukan
prediksi jumlah produksi yang digunakan untuk menghitung kebutuhan
bahan baku. Prediksi produksi dan kebutuhan bahan baku suatu industri
12
dapat digunakan sebagai acuan dalam melakukan perhitungan prediksi laba,
sehingga hal ini dapat digunakan sebagai acuan dalam target marketing.
Input yang dibutuhkan untuk sistem ini meliputi variabel yang berpengaruh
terhadap jumlah produksi, sedangkan outputnya adalah prediksi jumlah
produksi. Hasil penelitian menunjukan bahwa perbedaan variabel yang
digunakan sistem berpengaruh terhadap hasil prediksi jumlah produksi yang
berpengaruh terhadap nilai MAPE yang berbeda. Untuk skenario pengujian
1 yaitu menggunakan variabel permintaan dan persediaan menghasilkan
tingkat kebenaran 71%, pada skenario pengujian 2 menggunakan variabel
permintaan, persediaan dan biaya produksi menghasilkan tingkat kebenaran
73%, serta pada skenario pengujian 3 menggunakan variabel biaya plastik
cup 240ml, biaya karton, biaya sedotan dan biaya layer menghasilkan
tingkat kebenaran 77% (Muzayyanah dkk, 2014).
13
2.2. Perbedaan Penelitian Yang Dilakukan Dengan Penelitian Terdahulu
Aspek Jurnal I Jurnal II Jurnal III Penulis
Penulis Hetty Rohayani Riyadi Yudha Wiguna,
Hanny Haryanto
Iklila Muzayyanah,
Wayan Firdaus
Mahmudy, Imam
Cholissodin
Erisal Adhi Nugroho
Universitas STIKOM Dinamika
Bangsa Jambi
Universitas Dian
Nuswantoro Semarang
Universitas Brawijaya
Malang Unisbank Semarang
Judul
Fuzzy Inference System
Dengan Metode
Tsukamoto Sebagai
Penunjang Keputusan
Produksi (Studi Kasus :
PT. Talkindo Selaksa
Anugrah)
Sistem Berbasis Aturan
Menggunakan Logika
Fuzzy Tsukamoto untuk
Prediksi Jumlah Produksi
Roti Pada CV. Gendis
Bakery
Penentuan Persediaan
Bahan Baku Dan
Membantu Target
Marketing Industri
Dengan Metode Fuzzy
Inference System
Tsukamoto
Perencanaan Jumlah
Produksi Snack Pada
Niki Eco
Menggunakan Logika
Fuzzy Tsukamoto
Metode Fuzzy Tsukamoto Fuzzy Tsukamoto Fuzzy Tsukamoto Fuzzy Tsukamoto
Kriteria Permintaan, Persediaan,
Produksi Penjualan, Retur, Produksi
Jumlah Permintaan,
Jumlah Produksi, Stok
Gudang, Biaya
Penjualan, Retur,
Produksi
Program Mathlab PHP PHP PHP
Database Acces 2010 MySQL MySQL MySQL
Hasil
Dengan adanya aplikasi
yang dirancang, PT.
Talkindo Selaksa
Anugerah manager dapat
dengan mudah
menentukan produksi
Tingkat prediksi
menggunakan metode
Tsukamoto sudah cukup
baik diterapkan dalam CV.
Gendis Bakery. Hal ini
terbukti dari hasil
Metode Fuzzy Inference
System Tsukamoto dapat
diimplementasikan untuk
memprediksi jumlah
produksi yang dapat
dijadikan acuan dalam
Menerapkan metode
Fuzzy Tsukamoto
dalam merencanakan
jumlah produksi snack
berdasaran data
penjualan dan jumlah
14
roti pada minggu-
minggu berikutnya
sehingga perusahaan
tidak mengalami
kerugian yang besar
perbandingan perhitungan
manual dengan
perhitungan pada sistem
metode tersebut
menghitung kebutuhan
bahan baku dan prediksi
laba
retur
15
BAB III
LANDASAN TEORI
3.1. Perencanaan
Perencanaan adalah proses pemilihan dan penetapan tujuan, strategi,
metode, anggaran, dan standar (tolak ukur) keberhasilan suatu kegiatan
(Nawawi, 2013:29) Pengertian ini menunjukkan bahwa perencanaan
merupakan proses atau rangkaian beberapa kegiatan yang salig berhubungan
dalam memilih salah satu di antara beberapa alternatif tentanng tujuan yang
ingin dicapai oleh sebuah organisasi/perusahaan. Kemudian memilih
strategi dan metode untu mencapai tujuan tersebut. Dilanjutkan pula dengan
menetapkan anggaran untuk melaksanaka strategi dan metode tersebut,
diiringi dengan memillih dan menetapkan kriteria tolak ukur untuk menilai
tingkat keberhasilann organisasi/perusahaan dalam pencapaian tujuannya
dengan mengimplementasikan strategi dan metode yang telah dipilih
sebelumnya.
Perencanaan juga dapat diartikan rangkaian kegiatan atau proses
pembuatan keputusan. Kegiatan pertama yang harus dilakukan adalah
menetapkan pekerjaan yang harus dilaksanakan di masa datang, yang berarti
juga tidak akan dan tidak boleh melaksanakan pekerjaan lain yang bertolak
belakang atau yang berbeda dengan pekerjaan yang telah ditetapkan sebagai
keputusan tersebut. Kegiatan kedua dalam proses pembuatan keputusan
adalah kegiatan menetapkan waktu pelaksanaannya, yang berarti memilih
16
metode dan tidak akan menggunakan cara atau metode lain agar
pelaksanaan pekerjaan tersebut berlangsung secara efektif dan efisien.
Akhirnya kegiatan keempat dalam proses pembuatan keputusan tersebut
adalah menetapkan pegawai yang tepat atau yang memenuhi persyaratan
untuk melaksanakannya, agar pekerjaan tersebut dilaksanakan secara
professional dalam rangka mewujudkan eksistensi organisasi yang sukses.
3.2. Produksi
Istilah produksi dan operasi sering dipergunakan dalam suatu
organisasi yang menghasilkan keluaran atau output baik berupa barang dan
jasa, pengertian produksi dalam arti luas sebagai kegiatan yang
mentransformasikan masukan (input) menjadi keluaran (output), tercakup
semua kegiatan yang menghasilkan barang atau jasa serta kegiatan lain yang
mendukung usaha untuk menghasilkan produk tersebut. Produksi adalah
menciptakan, menghasilkan, dan membuat. Kegiatan produksi tidak akan
dapat dilakukan kalau tidak ada bahan yang memungkinkan dilakukannya
proses produksi itu sendiri. Untuk bisa melakukan produksi, orang
memerlukan tenaga manusia, sumber-sumber alam, modal dalam segala
bentuknya, serta kecakapan. Semua unsur itu disebut faktor-faktor produksi
(factors of production). Jadi, semua unsur yang menopang usaha penciptaan
nilai atau usaha memperbesar nilai barang disebut sebagai faktor-faktor
produksi. Pengertian produksi lainnya yaitu hasil akhir dari proses atau
aktivitas ekonomi dengan memanfaatkan beberapa masukan atau input.
17
Dengan pengertian ini dapat dipahami bahwa kegiatan produksi diartikan
sebagai aktivitas dalam menghasilkan output dengan menggunakan teknik
produksi tertentu untuk mengolah atau memproses input sedemikian rupa
(Assauri, 2013).
3.3. Logika Fuzzy
Logika fuzzy pertama kali ditemukan oleh profesor Lotfi A. Zadeh,
dari Universitas California, pada bulan Juni 1965. Logika fuzzy merupakan
Generalisasi dari logika klasik yang hanya memiliki dua nilai keanggotaan,
yaitu 0 dan 1. Dalam logika fuzzy, nilai kebenaran suatu pernyataan berkisar
dari sepenuhnya benar, sampai dengan sepenuhnya salah. Dengan teori
himpunan fuzzy, suatu objek dapat menjadi anggota dari banyak himpunan
dengan derajat keanggotaan yang berbeda dalam masing-masing himpunan.
Konsep ini berbeda dengan himpunan klasik (crisp). Teori himpunan klasik
tergantung pada logika dua nilai (two valued logic) untuk menentukan
apakah sebuah objek merupakan suatu anggota himpunan atau bukan
(Kusumadewi, 2010:52).
3.3.1. Himpunan Fuzzy
Himpunan fuzzy memiliki 2 atribut, yaitu (Kusumadewi, 2010:53):
1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu
keadaan atau kondisi tertentu dengan menggunakan bahasa
alami, seperti : Muda, Tua, Parobaya.
18
2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran
dari suatu variabel seperti : 40, 25, 50.
Beberapa hal yang perlu diketahui dalam memahami sistem fuzzy,
yaitu :
1. Variabel Fuzzy
Variabel fuzzy merupakan variabel yang akan dibahas dalam
suatu sistem fuzzy. Contoh : umur, temperatur, permintaan.
2. Himpunan Fuzzy
Himpunan fuzzy merupakan suatu grup yang mewakili suatu
kondisi atau keadaan tertentu dalam suatu variabel fuzzy seperti
gambar 3.2.
Contoh :
a. Variabel umur, terbagi menjadi tiga buah himpunan fuzzy,
yaitu: muda, parobaya, dan tua.
b. Variabel temperatur, terbagi menjadi lima buah himpunan
fuzzy, yaitu: dingin, sejuk, normal, hangat, dan panas.
Gambar 3.2. Himpunan Fuzzy Temperatur (°C)
3. Semesta Pembicaraan
0 15 20 25 30 35 40
Dingin Sejuk Normal Hangat Panas
1
0
µ[x]
19
Semesta pembicaraan adalah keseluruhan nilai yang
diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy.
Semesta pembicaraan merupakan himpunan bilangan real yang
senantiasa naik (bertambah) secara monoton dari kiri ke kanan.
Nilai semesta pembicaraan dapat berupa bilangan positif
maupun negatif. Seharusnya nilai semesta pembicaraan ini tidak
dibatasi batas atasnya.
Contoh :
a. Semesta pembicaraan untuk variabel umur : [0+ ~]
b. Semesta pembicaraan untuk variabel temperatur : [0 40]
4. Domain
Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan
dalam semesta pembicaraan dan boleh dioperasikan dalam suatu
himpunan fuzzy. Seperti halnya semesta pembicaraan, domain
merupakan himpunan bilangan real yang senantiasa naik
(bertambah) secara monoton dari kiri ke kanan. Nilai domain
dapat berupa bilangan positif maupun negatif.
Contoh domain himpunan fuzzy :
a. MUDA = [0, 45]
b. PAROBAYA = [35, 55]
c. TUA = [45, +∞]
3.3.2. Fungsi Keanggotaan
20
Fungsi keanggotaan (membership function) adalah suatu
kurva yang menunjukkan pemetaan titik-titik input data ke dalam
nilai keanggotaannya (sering juga disebut dengan derajat
keanggotaan) yang memiliki interval antara 0 sampai 1. Salah satu
cara yang dapat digunakan untuk mendapatkan nilai keanggotaan
adalah dengan melalui pendekatan fungsi. Ada beberapa fungsi yang
dapat digunakan (Kusumadewi, 2010:63):
1. Representasi Linier
Pada representasi linear, pemetaan input ke derajat
keanggotaannya digambarkan sebagai suatu garis lurus. Bentuk
ini paling sederhana dan menjadi pilihan yang baik untuk
mendekati suatu konsep yang kurang jelas.
Ada 2 keadaan himpunan fuzzy linear, yaitu:
a. Representasi Linear Naik
Kenaikan himpunan dimulai pada nilai domain yang memiliki derajat
keanggotaan nol (0) bergerak ke kanan menuju ke nilai domain yang
memiliki derajat keanggotaan lebih tinggi seperti gambar 3.3.
Gambar 3.3. Representasi Linier Naik
1; x ≥ b
b
21
b. Representasi Linier Turun
Representasi linear turun merupaka kebalikan dari linear naik. Garis
lurus dimulai dari nilai domain dengan derajat keanggotaan tertinggi
pada sisi kiri, kemudian bergerak menurun ke nilai domain yang
memiliki derajat keanggotaan lebih rendah seperti gambar 3.4.
Gambar 3.4. Representasi Linier Turun
Fungsi keanggotaan :
2. Representasi Kurva Segitiga
Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis
(linier) seperti gambar 3.5.
Gambar 3.5. Representasi Kurva Segitiga
Fungsi keanggotaan :
µ[x]= (x-a)/(b-a); a ≤ x ≤ b
0; x ≥ b
µ[x]=
0; x ≤ a atau x ≤ c
(x-a)/(b-a); a ≤ x ≤ b
(c-x)/(c-b); b ≤ x ≤ c
22
3. Representasi Kurva Trapesium
Kurva trapesium pada dasarnya seperti bentuk segitiga, hanya
saja ada beberapa titik yang memiliki nilai keanggotaan 1 seperti
gambar 3.6.
Gambar 3.6. Representasi Kurva Trapesium
Fungsi keanggotaan :
4. Representasi Kurva Bentuk Bahu
Daerah yang terletak di tengah-tengah suatu variabel yang
direpresentasikan dalam bentuk segitiga, pada sisi kanan dan
kirinya akan naik dan turun (misalkan : DINGIN bergerak ke
SEJUK bergerak ke HANGAT dan bergerak ke PANAS). Tetapi
terkadang salah satu sisi dari variabel tersebut tidak mengalami
perubahan. Sebagai contoh, apabila telah mencapai kondisi
PANAS, kenaikan temperatur akan tetap berada pada kondisi
PANAS. Himpunan fuzzy ’bahu’, bukan segitiga, digunakan
µ[x]=
0; x ≤ a atau x ≥ d
(x-a)/(b-a); a ≤ x ≤ b
1; b ≤ x ≤ c
(d-x)/(d-c); x ≥ d
23
untuk mengakhiri variabel suatu daerah fuzzy. Bahu kiri
bergerak dari benar ke salah, sebaliknya bahu kanan bergerak
dari salah ke benar. Gambar 3.7 menunjukkan variabel
TEMPERATUR dengan daerah bahunya.
Gambar 3.7. Representasi Kurva Bentuk Bahu
3.3.3. Logika Fuzzy Tsukamoto
Metode tsukamoto memiliki setiap aturan direpresikan
menggunakan himpunan-himpunan fuzzy, dengan fungsi
keanggotaan yang monoton. Dalam menentukan nilai output crisp
atau hasil yang tegas (Z) dicari dengan cara mengubah input (berupa
himpunan fuzzy yang diperoleh dari komposisi aturan-aturan fuzzy)
menjadi suatu bilangan pada domain himpunan fuzzy tersebut. Cara
ini disebut dengan metode defuzzifikasi (penegasan). Metode
defuzzifikasi yang digunakan dalam metode tsukamoto adalah
metode defuzzifikasi rata-rata terpusat (center Average Defuzzyfier).
Contoh alur perhitungan semisal ada 2 variabel input, var-1(x) dan
var-2(y) serta 1variabel output var-3(z), dimana var-1 terbagi atas 2
himpunan yaitu A1 dan A2 dan var-2 terbagi atas himpunan B1 dan
B2. Sedangkan var-3 juga terbagi atas 2 himpunan yaitu C1 dan C2.
24
Selain itu ada juga dua aturan yang digunakan dalam alur
perhitungan yaitu : R1] IF (x is A1) and (y is B2) THEN (z is C1)
dan [R2] IF (x is A2) and (y is B1) THEN (z is C2).
Metode Tsukamoto memiliki kelebihan yaitu memiliki
toleransi terhadap data-data yang tidak tepat dan mudah dimengerti.
Dalam metode Tsukamoto setiap aturan harus direpresentasikan
menggunakan himpunan-himpunan fuzzy, dengan fungsi
keanggotaan yang monoton. Dalam menentukan nilai output yang
dicari dengan mengubah input menjadi suatu bilangan pada domain
himpunan fuzzy tersebut. Dengan cara ini metode Tsukamoto
banyak memiliki kelebihan dalam toleransi dan mudah dimengerti
juga mempunyai aturan yang harus direpresentasikan menggunakan
himpunan fuzzy. Cara ini bisa disebut dengan metode defuzzifikasi,
dalam metode Tsukamoto metode yang digunakan adalah metode
defuzzifikasi karena memiliki rata-rata terpusat. Pada metode
Tsukamoto, implikasi setiap aturan berbentuk implikasi “Sebab-
Akibat” dimana antara anteseden dan konsekuen harus ada
hubunganya. Metode yang dapat memprediksi dan memberikan
toleransi terhadap data-data yang tidak tepat yang bersifat fleksibel
dan fluktuatif yaitu metode fuzzy Tsukamoto. Selanjutnya dalam
tahap mesin inferensi dengan tujuan untuk mengubah input menjadi
output dengan mengikuti rules yang telah ditentukan. Selanjutnya
tahap terakhir dalam mengubah output yang diperoleh dari tahap
25
mesin inferensi menjadi suatu nilai yang tegas karena menggunakan
fungsi keanggotaan yang sesuai dengan tahap-tahap fuzzifikasi.
Sebagai istilah tahap defuzzifikasi adalah tahap terakhir dari teknik
fuzzy logic Tsukamoto karena tahap ini menentukan Z akhir dengan
menggunakan nilai rata-rata, cara perhitunganya yaitu dengan
membagi jumlah A*Z dengan jumlah A(alfa).
3.4. UML (Unified Modelling Language)
Unified Modelling Language (UML) adalah sebuah bahasa yg telah
menjadi standar dalam industri untuk visualisasi, merancang dan
mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar
untuk merancang model sebuah sistem. Dengan menggunakan UML kita
dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana
aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan
jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi
karena UML juga menggunakan class dan operation dalam konsep
dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa-
bahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun
demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural
dalam VB atau C. (Dharwiyanti, Wahono, 2003:1)
Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan
syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk
menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki
26
makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk
tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3
notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented
Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar
Jacobson OOSE (Object-Oriented Software Engineering). Sejarah UML
sendiri cukup panjang. Sampai era tahun 1990 seperti kita ketahui puluhan
metodologi pemodelan berorientasi objek telah bermunculan di dunia..
Masa itu terkenal dengan masa perang metodologi (method war) dalam
pendesainan berorientasi objek. Masing-masing metodologi membawa
notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita
bekerjasama dengan group/perusahaan lain yang menggunakan metodologi
yang berlainan.
3.4.1. Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang
diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang
diperbuat sistem, dan bukan “bagaimana”. Sebuah use case
merepresentasikan sebuah interaksi antara aktor dengan sistem. Use
case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem,
meng-create sebuah daftar belanja, dan sebagainya. Seorang/sebuah
aktor adalah sebuah entitas manusia atau mesin yang berinteraksi
dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu.
(Dharwiyanti, Wahono, 2003:5)
27
Use case diagram dapat sangat membantu bila sedang
menyusun requirement sebuah sistem, mengkomunikasikan
rancangan dengan klien, dan merancang test case untuk semua
feature yang ada pada sistem. Sebuah use case dapat meng-include
fungsionalitas use case lain sebagai bagian dari proses dalam
dirinya. Secara umum diasumsikan bahwa use case yang di-include
akan dipanggil setiap kali use case yang meng-include dieksekusi
secara normal. Sebuah use case dapat di-include oleh lebih dari satu
use case lain, sehingga duplikasi fungsionalitas dapat dihindari
dengan cara menarik keluar fungsionalitas yang common. Sebuah
use case juga dapat meng-extend use case lain dengan behaviour-nya
sendiri. Sementara hubungan generalisasi antar use case
menunjukkan bahwa use case yang satu merupakan spesialisasi dari
yang lain.
Tabel 3.1. Simbol Use Case Diagram
SIMBOL NAMA KETERANGAN
Actor
Menspesifikasikan himpuan
peran yang pengguna mainkan
ketika berinteraksi dengan use
case.
Dependency
Hubungan dimana perubahan
yang terjadi pada suatu elemen
mandiri (independent) akan
mempengaruhi elemen yang
bergantung padanya elemen
yang tidak mandiri
(independent).
28
Generalization
Hubungan dimana objek anak
(descendent) berbagi perilaku
dan struktur data dari objek
yang ada di atasnya objek induk
(ancestor).
Include Menspesifikasikan bahwa use
case sumber secara eksplisit.
Extend
Menspesifikasikan bahwa use
case target memperluas perilaku
dari use case sumber pada suatu
titik yang diberikan.
Association
Apa yang menghubungkan
antara objek satu dengan objek
lainnya.
System
Menspesifikasikan paket yang
menampilkan sistem secara
terbatas.
Use Case
Deskripsi dari urutan aksi-aksi
yang ditampilkan sistem yang
menghasilkan suatu hasil yang
terukur bagi suatu aktor
Collaboration
Interaksi aturan-aturan dan
elemen lain yang bekerja sama
untuk menyediakan prilaku
yang lebih besar dari jumlah
dan elemen-elemennya
(sinergi).
Note
Elemen fisik yang eksis saat
aplikasi dijalankan dan
mencerminkan suatu sumber
daya komputasi
3.4.2. Class Diagram
Class adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan
dan desain berorientasi objek. Class menggambarkan keadaan
29
(atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk
memanipulasi keadaan tersebut (metoda/fungsi). Class diagram
menggambarkan struktur dan deskripsi class, package dan objek
beserta hubungan satu sama lain seperti containment, pewarisan,
asosiasi, dan lain-lain. (Dharwiyanti, Wahono, 2003:5)
Class pada gambar 3.8 memiliki tiga area pokok :
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Gambar 3.8. Class
Class dapat merupakan implementasi dari sebuah interface,
yaitu class abstrak yang hanya memiliki metoda. Interface tidak
dapat langsung diinstansiasikan, tetapi harus diimplementasikan
dahulu menjadi sebuah class. Dengan demikian interface
mendukung resolusi metoda pada saat run-time.
Hubungan antar class yaitu (Dharwiyanti, Wahono, 2003:6) :
1. Asosiasi
Hubungan statis antar class. Umumnya menggambarkan class
yang memiliki atribut berupa class lain, atau class yang harus
Pegawai
NIP
Nama
Gapok
Cetak slip gaji
30
mengetahui eksistensi class lain. Panah navigability
menunjukkan arah query antar class.
2. Agregasi
Hubungan yang menyatakan bagian (“terdiri atas..”).
3. Pewarisan
Hubungan hirarkis antar class. Class dapat diturunkan dari class
lain dan mewarisi semua atribut dan metoda class asalnya dan
menambahkan fungsionalitas baru, sehingga ia disebut anak dari
class yang diwarisinya. Kebalikan dari pewarisan adalah
generalisasi.
4. Hubungan Dinamis
Rangkaian pesan (message) yang di-passing dari satu class
kepada class lain.
Tabel 3.2. Simbol Class Diagram
SIMBOL NAMA KETERANGAN
Generalization
Hubungan dimana objek anak
(descendent) berbagi perilaku
dan struktur data dari objek
yang ada di atasnya objek
induk (ancestor).
Nary
Association
Upaya untuk menghindari
asosiasi dengan lebih dari 2
objek.
Class
Himpunan dari objek-objek
yang berbagi atribut serta
operasi yang sama.
31
Collaboration
Deskripsi dari urutan aksi-aksi
yang ditampilkan sistem yang
menghasilkan suatu hasil yang
terukur bagi suatu aktor
Realization
Operasi yang benar-benar
dilakukan oleh suatu objek.
Dependency
Hubungan dimana perubahan
yang terjadi pada suatu elemen
mandiri (independent) akan
mempegaruhi elemen yang
bergantung padanya elemen
yang tidak mandiri
Association
Apa yang menghubungkan
antara objek satu dengan objek
lainnya
3.4.3. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas
dalam sistem yang sedang dirancang, bagaimana masing-masing alir
berawal, decision yang mungkin terjadi, dan bagaimana mereka
berakhir. Activity diagram juga dapat menggambarkan proses paralel
yang mungkin terjadi pada beberapa eksekusi. (Dharwiyanti,
Wahono, 2003:7)
Activity diagram merupakan state diagram khusus, di mana
sebagian besar state adalah action dan sebagian besar transisi di-
trigger oleh selesainya state sebelumnya (internal processing). Oleh
karena itu activity diagram tidak menggambarkan behaviour internal
sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi
lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari
level atas secara umum.
32
Sebuah aktivitas dapat direalisasikan oleh satu use case atau
lebih. Aktivitas menggambarkan proses yang berjalan, sementara use
case menggambarkan bagaimana aktor menggunakan sistem untuk
melakukan aktivitas. Sama seperti state, standar UML menggunakan
segiempat dengan sudut membulat untuk menggambarkan aktivitas.
Decision digunakan untuk menggambarkan behaviour pada kondisi
tertentu. Untuk mengilustrasikan proses-proses paralel (fork dan
join) digunakan titik sinkronisasi yang dapat berupa titik, garis
horizontal atau vertikal. Activity diagram dapat dibagi menjadi
beberapa object swimlane untuk menggambarkan objek mana yang
bertanggung jawab untuk aktivitas tertentu.
3.4.4. Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di
dalam dan di sekitar sistem (termasuk pengguna, display, dan
sebagainya) berupa message yang digambarkan terhadap waktu.
Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi
horizontal (objek-objek yang terkait). Sequence diagram biasa
digunakan untuk menggambarkan skenario atau rangkaian langkah-
langkah yang dilakukan sebagai respons dari sebuah event untuk
menghasilkan output tertentu. Diawali dari apa yang men-trigger
aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara
internal dan output apa yang dihasilkan. (Dharwiyanti, Wahono,
2003:8)
33
Masing-masing objek, termasuk aktor, memiliki lifeline
vertikal. Message digambarkan sebagai garis berpanah dari satu
objek ke objek lainnya. Pada fase desain berikutnya, message akan
dipetakan menjadi operasi/metoda dari class. Activation bar
menunjukkan lamanya eksekusi sebuah proses, biasanya diawali
dengan diterimanya sebuah message.
Tabel 3.3. Simbol Sequence Diagram
NO GAMBAR NAMA KETERANGAN
1
LifeLine
Menggambarkan
objek entity,
antarmuka yang
saling berinteraksi.
2
Message Menggambarkan
pengiriman pesan
3
Actor
Menggambarkan
orang yang sedang
berinteraksi dengan
sistem
4
Entity Class
Menggambarkan
hubungan kegiatan
yang akan dilakukan
5
Boundary
Class
Menggambarkan
sebuah
penggambaran dari
form
6
Control
Class
Menggambarkan
penghubung antara
boundary dengan
tabel
34
3.5. PHP
PHP sendiri sebenarnya merupakan singkatan dari Hypertext
Preprocesso”, yang merupakan sebuah bahasa scripting tingkat tinggi yang
dipasang pada dokumen HTML. Sebagian besar sintaks dalam PHP mirip
dengan bahasa C, Java dan Perl, namun pada PHP ada beberapa fungsi yang
lebih spesifik. Sedangkan tujuan utama dari penggunaan bahasa ini adalah
untuk memungkinkan perancang web yang dinamis dan dapat bekerja secara
otomatis. (Aditya, 2010:1)
PHP pertama kali dibuat oleh Rasmus Lerdroft, seorang programmer
C. Pada waktu itu PHP masih bernama FI (Form Interpreted), yang
wujudnya berupa sekumpulan script yang digunakan untuk mengolah data
form dari web. Jadi semula PHP digunakannya untuk menghitung jumlah
pengunjung di dalam webnya. Kemudian Rasmus Lerdroft mengeluarkan
Personal Home Page Tools versi 1.0 secara gratis. Versi ini pertama kali
keluar pada tahun 1995. Isinya adalah sekumpulan script PERL yang
dibuatnya untuk membuat halaman webnya menjadi dinamis. Selanjutnya
Rasmus merilis kode sumber tersebut untuk umum dan menamakannya
PHP/FI, kependekan dari Hypertext Preprocessing/Form Interpreter.
Dengan perilisan kode sumber ini menjadi open source, maka banyak
programmer yang tertarik untuk ikut mengembangkan PHP.
Kemudian pada tahun 1996 Rasmus Lerdroft mengeluarkan PHP versi 2.0
yang kemampuannya telah dapat mengakses database dan dapat terintegrasi
dengan HTML. Pada rilis ini interpreter PHP sudah diimplementasikan
35
dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi
yang meningkatkan kemampuan PHP/FI secara signifikan.Pada tahun 1998
tepatnya pada tanggal 6 Juni 1998 keluarlah PHP versi 3.0 yang dikeluarkan
oleh Rasmus sendiri bersama kelompok pengembang softwarenya.
PHP versi 4.0 keluar pada tanggal 22 Mei 2000 merupakan versi yang
lebih lengkap lagi dibandingkan dengan versi sebelumnya. Perubahan yang
paling mendasar pada PHP 4.0 adalah terintegrasinya Zend Engine yang
dibuat oleh Zend Suraski dan Andi Gutmans yang merupakan
penyempurnaan dari PHP scripting engine. Yang lainnya adalah build in
HTTP session, tidak lagi menggunakan library tambahan seperti pada PHP.
Tujuan dari bahasa scripting ini adalah untuk membuat aplikasi-aplikasi
yang dijalankan di atas teknologi web. Dalam hal ini, aplikasi pada
umumnya akan memberikan hasil pada web browser, tetapi prosesnya
secara keseluruhan dijalankan web server.
PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad
ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk
membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan
stabilitas yang tinggi. Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi
ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga
memasukkan model pemrograman berorientasi objek ke dalam PHP untuk
menjawab perkembangan bahasa pemrograman ke arah paradigma
berorientasi objek.
36
Beberapa kelebihan PHP dari bahasa pemrograman web, antara lain
(Aditya, 2010:5) :
1. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak
melakukan sebuah kompilasi dalam penggunaannya.
2. Web Server yang mendukung PHP dapat ditemukan dimana-mana, mulai
dari apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi yang relatif
mudah.
3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis-milis
dan developer yang siap membantu dalam pengembangan.
4. Dalam sisi pemahaman, PHP adalah bahasa scripting yang paling mudah
karena memiliki referensi yang banyak.
PHP adalah bahasa open source yang dapat digunakan di berbagai
mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara
runtime melalui console serta juga dapat menjalankan perintah-perintah
sistem.
3.6. MySQL
MySQL adalah relational database management system (RDBMS)
yang diditribusikan secara gratis dibawah licensi GPL (General Public
License). MySQL sebenarnya merupakan turunan salah satu konsep utama
dalam database sejak lama yaitu SQL (Structured Query Language). SQL
adalah sebuah konsep pengoperasian database terutama untuk
pemilihan/seleksi dan pemasukan data yng memungkinkan pengoperasian
data dikerjakan dengan mudah dan secara otomatis. (Prasetyo, 2006:1)
37
Keandalan suatu sistem database dapat diketahui dari cara kerja
optimizer nya dalam melakukan proses perintah-perintah SQL, yang dibuat
oleh user maupun program-program aplikasinya. Sebagai database server,
MySQL dapat dikatakan lebuh unggul dibandingkan database server lainnya
dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single
user, kecepatan query My SQL dapat sepuluh kali lebih cepat dari
PostgreSQL dan lima kali lebih cepat dibandingkan Interbase.
Sebagai database server yang memiliki konsep database modern,
MySQL memiliki banyak sekali keistimewaan diantaranya (Prasetyo,
2006:4):
1. Portability
MySQL dapat berjalan stabnil pada berbagai sistem operasi diantaranya
seperti Windows, Linux, FreeBSD, Mac OS X Server dan masih
banyak lagi.
2. Open Source
MySQL didistribusikan secara open source (gratis) dibawah licensi
GPL.
3. Multiuser
MySQL dapat digunakan oleh beberapa user dalam waktu yang
bersamaan tanpa mengalami masalah atau konflik. Hal ini
memungkinkan sebuah database server MySQL dapat diakses client
secara bersamaan.
38
4. Performance Tuning
MySQL memliki kecepatan yang menakjubkan dalam menangani query
sederhana dengan kata lain dapat memproses lebih banyak SQL per
satuan waktu.
5. Column Types
MySQL memiliki tipe kolom yang sangat kompleks, seperti
signed/unsigned integer, float, double, char dan masih banyak lagi.
6. Command dan Function
MySQL memiliki operator dan fungsi secara penuh yang mendukung
perintah SELECT dan WHERE dalam query.
7. Security
MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask,
nama host, dan ijin akses user dengan sistem perijinan yang mendetail
serta password terenkripsi.
8. Scalability dan Limits
MySQL mampu menangani database dalam skala besar, dengan jumlah
record lanih dari 50 juta dan 60 ribu tabel serta 5 miliar baris. Selain itu
batas indeks yang dapat ditampung mencapai 32 indeks pad tiap
tabelnya.
9. Localisation
MySQL dapat mendeteksi pesan kesalahan pada client dengan
menggunakan lebih dari dua puluh bahasa.
10. Interface
39
MySQL memiliki interface terhadap berbagai aplikasi dan bahasa
pemograman dengan menggunakan fungsi API.
11. Client dan Tools
MySQL dilengakapi dengan berbagai tools yang dapat digunakan untuk
administrasi database dan pada setiap tool yang ada disertakan petunjuk
online.
12. Struktur Tabel
MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani
ALTER TABLE dibandingkan database lainnya semacam PostgreeSQL
ataupun Oracle.
40
BAB IV
ANALISA DAN PERANCANGAN SISTEM
4.1. Analisa Sistem
Tahap analisa sistem adalah studi domain masalah untuk
merekomendasikan perbaikan dan menspesifikasi persyaratan dan prioritas
untuk solusi. Tugas paling penting dalam tahap ini adalah proses
menemukan masalah dan menghasilkan alternatif pemecahan masalah serta
diharapkan dapat memahami sistem yang ada guna menentukan kebutuhan
pemakai dan hambatan pada sistem yang baru.
4.1.1. Analisa Permasalahan
Permasalahan yang timbul dari Niki Eco adalah kesulitan
dalam perencanaan jumlah produksi snack untuk bulan-bulan
berikutnya. Karena dalam tiap bulannya penjualan snack meningkat
dan Niki Eco hanya mengandalkan perencanaan tradisional dalam
merencanakan produksi snack pada tiap bulannya. Perencanaan
tradisional disini adalah dalam bentuk produksi yang dilakukan
dalam jumlah yang sama dari bulan ke bulan atau berdasarkan
permintaan tanpa adanya perhitungan terlebih dahulu. Hal tersebut
tentunya akan membuat pihak Niki Eco kesulitan dalam mengetahui
jumlah produk yang harus diproduksi.
Untuk dapat mengatasi permasalahan tersebut dan
meningkatkan kinerja dari Niki Eco, maka diperlukan proses
41
perencanaan secara otomatis menggunakan kecerdasan buatan
dengan menggunakan Fuzzy Logic Tsukamoto.
4.1.2. Analisa Kebutuhan Perangkat Keras
Perangkat keras yang digunakan dalam pengembangan
perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto yaitu:
1. Processor Intel (R) Pentium IV Core I3
2. Memori 2 GB DDR3
3. HDD 500 Gb
4. DVD RW 24 X
5. LCD 17”
4.1.3. Analisa Kebutuhan Perangkat Lunak
Perangkat lunak yang digunakan dalam pengembangan
perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto yaitu :
1. Operating System : Microsoft Window 7
2. Editor Web : Adobe Dreamweaver CS 3
3. HTTP Server : Apache (2.2.4) + PHP (5.2.3)
4. Database Server : MySQL (5.1)
5. Browser : Google Chrome
4.1.4. Kriteria Sistem
Kriteria yang digunakan dalam perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto yaitu
42
1. Retur sebagai input
2. Penjualan sebagai input
3. Produksi sebagai output
4.1.5. Fuzzifikasi
Berdasarkan kriteria yang digunakan perencanaan jumlah
produksi snack pada Niki Eco menggunakan Logika Fuzzy
Tsukamoto ada 3 variabel yang dapat dimodelkan yaitu
1. Kriteria Retur
Kriteria retur dibagi menjadi 3 himpunan fuzzy, yaitu :
TURUN [0 50], SEDANG [30 100] dan NAIK [50 ∞].
Himpunan TURUN dan NAIK menggunakan pendekatan fungsi
keanggotaan yang berbentuk bahu, sedangkan himpunan
SEDANG menggunakan pendekatan berbentuk segitiga seperti
pada gambar 4.1.
0 30 50 100
1 TURUN SEDANG NAIK
f(x)
43
Gambar 4.1. Fungsi Keanggotaan pada Kriteria Retur
Fungsi keanggotaan pada kriteria retur dirumuskan sebagai
berikut :
1 1x 30
50 - 1x 30 1x 50
20
0 1x 50
0 1x 30 atau 1x 100
1x - 30 30 1x 50
20
100 - 1x 50 1x 100
50
0 1x 50
1x - 50 50 1x 100
50
1 1x 100
2. Kriteria Penjualan
Kriteria penjualan dibagi menjadi 3 himpunan fuzzy, yaitu
: SEDIKIT [0 2.500], SEDANG [1.000 5.000] dan BANYAK
[2.500 ∞]. Himpunan SEDIKIT dan BANYAK menggunakan
pendekatan fungsi keanggotaan yang berbentuk bahu, sedangkan
himpunan SEDANG menggunakan pendekatan berbentuk
segitiga seperti pada gambar 4.2.
0 1.000 2.500 5.000
1 SEDIKIT SEDANG BANYAK
f(x)
ReturTURUN 1[ x ]
{ ReturSEDANG 1[ x ]
{ ReturNAIK 1[ x ]
{
44
Gambar 4.2. Fungsi Keanggotaan pada Kriteria Penjualan
Fungsi keanggotaan pada kriteria penjualan dirumuskan sebagai
berikut :
1 2x 1.000
2.500- 2x 1.000 2x 2.500
1.500
0 2x 2.500
0 2x 1.000 atau 2x 5.000
2x - 1.000 1.000 2x 2.500
1.500
5.000 - 2x 2.500 2x 5.000
2.500
0 2x 2.500
2x - 2.500 2.500 2x 5.000
2.500
1 2x 5.000
3. Kriteria Produksi
Kriteria produksi dibagi menjadi 3 himpunan fuzzy, yaitu
: BERKURANG [0 2.500], SEDANG [1.000 5.000] dan
BERTAMBAH [5.000 ∞]. Himpunan BERKURANG dan
BERTAMBAH menggunakan pendekatan fungsi keanggotaan
yang berbentuk bahu, sedangkan himpunan SEDANG
{ PenjualanSEDIKIT 2[ x ]
{ PenjualanSEDANG 2[ x ]
{ Penjualan BANYAK 2[ x ]
45
menggunakan pendekatan berbentuk segitiga seperti pada
gambar 4.3.
Gambar 4.3. Fungsi Keanggotaan pada Kriteria Produksi
Fungsi keanggotaan pada kriteria produksi dirumuskan sebagai
berikut:
1 3x 1.000
2.500- 3x 1.000 3x 2.500
1.500
0 3x 2.500
0 3x 1.000 atau 3x 5.000
3x - 1.000 1.000 3x 2.500
1.500
5.000 - 3x 2.500 3x 5.000
2.500
0 3x 2.500
3x - 2.500 2.500 3x 5.000
2.500
1 3x 5.000
4.1.6. Pembentukan Rule
0 1.000 2.500 5.000
1 BERKURANG SEDANG BERTAMBAH
f(x)
Produksi BERKURANG 3[ x ]
{ ProduksiSEDANG 3[ x ]
{ Produksi BERTAMBAH 3[ x ]
{
46
Rule yang dihasilkan dalam perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto seperti
pada tabel 4.1.
Tabel 4.1. Rule
Rule IF THEN
Retur Penjualan Produksi
R1 Turun Banyak Bertambah
R2 Turun Sedang Berkurang
R3 Turun Sedikit Berkurang
R4 Sedang Banyak Bertambah
R5 Sedang Sedang Sedang
R6 Sedang Sedikit Berkurang
R7 Naik Banyak Bertambah
R8 Naik Sedang Berkurang
R9 Naik Sedikit Berkurang
4.2. Perancangan Sistem
Perancangan perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto dibuat dengan menggunakan UML.
4.2.1. Use Case Diagram
Use case diagram perencanaan jumlah produksi snack pada
Niki Eco menggunakan Logika Fuzzy Tsukamoto dapat dilihat pada
gambar 4.4.
47
uc Use Case Model
Admin
Login
Kelola data retur
Kelola data
penjualan
Pilih periode
perencanaan
Logout
Kelola Rule
Tsukamoto
Hasil
perencanaan
«include»
Gambar 4.4. Use Case Diagram
Gambar 4.4 menjelaskan admin melakukan login ke
perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto dengan memasukkan username dan
password kemudian mengelola data retur, data penjualan, rule Fuzzy
Tsukamoto, melihat hasil perencanaan atau logout.
4.2.2. Class Diagram
Class diagram perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto dapat dilihat pada
gambar 4.5.
48
class Integrasi Data
Penjualan
# idpenjualan: varchar
+ idbulan: int
+ tahun: year
+ total: double
+ totalsedikit: double
+ totalsedang: double
+ totalbanyak: double
+ cari() : void
+ tampilkan item() : void
+ edit() : void
+ hapus() : void
+ simpan() : void
Rule
# idrule: varchar
+ retur: varchar
+ penjualan: varchar
+ produksi: varchar
+ cari() : void
+ tampilkan item() : void
+ edit() : void
+ hapus() : void
+ simpan() : void
Retur
# idretur: varchar
+ idbulan: int
+ tahun: year
+ total: double
+ totalturun: double
+ totalsedang: double
+ totalnaik: double
+ edit() : void
+ cari() : void
+ tampilkan item() : void
+ hapus() : void
+ simpan() : void
Bulan
# idbulan: int
+ nmbulan: varchar
+ hapus() : void
+ simpan() : void
Hasil
+ idrule: varchar
+ idbulan: varchar
+ nilai: double
+ hasil: double
+ pIlih tahun() : void
+ proses() : void
Gambar 4.5. Class Diagram
4.2.3. Activity Diagram
Activity diagram perencanaan jumlah produksi snack pada
Niki Eco menggunakan Logika Fuzzy Tsukamoto dapat dilihat pada
gambar 4.6.
act Activ ity
Ad
min
mulai
Kelola data
retur
Kelola data
penjualan
Melihat Hasil
Perencanaa
Login Logout
Selesai
Kelola rule
tsukamoto
Gambar 4.6. Activity Diagram
49
Gambar 4.3 menjelaskan admin melakukan login ke
perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto dengan memasukkan username dan
password kemudian mengelola data retur, data penjualan, rule Fuzzy
Tsukamoto, melihat hasil perencanaan atau logout.
4.2.4. Sequence Diagram
Sequence diagram perencanaan jumlah produksi snack pada
Niki Eco menggunakan Logika Fuzzy Tsukamoto dapat dilihat pada
gambar 4.7.
sd sequence
Admin
Penjualan Retur Rule Hasil
Kelola data
penjualan()
Kelola data retur()
Kelola rule Tsukamoto()
Lihat hasil perencanaan()
Perencanaan produksi
snack()
Gambar 4.7 Sequence Diagram
Gambar 4.7 menjelaskan admin mengelola data retur, data
penjualan, rule Fuzzy Tsukamoto, melihat hasil perencanaan dan
ditampilkan hasil perencanaan produksi snack.
4.2.5. Perancangan Database
50
Database perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto terdiri dari 5 tabel yaitu
tabel penjualan, tabel bulan, tabel retur, tabel rule, tabel hasil.
1. Tabel Bulan
Tabel bulan pada tabel 4.2 digunakan untuk menyimpan
data bulan.
Tabel 4.2. Tabel Bulan
Field Name Type Size K
ey
Keterangan
Idbulan Int 2 * ID Bulan
Nmbulan Varchar 15 Nama Bulan
2. Tabel Penjualan
Tabel penjualan pada tabel 4.3 digunakan untuk
menyimpan data penjualan snack pada Niki Eco .
Tabel 4.3. Tabel Penjualan
Field Name Type Size K Keterangan
Idpenjualan Varchar 5 * ID Penjualan
Idbulan Int 2 ID Bulan
Tahun Year 4 Tahun
Total Double Total Penjualan
Totalsedikit Double Nilai Penjualan Sedikit
Totalsedang Double Nilai Penjualan Sedang
Totalbanyak Double Nilai Penjualan Banyak
51
3. Tabel Retur
Tabel retur pada tabel 4.4 digunakan untuk menyimpan
data retur snack pada Niki Eco .
Tabel 4.4. Tabel Retur
Field Name Type Size K Keterangan
Idretur Varchar 5 * ID Retur
Idbulan Int 2 ID Bulan
Tahun Year 4 Tahun
Total Double Total Retur
Totalturun Double Nilai Retur Turun
Totalsedang Double Nilai Retur Sedang
Totalnaik Double Nilai Retur Naik
4. Tabel Hasil
Tabel hasil pada tabel 4.5 digunakan untuk menyimpan
data hasil perencanaan produksi snack pada Niki Eco .
Tabel 4.5. Tabel Hasil
Field Name Type Size K Keterangan
Idbulan Int 2 ID Bulan
Nilai Double Nilai
Hasil Double Hasil
Idrule Bigint Idrule
5. Tabel Rule
Tabel rule pada tabel 4.6 digunakan untuk menyimpan
data aturan Fuzzy Tsukamoto.
52
Tabel 4.6. Tabel Rule
Field Name Type Size K Keterangan
Idrule Bigint * Idrule
Retur Varchar 6 Retur
Penjualan Varchar 8 Penjualan
Produksi Varchar 10 Produksi
4.2.6. Perancangan Interface
1. Login
Username
Password
Login
Login
Gambar 4.8. Halaman Login
Gambar 4.8 menjelaskan tentang halaman login yang
digunakan admin untuk masuk perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto.
Isi username dan password kemudian klik login untuk masuk ke
sistem, jika data valid akan ditampilkan halaman perencanaan
jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto.
2. Perancangan Retur
Gambar 4.9 menjelaskan tentang halaman retur yang
digunakan untuk menyimpan data retur snack pada perencanaan
53
jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto. Pada halaman ini, admin dapat menambah,
mengubah, menghapus data retur snack pada perencanaan
jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto.
ID Retur
Bulan
Simpan Batal
Retur
Penjualan
Rule
Perencanaan
Tampilkan Item Masukkan Kata Kunci
No ID Retur Bulan Tahun Total Proses
Admin
Tahun
Total
Gambar 4.9. Perancangan Retur
3. Perancangan Penjualan
ID Retur
Bulan
Simpan Batal
Retur
Penjualan
Rule
Perencanaan
Tampilkan Item Masukkan Kata Kunci
No ID Retur Bulan Tahun Total Proses
Admin
Tahun
Total
Gambar 4.10. Perancangan Penjualan
54
Gambar 4.10 menjelaskan tentang halaman penjualan
yang digunakan untuk menyimpan data penjualan snack pada
perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto. Pada halaman ini,
admin dapat menambah, mengubah, menghapus data penjualan
snack pada perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto.
4. Perancangan Rule
Retur
Penjualan
Simpan Batal
Retur
Penjualan
Rule
Perencanaan Tampilkan Item Masukkan Kata Kunci
No Retur Penjualan Produksi ProsesAdmin
Produksi
Gambar 4.11. Perancangan Rule
Gambar 4.11 menjelaskan tentang halaman rule yang
digunakan untuk menyimpan data aturan Fuzzy Tsukamoto pada
perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto. Pada halaman ini,
admin dapat menambah, mengubah, menghapus data aturan
55
perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto.
5. Perancangan Perencanaan
Tahun
Proses Batal
Retur
Penjualan
Rule
Perencanaan
Admin
Retur
Penjualan
Rule
Perencanaan
Perencanaan Produksi Snack Tahun
No Bulan Hasil Perencanaan
Admin
Gambar 4.12. Perancangan Perencanaan
Gambar 4.12 menjelaskan tentang halaman perencanaan
yang digunakan untuk melihat hasil perencanaan jumlah
56
produksi snack pada Niki Eco menggunakan Logika Fuzzy
Tsukamoto.
6. Perancangan Admin
User Name
Password
Simpan Batal
Retur
Penjualan
Rule
Perencanaan
Tampilkan Item Masukkan Kata Kunci
No User Name Password Proses
Admin
Gambar 4.13. Perancangan Admin
Gambar 4.13 menjelaskan tentang halaman admin yang
digunakan untuk menyimpan data pengguna pada perencanaan
jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto. Pada halaman ini, admin dapat menambah,
mengubah, menghapus data admin perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto.
57
BAB V
IMPLEMENTASI SISTEM
4.3. Login
Halaman login seperti pada gambar 5.1 digunakan untuk masuk ke
aplikasi perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto.
Gambar 5.1. Login
Untuk masuk ke aplikasi perencanaan jumlah produksi snack pada
Niki Eco menggunakan Logika Fuzzy Tsukamoto, isi username dan
password kemudian klik tombol login, jika login valid maka akan
ditampilkan halaman aplikasi perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto dan jika salah akan
ditampilkan pesan seperti gambar 5.2.
58
Gambar 5.2. Pesan Username atau Password Salah
Cuplikan source code pengecekan login yaitu
4.4. Snack
Halaman snack seperti pada gambar 5.3 digunakan untuk
memasukkan data snack pada Niki Eco yang ada di aplikasi perencanaan
jumlah produksi snack pada Niki Eco menggunakan Logika Fuzzy
Tsukamoto.
59
Gambar 5.3. Snack
ID snack akan terisi secara otomatis dengan format S99 yaitu S
merupakan inisial dari snack dan 99 merupakan urutan data snack dari tabel
snack. Isi nama snack dan klik tombol simpan untuk menyimpan data snack.
Klik tombol edit kemudian isi nama snack dan klik tombol simpan untuk
mengubah data snack. Klik tombol hapus dan pilih oke untuk menghapus
data snack. Cuplikan source code untuk mengelola data snack yaitu
60
4.5. Retur
Halaman retur seperti pada gambar 5.4 digunakan untuk
memasukkan data retur snack pada Niki Eco yang ada di aplikasi
perencanaan jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto. ID retur akan terisi secara otomatis dengan format R9999
yaitu R merupakan inisial dari retur dan 9999 merupakan urutan data retur
dari tabel retur. Isi snack, bulan, tahun, total dan klik tombol simpan untuk
menyimpan data retur snack. Klik tombol edit kemudian isi snack, bulan,
tahun, total dan klik tombol simpan untuk mengubah data retur. Klik tombol
hapus dan pilih oke untuk menghapus data retur snack.
61
Gambar 5.4. Retur
Cuplikan source code untuk mengelola data retur yaitu
4.6. Penjualan
62
Halaman penjualan seperti pada gambar 5.5 digunakan untuk
memasukkan penjualan snack pada Niki Eco yang ada di aplikasi
perencanaan jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto.
Gambar 5.5. Penjualan
ID penjualan akan terisi secara otomatis dengan format P9999 yaitu
P merupakan inisial dari penjualan dan 9999 merupakan urutan data
penjualan dari tabel penjualan. Isi snack, bulan, tahun, total dan klik tombol
simpan untuk menyimpan data penjualan snack. Klik tombol edit kemudian
isi snack, bulan, tahun, total dan klik tombol simpan untuk mengubah data
penjualan. Klik tombol hapus dan pilih oke untuk menghapus data penjualan
snack. Cuplikan source code untuk mengelola data penjualan yaitu
63
4.7. Rule
Halaman rule seperti pada gambar 5.6 digunakan untuk memasukkan
aturan Fuzzy Tsukamoto pada Niki Eco yang ada di aplikasi perencanaan
jumlah produksi snack pada Niki Eco menggunakan Logika Fuzzy
Tsukamoto. Isi retur, penjualan, produksi dan klik tombol simpan untuk
menyimpan data aturan. Klik tombol edit kemudian isi retur, penjualan,
produksi dan klik tombol simpan untuk mengubah data aturan. Klik tombol
hapus dan pilih oke untuk menghapus data aturan.
64
Gambar 5.6. Rule
Cuplikan source code untuk mengelola data rule yaitu
4.8. Perencanaan
Halaman perencanaan seperti pada gambar 5.7 digunakan untuk
melihat hasil perencanaan jumlah produksi snack pada Niki Eco di aplikasi
perencanaan jumlah produksi snack pada Niki Eco menggunakan Logika
65
Fuzzy Tsukamoto. Pilih tahun dan klik tombol proses untuk melihat hasil
perencanaan jumlah produksi snack dengan Fuzzy Tsukamoto.
Gambar 5.7. Perencanaan
Cuplikan source code untuk menghitung perencanaan dengan
Logika Fuzzy Tsukamoto yaitu
66
4.9. Admin
Halaman admin seperti pada gambar 5.8 digunakan untuk
memasukkan admin aplikasi perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto. Isi username, password dan
klik tombol simpan untuk menyimpan data admin. Klik tombol edit
kemudian isi password dan klik tombol simpan untuk mengubah data
admin. Klik tombol hapus dan pilih oke untuk menghapus data admin.
67
Gambar 5.8. Admin
Cuplikan source code untuk mengelola data admin yaitu
68
BAB VI
HASIL PENELITIAN DAN PEMBAHASAN
Pada bab ini akan dijelaskan mengenai perhitungan Logika Fuzzy
Tsukamoto dalam perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto.
1. Proses Fuzzifikasi
1. Kriteria Retur
Data retur snack arem-arem seperti pada tabel 6.1 yang
dihitung yaitu data retur snack arem-arem pada bulan Januari 2016
dengan jumlah retur 20 dan perhitungan retur yang lain
menyesuaikan pehitungan dengan retur yang dihitung.
Tabel 6.1. Retur Snack Arem-Arem
Bulan Tahun Jumlah Retur
Januari 2016 20
Pebruari 2016 50
Maret 2016 65
April 2016 0
Mei 2016 0
Juni 2016 53
Juli 2016 30
Agustus 2016 73
September 2016 30
Oktober 2016 0
Nopember 2016 0
69
Hasil perhitungan Fuzzy yaitu
1 1x 30
50 - 1x 30 1x 50
20
0 1x 50
0 1x 30 atau 1x 100
1x - 30 30 1x 50
20
100 - 1x 50 1x 100
50
0 1x 50
1x - 50 50 1x 100
50
1 1x 100
a. Retur snack arem-arem 20 pada retur turun termasuk dalam nilai
1x 30 sehingga nilai Fuzzy retur turun adalah 1.
b. Retur snack arem-arem 20 pada retur sedang termasuk dalam
nilai 1x 30 atau 1x 100 sehingga nilai Fuzzy retur sedang
adalah 0.
c. Retur snack arem-arem 20 pada retur naik termasuk dalam nilai
1x 50 sehingga nilai Fuzzy retur naik adalah 0.
Proses fuzzifikasi kriteria retur didapatkan seperti pada tabel 6.2.
Tabel 6.2. Fuzzifikasi Retur
Bulan Tahun Total Derajat
ReturTURUN 1[ x ]
{ ReturSEDANG 1[ x ]
{ ReturNAIK 1[ x ]
{
70
Keanggotaan
Turun Sedang Naik
Januari 2016 20 1 0 0
Pebruari 2016 50 0 1 0
Maret 2016 65 0 0,7 0,3
April 2016 0 1 0 0
Mei 2016 0 1 0 0
Juni 2016 53 0 0,94 0.06
Juli 2016 30 1 0 0
Agustus 2016 73 0 0,54 0,46
September 2016 30 1 0 0
Oktober 2016 0 1 0 0
Nopember 2016 0 1 0 0
2. Kriteria Penjualan
Data penjualan snack arem-arem seperti pada tabel 6.3 yang
dihitung yaitu data penjualan snack arem-arem pada bulan Januari
2016 dengan jumlah penjualan 4.150 dan perhitungan penjualan
yang lain menyesuaikan pehitungan dengan penjualan yang dihitung.
71
Tabel 6.3. Penjualan Snack Arem-Arem
Bulan Tahun Jumlah
Penjualan
Januari 2016 4.150
Pebruari 2016 5.800
Maret 2016 4.580
April 2016 3.280
Mei 2016 6.150
Juni 2016 4.250
Juli 2016 2.780
Agustus 2016 3.800
September 2016 2.750
Oktober 2016 4.420
Nopember 2016 3.550
Hasil perhitungan Fuzzy yaitu
1 2x 1.000
2.500- 2x 1.000 2x 2.500
1.500
0 2x 2.500
0 2x 1.000 atau 2x 5.000
2x - 1.000 1.000 2x 2.500
1.500
5.000 - 2x 2.500 2x 5.000
2.500
0 2x 2.500
2x - 2.500 2.500 2x 5.000
PenjualanSEDIKIT 2[ x ]
{ PenjualanSEDANG 2[ x ]
{ Penjualan BANYAK 2[ x ]
{
72
2.500
1 2x 5.000
a. Penjualan snack arem-arem 4.150 pada penjualan sedikit
termasuk dalam nilai 2x 2.500 sehingga nilai Fuzzy penjualan
sedikit adalah 0.
b. Penjualan snack arem-arem 4.150 pada penjualan sedang
termasuk dalam nilai 2.500 2x 5.000 sehingga nilai Fuzzy
penjualan sedang adalah (5.000-4.150) / 2.500 = 0.34.
c. Penjualan snack arem-arem 4.150 pada penjualan banyak
termasuk dalam nilai 2.500 2x 5.000 sehingga nilai Fuzzy
penjualan banyak adalah (4.150-2.500) / 2.500 = 0.66.
Proses fuzzifikasi kriteria penjualan didapatkan seperti pada tabel
6.4.
Tabel 6.4. Fuzzifikasi Penjualan
Bulan Tahun Total
Derajat Keanggotaan
Sedikit Sedang Banyak
Januari 2016 4.150 0 0.34 0.66
Pebruari 2016 5.800 0 0 1
Maret 2016 4.580 0 0.168 0.832
April 2016 3.280 0 0.688 0.312
Mei 2016 6.150 0 0 1
73
Juni 2016 4.250 0 0.3 0.7
Juli 2016 2.780 0 0.888 0.112
Agustus 2016 3.800 0 0.48 0.52
September 2016 2.750 0 0.9 0.1
Oktober 2016 4.420 0 0.232 0.768
Nopember 2016 3.550 0 0.58 0.42
2. Mesin Inferensi
Mesin inferensi yang dihitung yaitu snack arem-arem pada bulan
Januari 2016 dan perhitungan data yang lain menyesuaikan pehitungan
dengan snack arem-arem pada bulan Januari 2016.
[R1] IF retur Turun AND penjualan Banyak THEN produksi Bertambah
α-predikat1 = µTurun∩Banyak
= min(µTurun[20],µBanyak[4.150])
= min(1,0,66)
= 0,66
Himpunan Bertambah pada grafik keanggotaan variabel produksi
yaitu
(3x - 2.500) / 2.500 = 0,66
3x = 4.150
[R2] IF retur Turun AND penjualan Sedang THEN produksi Berkurang
α-predikat2 = µTurun∩Sedang
= min(µTurun[20],µSedang[4.150])
74
= min(1,0,34)
= 0,34
Himpunan Berkurang pada grafik keanggotaan variabel produksi
yaitu
(2.500 - 3x ) / 1.500 = 0,34
3x = 1.990
[R3] IF retur Turun AND penjualan Sedikit THEN produksi Berkurang
α-predikat3 = µTurun∩Sedikit
= min(µTurun[20],µSedikit[4.150])
= min(1,0)
= 0
Himpunan Berkurang pada grafik keanggotaan variabel produksi
yaitu
(2.500 - 3x ) / 1.500 = 0
3x = 2.500
[R4] IF retur Sedang AND penjualan Banyak THEN produksi Bertambah
α-predikat4 = µSedang∩Banyak
= min(µSedang[20],µBanyak[4.150])
= min(0,0,66)
= 0
Himpunan Bertambah pada grafik keanggotaan variabel produksi
yaitu
(3x - 2.500) / 2.500 = 0
3x = 2.500
[R5] IF retur Sedang AND penjualan Sedang THEN produksi Sedang
α-predikat5 = µSedang∩Sedang
75
= min(µSedang[20],µSedang[4.150])
= min(0,0,34)
= 0
Himpunan Sedang pada grafik keanggotaan variabel produksi yaitu
(3x - 1.000) / 1.500 = 0
3x = 1.000
[R6] IF retur Sedang AND penjualan Sedikit THEN produksi Berkurang
α-predikat6 = µSedang ∩Sedikit
= min(µSedang [20],µSedikit[4.150])
= min(0,0)
= 0
Himpunan Berkurang pada grafik keanggotaan variabel produksi
yaitu
(2.500 - 3x ) / 1.500 = 0
3x = 2.500
[R7] IF retur Naik AND penjualan Banyak THEN produksi Bertambah
α-predikat7 = µNaik ∩Banyak
= min(µNaik[20],µBanyak[4.150])
= min(0,0,66)
= 0
Himpunan Bertambah pada grafik keanggotaan variabel produksi
yaitu
(3x - 2.500) / 2.500 = 0
3x = 2.500
[R8] IF retur Naik AND penjualan Sedang THEN produksi Berkurang
α-predikat8 = µNaik∩Sedang
76
= min(µNaik[20],µSedang[4.150])
= min(0,0,34)
= 0
Himpunan Berkurang pada grafik keanggotaan variabel produksi
yaitu
(2.500 - 3x ) / 1.500 = 0
3x = 2.500
[R9] IF retur Naik AND penjualan Sedikit THEN produksi Berkurang
α-predikat9 = µNaik∩Sedikit
= min(µNaik[20],µSedikit[4.150])
= min(0,0)
= 0
Himpunan Berkurang pada grafik keanggotaan variabel produksi
yaitu
(2.500 - 3x ) / 1.500 = 0
3x = 2.500
Hasil mesin inferensi didapatkan seperti pada tabel 6.5 sampai dengan 6.15.
Tabel 6.5. Mesin Inferensi Januari 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0,66 4.150 2.739
R2 0,34 1.990 677
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
77
R8 0 2.500 0
R9 0 2.500 0
Total 1 3.416
Tabel 6.6. Mesin Inferensi Pebruari 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0,66 4.150 2.739
R2 0,34 1.990 677
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 3.416
Tabel 6.7. Mesin Inferensi Maret 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0 2.500 0
R2 0 2.500 0
R3 0 2.500 0
R4 1 5.000 5.000
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 5.000
78
Tabel 6.8. Mesin Inferensi April 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0 2.500 0
R2 0 2.500 0
R3 0 2.500 0
R4 0,7 4.250 2.975
R5 0,168 1.252 210
R6 0 2.500 0
R7 0,3 3.250 975
R8 0,168 2.248 378
R9 0 2.500 0
Total 1,336 4.538
Tabel 6.9. Mesin Inferensi Mei 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0,312 3.280 1.023
R2 0,688 1.468 1.010
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 2.033
Tabel 6.10. Mesin Inferensi Juni 2016
79
Rule α-predikat Nilai α-predikat * Nilai
R1 1 5.000 5.000
R2 0 2.500 0
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 5.000
Tabel 6.11. Mesin Inferensi Juli 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0 2.500 0
R2 0 2.500 0
R3 0 2.500 0
R4 0,7 4.250 2.975
R5 0,3 1.450 435
R6 0 2.500 0
R7 0,06 2.650 159
R8 0,06 2.410 145
R9 0 2.500 0
Total 1,12 3.714
Tabel 6.12. Mesin Inferensi Agustus 2016
Rule α-predikat Nilai α-predikat * Nilai
80
R1 0,112 2.780 311
R2 0,888 1.168 1.038
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 1.349
Tabel 6.13. Mesin Inferensi September 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0 2.500 0
R2 0 2.500 0
R3 0 2.500 0
R4 0,52 3.800 1.976
R5 0,48 1.720 826
R6 0 2.500 0
R7 0,46 3.650 1.679
R8 0,46 1.810 832
R9 0 2.500 0
Total 1,92 5.313
Tabel 6.14. Mesin Inferensi Oktober 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0,1 2.750 275
R2 0,9 1.150 1.035
81
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 1.310
Tabel 6.15. Mesin Inferensi November 2016
Rule α-predikat Nilai α-predikat * Nilai
R1 0,768 4.420 3395
R2 0,232 2.152 499
R3 0 2.500 0
R4 0 2.500 0
R5 0 1.000 0
R6 0 2.500 0
R7 0 2.500 0
R8 0 2.500 0
R9 0 2.500 0
Total 1 3.894
3. Defuzzifikasi
Defuzzifikasi dalam perencanaan jumlah produksi snack pada Niki
Eco menggunakan Logika Fuzzy Tsukamoto ditunjukkan seperti tabel 6.16.
Tabel 6.16. Defuzzifikasi
Bulan Tahun ∑ yy)( ∑ )(y Z = ∑ yy)( / ∑ )(y
82
Januari 2016 - - -
Pebruari 2016 3.416 1 3.416
Maret 2016 3.416 1 3.416
April 2016 5.000 1 5.000
Mei 2016 4.538 1,336 3.397
Juni 2016 2.033 1 2.033
Juli 2016 5.000 1 5.000
Agustus 2016 3.714 1,12 3.316
September 2016 1.349 1 1.349
Oktober 2016 5.313 1,92 2.767
Nopember 2016 1.310 1 1.310
Desember 2016 3.894 1 3.894
Dari hasil prediksi jumlah produksi snack arem-arem pada Niki Eco
untuk bulan berikutnya yaitu Desember 2016, Niki Eco akan memproduksi
snack arem-arem sebanyak 3.894 snack arem-arem. Hasil defuzzifikasi
dalam perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto ditunjukkan seperti gambar 6.1.
83
Gambar 6.1. Defuzzifikasi
84
BAB VII
PENUTUP
Berdasarkan hasil yang telah dicapai dalam penyusunan laporan tugas
akhir ini penulis berharap dengan tercapainya perencanaan jumlah produksi snack
pada Niki Eco menggunakan Logika Fuzzy Tsukamoto. Dalam penyusunan
laporan tugas akhir ini dapat ditarik suatu kesimpulan dan saran yang tentunya
tidak melupakan saran-saran dari pembaca sebagai bahan masukan bilamana
pembaca tertarik untuk mengembangkan aplikasi ini lebih lanjut
7.1. Kesimpulan
Setelah melakukan penelitian pada perencanaan jumlah produksi
snack pada Niki Eco menggunakan Logika Fuzzy Tsukamoto, maka penulis
dapat menarik kesimpulan sebagai berikut:
1. Terciptanya perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto yang dapat digunakan untuk
memprediksi jumlah produksi snack pada Niki Eco.
2. Hasil perencanaan jumlah produksi snack pada Niki Eco menggunakan
Logika Fuzzy Tsukamoto untuk bulan berikutnya yaitu Desember 2016
yaitu sebesar 3.894 snack arem-arem.
3. Hasil keluaran perencanaan jumlah produksi snack pada Niki Eco
menggunakan Logika Fuzzy Tsukamoto menampilkan rekomendasi
produksi snack, namun pada akhirnya keputusan tetap ada pada
pengguna tanpa harus terpaku pada hasil rekomendasi karena sistem ini
85
dibuat untuk mendukung keputusan pada perencanaan jumlah produksi
snack, bukan sebagai sistem pengambil / penentu sebuah keputusan.
.
7.2. Saran
Berikut ini saran penulis terhadap pengembangan dan penerapan
perencanaan jumlah produksi snack pada Niki Eco menggunakan Logika
Fuzzy Tsukamoto lebih lanjut yaitu:
1. Dalam perhitungan perencanaan produksi dengan menggunakan model
Fuzzy Tsukamoto, dapat memperbanyak pilihan kriteria yang diajukan
sistem yang bersifat dinamik yang terdiri dari variabel input kriteria
Fuzzy.
2. Pengembangan selanjutnya, sistem diharapkan dapat menggabungkan
metode Fuzzy Tsukamoto dengan metode yang lain seperti Fuzzy
Mamdani agar hasil perencanaan produksi lebih baik.
86
DAFTAR PUSTAKA
Aditya, A.N, (2010), Jago PHP & MySQL Dalam Hitungan Menit, Dunia
Komputer, Bekasi
Assauri, S., (2013), Manajemen Pemasaran, Rajawali Pers, Jakarta
Dharwiyanti, S., Wahono, R.S., (2003), Pengantar Unified Modeling Language
(UML), http://www.unej.ac.id/pdf/yanti-uml.pdf diakses pada tanggal
14/12/2016
Kusumadewi, S., (2010) Aplikasi Logika Fuzzy untuk Pendukung Keputusan,
Graha Ilmu, Yogyakarta.
Muzayyanah, I., Mahmudy, W.F., Cholissodin, I., (2014), Penentuan Persediaan
Bahan Baku Dan Membantu Target Marketing Industri Dengan Metode
Fuzzy Inference System Tsukamoto, Skripsi, Universitas Brawijaya Malang
Nawawi, H., (2013), Manajemen Sumber Daya Manusia Untuk Bisnis Yang
Kompetitif, Cetakan Ke-4, Gajah Mada Univercity Press, Yogyakarta
Prasetyo, D.D, (2006), Administrasi Database Server MySQL, Elex Media
Komputindo, Jakarta.
Rohayani, H.., (2015), Fuzzy Inference System Dengan Metode Tsukamoto
Sebagai Penunjang Keputusan Produksi (Studi Kasus : PT. Talkindo
Selaksa Anugrah), Skripsi, STIKOM Dinamika Bangsa Jambi
Whitten, J.L, (2004), Metode Desain dan Analisa Sistem, Andi Offset, Yogyakarta
Wiguna, R.Y., Haryanto, H., (2012), Sistem Berbasis Aturan Menggunakan
Logika Fuzzy Tsukamoto untuk Prediksi Jumlah Produksi Roti Pada CV.
Gendis Bakery, Skripsi, Universitas Dian Nuswantoro Semarang
LAMPIRAN I
LISTING PROGRAM
1. Index.php <?php
session_start();
include '../includes/lib.inc.php';
include APP_ROOT."/includes/class.inc.php";
include APP_ROOT."/includes/auth.inc.php";
include INCLUDES_DIR."/class.paging.php";
$jp = new jcore();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/png"
href="assets/img/favicon.ico">
<meta http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1" />
<title>Niki Eco</title>
<meta content='width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="viewport" content="width=device-width" />
<!-- Bootstrap core CSS -->
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<!-- Animation library for notifications -->
<link href="assets/css/animate.min.css" rel="stylesheet"/>
<!-- Light Bootstrap Table core CSS -->
<link href="assets/css/light-bootstrap-dashboard.css"
rel="stylesheet"/>
<!-- CSS for Demo Purpose, don't include it in your project
-->
<link href="assets/css/demo.css" rel="stylesheet" />
<!-- Fonts and icons -->
<link href="assets/font-awesome.min.css" rel="stylesheet">
<link
href='http://fonts.googleapis.com/css?family=Roboto:400,700,300'
rel='stylesheet' type='text/css'>
<link href="assets/css/pe-icon-7-stroke.css" rel="stylesheet"
/>
<script src="assets/plugins/jQuery/jQuery-2.1.4.min.js"
type="text/javascript"></script>
<script src="assets/plugins/bootstrap/js/bootstrap.min.js"
type="text/javascript"></script>
<link href="assets/plugins/bootstrap/css/bootstrap.min.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<div class="wrapper">
<div class="sidebar" data-color="red" data-
image="assets/img/sidebar-5.jpg">
<!-- you can change the color of the sidebar using: data-
color="blue | azure | green | orange | red | purple" -->
<div class="sidebar-wrapper">
<div class="logo">
<a href="#" class="simple-text">
Niki Eco
</a>
</div>
<ul class="nav">
<li>
<a href="index.php?page=snack">
<i class="pe-7s-news-paper"></i>
<p>Snack</p>
</a>
</li>
<li>
<a href="index.php?page=retur">
<i class="pe-7s-news-paper"></i>
<p>Retur</p>
</a>
</li>
<li>
<a href="index.php?page=penjualan">
<i class="pe-7s-note2"></i>
<p>Penjualan</p>
</a>
</li>
<li>
<a href="index.php?page=rule">
<i class="pe-7s-graph"></i>
<p>Rule</p>
</a>
</li>
<li>
<a href="index.php?page=cetak">
<i class="pe-7s-science"></i>
<p>Perencanaan</p>
</a>
</li>
<li>
<a href="index.php?page=admin">
<i class="pe-7s-user"></i>
<p>Admin</p>
</a>
</li>
</ul>
</div>
</div>
<div class="main-panel">
<nav class="navbar navbar-default navbar-fixed">
<div class="container-fluid">
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="logout.php">
Log out
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="content">
<div class="container-fluid">
<div class="card">
<div class="content">
<?php
switch($_REQUEST[page]){
case "penjualan":
include "penjualan.php";
break;
case "retur":
include "retur.php";
break;
case "rule":
include "rule.php";
break;
case "cetak":
include "cetak.php";
break;
case "hasil":
include "hasil.php";
break;
case "admin":
include "admin.php";
break;
default:
include "snack.php";
break;
}
?>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="container-fluid">
<p class="copyright pull-right">
© 2017 <a href="#">Niki Eco</a>
</p>
</div>
</footer>
</div>
</div>
</body>
<!-- Core JS Files -->
<!-- Checkbox, Radio & Switch Plugins -->
<script src="assets/js/bootstrap-checkbox-radio-
switch.js"></script>
<!-- Charts Plugin -->
<script src="assets/js/chartist.min.js"></script>
<!-- Notifications Plugin -->
<script src="assets/js/bootstrap-notify.js"></script>
<!-- Google Maps Plugin -->
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?sensor=false"></scrip
t>
<!-- Light Bootstrap Table Core javascript and methods for
Demo purpose -->
<script src="assets/js/light-bootstrap-
dashboard.js"></script>
<!-- Light Bootstrap Table DEMO methods, don't include it in
your project! -->
<script src="assets/js/demo.js"></script>
</html>
2. Penjualan.php <link href="assets/plugins/datatables/dataTables.bootstrap.css"
rel="stylesheet" type="text/css" />
<script src="assets/plugins/datatables/jquery.dataTables.min.js"
type="text/javascript"></script>
<script
src="assets/plugins/datatables/dataTables.bootstrap.min.js"
type="text/javascript"></script>
<!-- page script -->
<script type="text/javascript">
$(function () {
$("#example1").DataTable();
$('#example2').DataTable({
"paging": true,
"lengthChange": true,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": true
});
});
</script>
<?php
if($_REQUEST[idpenjualan]!='')
{
$q = "select * from penjualan where
idpenjualan='".$_REQUEST[idpenjualan]."'";
$r = $jp->sql($q);
$o = $jp->fetch($r);
$disabled = " readonly='true' ";
}
else
{
$q1= "SELECT max(RIGHT(idpenjualan,4))+1 as maks from penjualan";
$r1 = $jp->sql($q1);
$o1 = $jp->fetch($r1);
if (strlen($o1[maks])<=0) {
$kode='P0001';
}
else if (strlen($o1[maks])==1) {
$kode='P000'.''.$o1[maks];
}
else if (strlen($o1[maks])==2) {
$kode='P00'.''.$o1[maks];
}
else if (strlen($o1[maks])==3) {
$kode='P0'.''.$o1[maks];
}
else if (strlen($o1[maks])==4) {
$kode='P'.''.$o1[maks];
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>::: <?=$title?> :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<script>
//==============================SCRIPT TAMBAHAN UNTUK FILTER
KEYBOARD======================================================
function numbersonly(e) {
var unicode = e.charCode ? e.charCode : e.keyCode
if ((unicode != 8) && (unicode != 13) && (unicode != 37) &&
(unicode != 39) && (unicode != 9)) { //if the key isn't the
backspace key (which we should allow)
if (unicode < 48 || unicode > 57) //if not a number
return false //disable key press
}
}
//================================================================
===========================
function ConfirmDel(idpenjualan){
if(confirm('Hapus..?')){
window.location="proses.php?page=penjualan&action=delete&idp
enjualan="+idpenjualan;
}
}
</script>
<style type="text/css">
<!--
.style5 {color: #FFFFFF; font-size: 12px; }
.style6 {font-size: 14px; color:#4d92a2;}
.style10 {font-size: 12px}
.style12 {font-family: Georgia, "Times New Roman", Times, serif;
font-size: 12px; }
-->
</style>
</head>
<body>
<h1> Data Penjualan </h1>
<script src="js/gen_validatorv31.js"
language="javascript"></script>
<form action="proses.php?page=penjualan&action=input"
method="post" enctype="multipart/form-data" name="Formpenjualan"
id="Formpenjualan" role="form">
<input name="id_edit" type="hidden" value="<?=$o[idpenjualan]?>">
<table width="675" border="0" align="center" cellpadding="2"
cellspacing="0">
<tr>
<td colspan="4"> </td>
</tr>
<tr>
<td width="137"><label>ID Penjualan</label> </td>
<td width="3" align="center"><label>:</label></td>
<td width="523">
<? if($_REQUEST[idpenjualan]!='')
{ ?>
<div class="col-sm-3">
<input name="idpenjualan" type="text" id="idpenjualan"
value="<?=$o[idpenjualan]?>" size="5" maxlength="5" readonly=""
class="form-control">
</div>
<? } else { ?>
<div class="col-sm-3"><input name="idpenjualan" type="text"
id="idpenjualan" value="<?=$kode?>" size="6" maxlength="6"
readonly="" class="form-control"></div>
<? } ?>
</td>
</tr>
<tr>
<td><label>Snack</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-5"><select name="idsnack"
id="idsnack" class="form-control">
<option value="">-Pilih Snack-</option>
<?php
$r = $jp->sql("select * from snack order by nmsnack");
while ($oKel = $jp->fetch($r)){
$isSelKel =
(($oKel[idsnack]==$o[idsnack])?"selected":"");
?>
<option value="<?=$oKel[idsnack]?>" <?=$isSelKel?>>
<?=$oKel[nmsnack]?>
</option>
<?php } ?>
</select> </div>
</td>
</tr>
<tr>
<td><label>Bulan</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-4"><select name="idbulan"
id="idbulan" class="form-control">
<option value="">-Pilih Bulan-</option>
<?php
$r = $jp->sql("select * from bulan order by idbulan");
while ($oKel = $jp->fetch($r)){
$isSelKel =
(($oKel[idbulan]==$o[idbulan])?"selected":"");
?>
<option value="<?=$oKel[idbulan]?>" <?=$isSelKel?>>
<?=$oKel[nmbulan]?>
</option>
<?php } ?>
</select> </div>
</td>
</tr>
<tr>
<td><label>Tahun</label> </td>
<td align="center"><label>:</label></td>
<td colspan="2"><div class="col-sm-2"><input name="tahun"
type="text" id="tahun" size="4" maxlength="4"
value="<?=$o[tahun]?>" class="form-control" onKeyPress="penjualann
numbersonly(event);"></div> </td>
</tr>
<tr>
<td><label>Total</label> </td>
<td align="center"><label>:</label></td>
<td colspan="2"><div class="col-sm-4"><input name="total"
type="text" id="total" value="<?=$o[total]?>" class="form-control"
onKeyPress="penjualann numbersonly(event);"></div> </td>
</tr>
<tr>
<td colspan="2"> </td>
<td colspan="2">
<button type="submit" class="btn btn-primary"
onClick="penjualann doSubmit()">Simpan</button>
<button type="reset" class="btn btn-success"
onclick="window.location='index.php?page=penjualan'">Batal</button
>
</td>
</tr>
<tr>
<td colspan="4"> </td>
</tr>
</table>
</form>
<?php
$result1=$jp->sql("select a.idsnack,c.nmsnack,a.tahun from
penjualan a inner join snack c on a.idsnack=c.idsnack group by
a.idsnack,a.tahun desc");
?>
<table id="example1" class="table table-bordered table-striped"
width="80%">
<?php $n = 0;while($row1 = $jp->fetch($result1)){ $n++; ?>
<thead>
<tr bgcolor="#FB404B">
<th width="49" align="center" valign="middle"
colspan="5"><span class="style5"><?=$row1[nmsnack]?>
<?=$row1[tahun]?></span></th>
</tr>
<?php
$result=$jp->sql("select a.*,b.nmbulan from penjualan a inner join
bulan b on a.idbulan=b.idbulan where a.tahun='".$row1[tahun]."'
and a.idsnack='".$row1[idsnack]."' order by a.idbulan");
?>
<tr bgcolor="#FB404B">
<th width="49" align="center" valign="middle"><span
class="style5">No.</span></th>
<th width="67" valign="middle"><span class="style5">ID
Penjualan</span></th>
<th width="110" valign="middle"><span
class="style5">Bulan</span></th>
<th width="85" valign="middle"><span
class="style5">Total</span></th>
<th width="110"> <span class="style5">Proses</span> </th>
</tr>
</thead>
<?php $n = 0;while($row = $jp->fetch($result)){ $n++;
if ($n%2==0)
{$c = "info";}
else
{$c = "danger";}
?>
<tr bgcolor="#FFFFFF" class="<?=$c?>">
<td width="49" align="center" valign="top"><span
class="style12"><?=$n?>.</span></td>
<td width="67" valign="top" align="center"><span
class="style12"><b><?=$row[idpenjualan]?></b> </span></td>
<td width="110" valign="top" align="justify"><span
class="style12"><?=$row[nmbulan]?> </span> </td>
<td width="85" align="right" valign="top"><span
class="style12"> <?=$jp->pt($row[total])?> </span></td>
<td width="110" align="center" valign="top"><a
href="index.php?page=penjualan&idpenjualan=<?=$row[idpenjualan]?>"
><img src="images/edit.png" width="32" height="32" border="0"
title="Edit" /></a><a href="#" onclick="return
ConfirmDel('<?=$row[idpenjualan]?>')"> <img
src="images/del.png" width="32" height="32" border="0"
title="Hapus" /> </a></td>
</tr>
<?php } ?>
<? } ?>
</table>
<script>
function doSubmit(){
var v = new Validator("Formpenjualan");
v.addValidation("idpenjualan","req","idpenjualan tidak boleh
kosong");
v.addValidation("total","req","Total tidak boleh kosong");
}
</script>
</body>
</html>
3. Retur.php
<link href="assets/plugins/datatables/dataTables.bootstrap.css"
rel="stylesheet" type="text/css" />
<script src="assets/plugins/datatables/jquery.dataTables.min.js"
type="text/javascript"></script>
<script
src="assets/plugins/datatables/dataTables.bootstrap.min.js"
type="text/javascript"></script>
<!-- page script -->
<script type="text/javascript">
$(function () {
$("#example1").DataTable();
$('#example2').DataTable({
"paging": true,
"lengthChange": true,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": true
});
});
</script>
<?php
if($_REQUEST[idretur]!='')
{
$q = "select * from retur where
idretur='".$_REQUEST[idretur]."'";
$r = $jp->sql($q);
$o = $jp->fetch($r);
$disabled = " readonly='true' ";
}
else
{
$q1= "SELECT max(RIGHT(idretur,4))+1 as maks from retur";
$r1 = $jp->sql($q1);
$o1 = $jp->fetch($r1);
if (strlen($o1[maks])<=0) {
$kode='R0001';
}
else if (strlen($o1[maks])==1) {
$kode='R000'.''.$o1[maks];
}
else if (strlen($o1[maks])==2) {
$kode='R00'.''.$o1[maks];
}
else if (strlen($o1[maks])==3) {
$kode='R0'.''.$o1[maks];
}
else if (strlen($o1[maks])==4) {
$kode='R'.''.$o1[maks];
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>::: <?=$title?> :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<script>
//==============================SCRIPT TAMBAHAN UNTUK FILTER
KEYBOARD======================================================
function numbersonly(e) {
var unicode = e.charCode ? e.charCode : e.keyCode
if ((unicode != 8) && (unicode != 13) && (unicode != 37) &&
(unicode != 39) && (unicode != 9)) { //if the key isn't the
backspace key (which we should allow)
if (unicode < 48 || unicode > 57) //if not a number
return false //disable key press
}
}
//================================================================
===========================
function ConfirmDel(idretur){
if(confirm('Hapus..?')){
window.location="proses.php?page=retur&action=delete&idretur
="+idretur;
}
}
</script>
<style type="text/css">
<!--
.style5 {color: #FFFFFF; font-size: 12px; }
.style6 {font-size: 14px; color:#4d92a2;}
.style10 {font-size: 12px}
.style12 {font-family: Georgia, "Times New Roman", Times, serif;
font-size: 12px; }
-->
</style>
</head>
<body>
<h1> Data Retur </h1>
<script src="js/gen_validatorv31.js"
language="javascript"></script>
<form action="proses.php?page=retur&action=input" method="post"
enctype="multipart/form-data" name="Formretur" id="Formretur"
role="form">
<input name="id_edit" type="hidden" value="<?=$o[idretur]?>">
<table width="675" border="0" align="center" cellpadding="2"
cellspacing="0">
<tr>
<td colspan="4"> </td>
</tr>
<tr>
<td width="137"><label>ID Retur</label> </td>
<td width="3" align="center"><label>:</label></td>
<td width="523">
<? if($_REQUEST[idretur]!='')
{ ?>
<div class="col-sm-3">
<input name="idretur" type="text" id="idretur"
value="<?=$o[idretur]?>" size="5" maxlength="5" readonly=""
class="form-control">
</div>
<? } else { ?>
<div class="col-sm-3"><input name="idretur" type="text"
id="idretur" value="<?=$kode?>" size="6" maxlength="6" readonly=""
class="form-control"></div>
<? } ?>
</td>
</tr>
<tr>
<td><label>Snack</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-5"><select name="idsnack"
id="idsnack" class="form-control">
<option value="">-Pilih Snack-</option>
<?php
$r = $jp->sql("select * from snack order by nmsnack");
while ($oKel = $jp->fetch($r)){
$isSelKel =
(($oKel[idsnack]==$o[idsnack])?"selected":"");
?>
<option value="<?=$oKel[idsnack]?>" <?=$isSelKel?>>
<?=$oKel[nmsnack]?>
</option>
<?php } ?>
</select> </div>
</td>
</tr>
<tr>
<td><label>Bulan</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-4"><select name="idbulan"
id="idbulan" class="form-control">
<option value="">-Pilih Bulan-</option>
<?php
$r = $jp->sql("select * from bulan order by idbulan");
while ($oKel = $jp->fetch($r)){
$isSelKel =
(($oKel[idbulan]==$o[idbulan])?"selected":"");
?>
<option value="<?=$oKel[idbulan]?>" <?=$isSelKel?>>
<?=$oKel[nmbulan]?>
</option>
<?php } ?>
</select> </div>
</td>
</tr>
<tr>
<td><label>Tahun</label> </td>
<td align="center"><label>:</label></td>
<td colspan="2"><div class="col-sm-2"><input name="tahun"
type="text" id="tahun" size="4" maxlength="4"
value="<?=$o[tahun]?>" class="form-control" onKeyPress="return
numbersonly(event);"></div> </td>
</tr>
<tr>
<td><label>Total</label> </td>
<td align="center"><label>:</label></td>
<td colspan="2"><div class="col-sm-4"><input name="total"
type="text" id="total" value="<?=$o[total]?>" class="form-control"
onKeyPress="return numbersonly(event);"></div> </td>
</tr>
<tr>
<td colspan="2"> </td>
<td colspan="2">
<button type="submit" class="btn btn-primary" onClick="return
doSubmit()">Simpan</button>
<button type="reset" class="btn btn-success"
onclick="window.location='index.php?page=retur'">Batal</button>
</td>
</tr>
<tr>
<td colspan="4"> </td>
</tr>
</table>
</form>
<?php
$result1=$jp->sql("select a.idsnack,c.nmsnack,a.tahun from retur a
inner join snack c on a.idsnack=c.idsnack group by
a.idsnack,a.tahun desc");
?>
<table id="example1" class="table table-bordered table-striped"
width="80%">
<?php $n = 0;while($row1 = $jp->fetch($result1)){ $n++; ?>
<thead>
<tr bgcolor="#FB404B">
<th width="49" align="center" valign="middle"
colspan="5"><span class="style5"><?=$row1[nmsnack]?>
<?=$row1[tahun]?></span></th>
</tr>
<?php
$result=$jp->sql("select a.*,b.nmbulan from retur a inner join
bulan b on a.idbulan=b.idbulan where a.tahun='".$row1[tahun]."'
and a.idsnack='".$row1[idsnack]."' order by a.idbulan");
?>
<tr bgcolor="#FB404B">
<th width="49" align="center" valign="middle"><span
class="style5">No.</span></th>
<th width="67" valign="middle"><span class="style5">ID
Retur</span></th>
<th width="110" valign="middle"><span
class="style5">Bulan</span></th>
<th width="85" valign="middle"><span
class="style5">Total</span></th>
<th width="110"> <span class="style5">Proses</span> </th>
</tr>
</thead>
<?php $n = 0;while($row = $jp->fetch($result)){ $n++;
if ($n%2==0)
{$c = "info";}
else
{$c = "danger";}
?>
<tr bgcolor="#FFFFFF" class="<?=$c?>">
<td width="49" align="center" valign="top"><span
class="style12"><?=$n?>.</span></td>
<td width="67" valign="top" align="center"><span
class="style12"><b><?=$row[idretur]?></b> </span></td>
<td width="110" valign="top" align="justify"><span
class="style12"><?=$row[nmbulan]?> </span> </td>
<td width="85" align="right" valign="top"><span
class="style12"> <?=$jp->pt($row[total])?> </span></td>
<td width="110" align="center" valign="top"><a
href="index.php?page=retur&idretur=<?=$row[idretur]?>"><img
src="images/edit.png" width="32" height="32" border="0"
title="Edit" /></a><a href="#" onclick="return
ConfirmDel('<?=$row[idretur]?>')"> <img src="images/del.png"
width="32" height="32" border="0" title="Hapus" /> </a></td>
</tr>
<?php } ?>
<? } ?>
</table>
<script>
function doSubmit(){
var v = new Validator("Formretur");
v.addValidation("idretur","req","idretur tidak boleh
kosong");
v.addValidation("total","req","Total tidak boleh kosong");
}
</script>
</body>
</html>
4. Rule.php <link href="assets/plugins/datatables/dataTables.bootstrap.css"
rel="stylesheet" type="text/css" />
<script src="assets/plugins/datatables/jquery.dataTables.min.js"
type="text/javascript"></script>
<script
src="assets/plugins/datatables/dataTables.bootstrap.min.js"
type="text/javascript"></script>
<!-- page script -->
<script type="text/javascript">
$(function () {
$("#example1").DataTable();
$('#example2').DataTable({
"paging": true,
"lengthChange": true,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": true
});
});
</script>
<?php
if($_REQUEST[idrule]!='')
{
$q = "select * from rule where
idrule='".$_REQUEST[idrule]."'";
$r = $jp->sql($q);
$o = $jp->fetch($r);
$disabled = " readonly='true' ";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>::: <?=$title?> :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1">
<script>
//==============================SCRIPT TAMBAHAN UNTUK FILTER
KEYBOARD======================================================
function numbersonly(e) {
var unicode = e.charCode ? e.charCode : e.keyCode
if ((unicode != 8) && (unicode != 13) && (unicode != 37) &&
(unicode != 39) && (unicode != 9)) { //if the key isn't the
backspace key (which we should allow)
if (unicode < 48 || unicode > 57) //if not a number
return false //disable key press
}
}
//================================================================
===========================
function ConfirmDel(idrule){
if(confirm('Hapus..?')){
window.location="proses.php?page=rule&action=delete&idrule="
+idrule;
}
}
</script>
<style type="text/css">
<!--
.style5 {color: #FFFFFF; font-size: 12px; }
.style6 {font-size: 14px; color:#4d92a2;}
.style10 {font-size: 12px}
.style12 {font-family: Georgia, "Times New Roman", Times, serif;
font-size: 12px; }
-->
</style>
</head>
<body>
<h1> Data Rule </h1>
<script src="js/gen_validatorv31.js"
language="javascript"></script>
<form action="proses.php?page=rule&action=input" method="post"
enctype="multipart/form-data" name="Formrule" id="Formrule"
role="form">
<input name="id_edit" type="hidden" value="<?=$o[idrule]?>">
<table width="675" border="0" align="center" cellpadding="2"
cellspacing="0">
<tr>
<td colspan="4"> </td>
</tr>
<tr>
<td><label>Retur</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-4"><select name="retur"
id="retur" class="form-control">
<option>- Pilih Retur-</option>
<option value="Turun"
<?=(($o[retur]=='Turun')?"selected":"")?>>Turun</option>
<option value="Sedang"
<?=(($o[retur]=='Sedang')?"selected":"")?>>Sedang</option>
<option value="Naik"
<?=(($o[retur]=='Naik')?"selected":"")?>>Naik</option>
</select> </div>
</td>
</tr>
<tr>
<td><label>Penjualan</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-4"><select
name="penjualan" id="penjualan" class="form-control">
<option>- Pilih Penjualan-</option>
<option value="Banyak"
<?=(($o[penjualan]=='Banyak')?"selected":"")?>>Banyak</option>
<option value="Sedang"
<?=(($o[penjualan]=='Sedang')?"selected":"")?>>Sedang</option>
<option value="Sedikit"
<?=(($o[penjualan]=='Sedikit')?"selected":"")?>>Sedikit</option>
</select> </div>
</td>
</tr>
<tr>
<td><label>Produksi</label></td>
<td align="center"><label>:</label></td>
<td colspan="2" ><div class="col-sm-4"><select name="produksi"
id="produksi" class="form-control">
<option>- Pilih Produksi-</option>
<option value="Bertambah"
<?=(($o[produksi]=='Bertambah')?"selected":"")?>>Bertambah</option
>
<option value="Sedang"
<?=(($o[produksi]=='Sedang')?"selected":"")?>>Sedang</option>
<option value="Berkurang"
<?=(($o[produksi]=='Berkurang')?"selected":"")?>>Berkurang</option
>
</select> </div>
</td>
</tr>
<tr>
<td colspan="2"> </td>
<td colspan="2">
<button type="submit" class="btn btn-primary" onClick="rulen
doSubmit()">Simpan</button>
<button type="reset" class="btn btn-success"
onclick="window.location='index.php?page=rule'">Batal</button>
</td>
</tr>
<tr>
<td colspan="4"> </td>
</tr>
</table>
</form>
<?php
$result=$jp->sql("select * from rule ");
?>
<table id="example1" class="table table-bordered table-striped"
width="50%">
<thead>
<tr bgcolor="#FB404B">
<th width="106" align="center" valign="middle"><span
class="style5">No.</span></th>
<th width="169" valign="middle"><span
class="style5">Retur</span></th>
<th width="219" valign="middle"><span
class="style5">Penjualan</span></th>
<th width="148" valign="middle"><span class="style5">Produksi
</span></th>
<th width="146"> <span class="style5">Proses</span> </th>
</tr>
</thead>
<?php $n = 0;while($row = $jp->fetch($result)){ $n++;
if ($n%2==0)
{$c = "info";}
else
{$c = "danger";}
?>
<tr bgcolor="#FFFFFF" class="<?=$c?>">
<td width="106" align="center" valign="top"><span
class="style12"><?=$n?>.</span></td>
<td width="169" valign="top" align="center"><span
class="style12"><?=$row[retur]?></span></td>
<td width="219" valign="top" align="center"><span
class="style12"><?=$row[penjualan]?> </span> </td>
<td width="148" align="center" valign="top"><span
class="style12"> <?=$row[produksi]?> </span></td>
<td width="146" align="center" valign="top"><a
href="index.php?page=rule&idrule=<?=$row[idrule]?>"><img
src="images/edit.png" width="32" height="32" border="0"
title="Edit" /></a><a href="#" onclick="rulen
ConfirmDel('<?=$row[idrule]?>')"> <img src="images/del.png"
width="32" height="32" border="0" title="Hapus" /> </a></td>
</tr>
<?php } ?>
</table>
<script>
function doSubmit(){
var v = new Validator("Formrule");
v.addValidation("idrule","req","idrule tidak boleh kosong");
v.addValidation("nama","req","Nama rule tidak boleh
kosong");
}
</script>
</body>
</html>
5. Hasil.php <link href="assets/plugins/datatables/dataTables.bootstrap.css"
rel="stylesheet" type="text/css" />
<script src="assets/plugins/datatables/jquery.dataTables.min.js"
type="text/javascript"></script>
<script
src="assets/plugins/datatables/dataTables.bootstrap.min.js"
type="text/javascript"></script>
<!-- page script -->
<script type="text/javascript">
$(function () {
$("#example1").DataTable();
$('#example2').DataTable({
"paging": false,
"lengthChange": true,
"searching": false,
"ordering": true,
"info": true,
"autoWidth": true
});
});
</script>
<?php
$ab=$jp->sql("SELECT a.idbulan+1 AS bul,
a.idbulan,b.nmbulan FROM retur a INNER JOIN bulan b ON
a.idbulan+1=b.idbulan where idsnack='".$_REQUEST[idsnack]."' and
tahun='".$_REQUEST[tahun]."'" );
$snack=$jp->fetch($jp->sql("SELECT * from snack where
idsnack='".$_REQUEST[idsnack]."'"));
?>
<link href="flora.datepicker.css" rel="stylesheet"
type="text/css">
<link href="../css/style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style5 {color: #FFF; font-size: 12px; }
.style12 {font-family: Georgia, "Times New Roman", Times, serif;
font-size: 12px; }
.style13 {
color: #000000;
font-size: 24px;
font-weight: bold;
font-family: Tahoma, Arial;
}
-->
</style>
<h1> Perencanaan Produksi Snack <?=($snack[nmsnack])?> Tahun
<?=($_REQUEST[tahun])?></h1>
<table id="example2" class="table table-bordered table-striped"
width="50%">
<thead style="background:#FB404B; color:white; font-weight: bold;
text-align: center; font-family: 'Lucida Console', Monaco,
monospace; font-size: 14px;">
<tr bgcolor="#FB404B">
<th width="78" align="center" valign="middle"><span
class="style5">No.</span></th>
<th width="205" valign="middle"><span
class="style5">Bulan</span></th>
<th width="251" valign="middle"><span class="style5">Hasil
Perencanaan </span></th>
</tr>
</thead>
<?php $n = 0;$tot=0;while($row = $jp->fetch($ab)){ $n++;
if ($n%2==0)
{$c = "info";}
else
{$c = "danger";}
// $tot=$tot+pow($row[ransel]-$row[ranselprediksi],2);
$hasil=$jp->fetch($jp->sql("SELECT
SUM(nilai*hasil)/SUM(nilai)as prediksi FROM hasil WHERE
idbulan='".$row[idbulan]."'"));
?>
<tr class="<?=$c?>">
<td width="78" align="center" valign="top"><span
class="style12"><?=$n?>.</span></td>
<td width="205" valign="top" align="justify"><span
class="style12"><b><?=$row[nmbulan]?></b> </span></td>
<td width="251" align="right" valign="top"><span
class="style12"> <?=$jp->pt($hasil[prediksi])?> </span></td>
</tr>
<?php } ?>
</table>
6. Proses.php <?php
session_start();
include '../includes/lib.inc.php';
include APP_ROOT."/includes/class.inc.php";
include APP_ROOT."/includes/auth.inc.php";
include INCLUDES_DIR."/class.paging.php";
$jp = new jcore();
switch($_REQUEST[page]){
case "retur":
if ($_POST[total] <= 30)
{$turun =1;}
else if (($_POST[total] >= 30) && ($_POST[total] <= 50)
)
{$turun = (50-$_POST[total])/20; }
else if (($_POST[total] >= 50) )
{$turun = 0; }
if (($_POST[total] <= 30) || ($_POST[total] >= 100))
{$sedang =0;}
else if (($_POST[total] >=30) && ($_POST[total] <= 50)
)
{$sedang = ($_POST[total]-30)/20; }
else if (($_POST[total] >= 50) && ($_POST[total] <=
100) )
{$sedang = (100-$_POST[total])/50; }
if ($_POST[total] <= 50)
{$naik =0;}
else if (($_POST[total] >= 50) && ($_POST[total] <=
100) )
{$naik = ($_POST[total]-50)/50; }
else if (($_POST[total] >=100))
{$naik = 1; }
switch($_REQUEST[action]){
case "input":
$r = $jp->sql("select count(*) as j from retur WHERE
idsnack='".$_POST['idsnack']."' and
idbulan='".$_POST['idbulan']."' and tahun='".$_POST['tahun']."'
");
$o=$jp->fetch($r);
$kata = $_POST['id_edit'];
$jumlah = strlen($kata);
if(($o['j']>0) && ($jumlah<=0)){
$jp->alert('Data Retur Sudah Dimasukan...');
$jp->gotox("index.php?page=retur");
} else {
$q = "replace into retur set "
."
idretur='".$_POST[idretur]."',idsnack='".$_POST['idsnack']."',idbu
lan=\"".$_POST[idbulan]."\" "
."
,tahun=\"".$_POST[tahun]."\",total='".$_POST[total]."',totalturun=
'".$turun."',totalsedang='".$sedang."',totalnaik='".$naik."' ";
//echo $q;
$jp->sql($q);
$jp->alert('Data Retur\nTelah tersimpan...');
$jp->gotox("index.php?page=retur");
}
break;
case "delete":
$r = $jp->sql("delete from retur where
idretur=\"".$_REQUEST[idretur]."\"");
$jp->alert('Data Retur\nTelah dihapus...');
$jp->gotox("index.php?page=retur");
break;
default:
$jp->gotox("index.php?page=retur");
break;
}
break;
case "penjualan":
if ($_POST[total] <= 1000)
{$sedikit =1;}
else if (($_POST[total] >= 1000) && ($_POST[total] <=
2500) )
{$sedikit = (2500-$_POST[total])/1500; }
else if (($_POST[total] >= 2500) )
{$sedikit = 0; }
if (($_POST[total] <= 1000) || ($_POST[total] >=
5000))
{$sedang =0;}
else if (($_POST[total] >=1000) && ($_POST[total] <=
2500) )
{$sedang = ($_POST[total]-1000)/1500; }
else if (($_POST[total] >= 2500) && ($_POST[total] <=
5000) )
{$sedang = (5000-$_POST[total])/2500;}
if ($_POST[total] <= 2500)
{$banyak =0;}
else if (($_POST[total] >= 2500) && ($_POST[total] <=
5000) )
{$banyak = ($_POST[total]-2500)/2500; }
else if (($_POST[total] >=5000))
{$banyak = 1; }
switch($_REQUEST[action]){
case "input":
$r = $jp->sql("select count(*) as j from penjualan
WHERE idsnack='".$_POST['idsnack']."' and
idbulan='".$_POST['idbulan']."' and tahun='".$_POST['tahun']."'
");
$o=$jp->fetch($r);
$kata = $_POST['id_edit'];
$jumlah = strlen($kata);
if(($o['j']>0) && ($jumlah<=0)){
$jp->alert('Data Penjualan Sudah
Dimasukan...');
$jp->gotox("index.php?page=penjualan");
} else {
$q = "replace into penjualan set "
."
idpenjualan='".$_POST[idpenjualan]."',idsnack='".$_POST['idsnack']
."',idbulan=\"".$_POST[idbulan]."\" "
."
,tahun=\"".$_POST[tahun]."\",total='".$_POST[total]."',totalsediki
t='".$sedikit."',totalsedang='".$sedang."',totalbanyak='".$banyak.
"' ";
$jp->sql($q);
$jp->alert('Data Penjualan\nTelah
tersimpan...');
$jp->gotox("index.php?page=penjualan");
}
break;
case "delete":
$r = $jp->sql("delete from penjualan where
idpenjualan=\"".$_REQUEST[idpenjualan]."\"");
$jp->alert('Data Penjualan\nTelah dihapus...');
$jp->gotox("index.php?page=penjualan");
break;
default:
$jp->gotox("index.php?page=penjualan");
break;
}
break;
case "snack":
switch($_REQUEST[action]){
case "input":
$r = $jp->sql("select count(*) as j from snack WHERE
nmsnack='".$_POST['nmsnack']."' ");
$o=$jp->fetch($r);
$kata = $_POST['id_edit'];
$jumlah = strlen($kata);
if(($o['j']>0) && ($jumlah<=0)){
$jp->alert('Data Snack Sudah Dimasukan...');
$jp->gotox("index.php?page=snack");
} else {
$q = "replace into snack set "
."
idsnack='".$_POST[idsnack]."',nmsnack=\"".$_POST[nmsnack]."\" ";
$jp->sql($q);
$jp->alert('Data Snack\nTelah tersimpan...');
$jp->gotox("index.php?page=snack");
}
break;
case "delete":
$r = $jp->sql("delete from snack where
idsnack=\"".$_REQUEST[idsnack]."\"");
$jp->alert('Data Snack\nTelah dihapus...');
$jp->gotox("index.php?page=snack");
break;
default:
$jp->gotox("index.php?page=snack");
break;
}
break;
case "rule":
switch($_REQUEST[action]){
case "input":
$r = $jp->sql("select count(*) as j from rule WHERE
retur='".$_REQUEST['retur']."' and
penjualan='".$_REQUEST['penjualan']."' ");
$o=$jp->fetch($r);
$kata = $_POST['id_edit'];
$jumlah = strlen($kata);
if(($o['j']>0) && ($jumlah<=0)){
$jp->alert('Data Rule Sudah Dimasukan...');
$jp->gotox("index.php?page=rule");
}else {
$q = "replace into rule set "
."
retur='".$_POST[retur]."',penjualan=\"".$_POST[penjualan]."\""
." ,produksi=\"".$_POST[produksi]."\" ";
$jp->sql($q);
$jp->alert('Data Rule\nTelah tersimpan...');
$jp->gotox("index.php?page=rule");
}
break;
case "delete":
$r = $jp->sql("delete from rule where
idrule=\"".$_REQUEST[idrule]."\"");
$jp->alert('Data Rule\nTelah dihapus...');
$jp->gotox("index.php?page=rule");
break;
default:
$jp->gotox("index.php?page=rule");
break;
}
break;
case "admin":
switch($_REQUEST[action]){
case "input":
$kata = $_POST['id_edit'];
if($kata!=''){
$q="update tbuser set
namauser='".$_POST[user]."',passuser=md5('".$_POST[pass]."') where
iduser=".$kata."";
$jp->sql($q);
$jp->alert("Data telah diubah");
}else{
$q="insert into tbuser set
namauser='".$_POST[user]."',passuser=md5('".$_POST[pass]."')";
$jp->sql($q);
$jp->alert("Data tersimpan");
}
break;
case "delete":
$q = "delete from tbuser where
iduser=\"".$_REQUEST[iduser]."\"";
$jp->sql($q);
$jp->alert("Data Terhapus...");
break;
}
$jp->gotox("index.php?page=admin");
break;
}
?>
Top Related