IMPLEMENTASI ALGORITMA GENETIKA DENGAN TEKNIK KENDALI LOGIKA FUZZY UNTUK MENGATASI TRAVELLING SALESMAN PROBLEM MENGGUNAKAN MATLAB (Studi Kasus PT. Pos Indonesia DC Tugu Semarang)
skripsi disajikan sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains Program Studi Matematika
oleh Erma Nurul Fitriana 4111410012
JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI SEMARANG 2014
HALAMAN MOTTO DAN PERSEMBAHAN
MOTTO Barangsiapa merintis jalan mencari ilmu maka Allah akan memudahkan baginya jalan ke surga. (HR. Muslim). Bersungguh-sungguhlah engkau dalam menuntut ilmu, jauhilah kemalasan dan kebosanan karena jika tidak demikian engkau akan berada dalam bahaya kesesatan. (Imam Al Ghazali). Tiadanya keyakinanlah yang membuat orang takut menghadapi tantangan, dan saya percaya pada diri saya sendiri. (Muhammad Ali).
PERSEMBAHAN 1. Untuk Ibu Dwi Mardiyanti dan Bapak Sudirno yang selalu dan tiada henti mencurahkan kasih sayang, semangat, dukungan, dan segalanya untukku. 2. Untuk Yangti yang selalu menyelipkan namaku di setiap doanya. 3. Untuk
segenap
keluarga
besar
yang
telah
memberikan dukungannya. 4. Untuk Mas Saeful Bakhtiar yang selalu menjadi sumber semangat dan inspirasiku. 5. Untuk Umi Latifah, Zahrina Amalia Tamimi, Istatik Rohmana, dan semua sahabat-sahabatku di jurusan Matematika 2010 yang menemani perjuanganku. 6. Untuk sahabat-sahabatku ODOJ grup 1524 yang selalu menjadi pengingat ketika malas mendera.
iv
PRAKATA Puji syukur hadirat Allah SWT yang telah melimpahkan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan penulisan skripsi yang berjudul “Implementasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy untuk Mengatasi Travelling Salesman Problem Menggunakan MATLAB (Studi Kasus PT. Pos Indonesia DC Tugu Semarang)”. Penulisan skripsi ini sebagai syarat mutlak yang harus dipenuhi oleh penulis untuk memperoleh gelar sarjana sains di Universitas Negeri Semarang. Penulisan skripsi ini dapat terselesaikan karena adanya bimbingan, bantuan, dan dukungan dari berbagai pihak baik secara langsung maupun tidak langsung. Oleh karena itu, penulis mengucapkan terima kasih kepada: 1. Prof. Dr. Fathur Rokhman, M.Hum, Rektor Universitas Negeri Semarang. 2. Prof. Dr. Wiyanto, M.Si, Dekan FMIPA Universitas Negeri Semarang. 3. Drs. Arief Agoestanto, M.Si, Ketua Jurusan Matematika FMIPA Universitas Negeri Semarang. 4. Endang Sugiharti, S.Si., M.Kom. Pembimbing yang telah memberikan bimbingan, motivasi, waktu, dan pengarahan. 5. Ibu dan Bapak tercinta yang selalu memberikan doa serta memberikan dukungan baik secara moral maupun spiritual. 6. Segenap keluarga besar yang telah memberikan dukungannya. 7. Sahabat-sahabat yang telah memberikan banyak motivasi, kritik, usulan yang menjadikan terselesaikannya penulisan skripsi ini.
v
8. Mahasiswa matematika angkatan 2010 yang telah memberikan dorongan dan motivasi. 9. Semua pihak yang telah membantu terselesaikannya penulisan skripsi ini. Akhirnya penulis berharap semoga skripsi ini dapat bermanfaat bagi penulis pada khususnya dan pembaca pada umumnya.
Semarang,
Agustus 2014
Penulis
vi
ABSTRAK Fitriana, Erma Nurul. 2014. Implementasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy Untuk Mengatasi Travelling Salesman Problem menggunakan Matlab (Studi Kasus PT. Pos Indonesia DC Tugu Semarang). Skripsi, Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Negeri Semarang. Pembimbing: Endang Sugiharti, S.Si, M.Kom. Kata Kunci: Algoritma Genetika, Fuzzy Sugeno, MATLAB, Travelling Salesman Problem. Travelling Salesman Problem (TSP) adalah problem mencari rute optimal bagi seorang salesman yang berkeliling mengunjungi kota dengan setiap kota dikunjungi satu kali kecuali kota asal. Skripsi ini akan meneliti salah satu kasus TSP pada masalah pngirimin surat dan barang di PT. Pos Indonesia DC Tugu Semarang dengan tujuan 22 alamat penerima di wilayah Kecamatan Ngaliyan Kota Semarang. Pada penelitian ini, digunakan algoritma genetika dengan teknik kendali logika fuzzy dalam Matlab 7.8.0 (R2009a). Pengambilan data dilakukan dengan cara mendokumentasikan data dari PT. Pos Indonesia DC Tugu Semarang. Data yang diambil berupa alamat-alamat penerima surat dan barang di wilayah Kecamatan Ngaliyan Semarang, selanjutnya dilakukan pencarian koordinat masing-masing lokasi dengan bantuan situs wikimapia.org dan melakukan survey secara langsung pada beberapa sample alamat sehingga jarak antar lokasi dapat diketahui. Analisis data dilakukan menggunakan mekanisme algoritma genetika dengan teknik kendali logika fuzzy yang diaplikasikan dalam program MATLAB. Penentuan probilitas crossover ( , probabilitas mutasi ( , jumlah kromosom dalam 1 generasi, dan maksimum generasi memberikan pengaruh yang signifikan terhadap solusi optimal yang bisa didapatkan. Dari hasil analisis algoritma genetika dengan teknik kendali logika fuzzy diperoleh hasil bahwa solusi optimal menggunakan masukkan populasi 100 dan generasi 1000 lebih baik dari solusi optimal yang didapatkan dengan masukkan populasi dan generasinya berturut-turut adalah (100 dan 100), (100 dan 200), (100 dan 500), (200 dan 100), (500 dan 100) dan (1000 dan 100). Kemudian didapatkan rute terbaiknya adalah 1-3-4-6-9-8-7-19-18-16-17-20-21-22-15-12-1110-14-13-5-2-1 dan panjang jalur terbaiknya adalah 22,63 Km dengan memasukkan populasi 100 dan generasi 1000. Dari hasil analisis, diharapkan PT Pos Indonesia DC Tugu Semarang dapat menerapkan metode perhitungan rute optimal dengan algoritma genetika dengan teknik kendali logika fuzzy pada MATLAB agar dapat mengetahui jalur terpendek pendistribusian surat dan jasa sehingga dapat menekan biaya transportasi, dan mengaplikasikannya dalam bentuk GUI agar mempermudah user dalam program tersebut.
vii
DAFTAR ISI Halaman PRAKATA………………………………………………………….……….....
v
ABSTRAK……………………………………………………………………... vii DAFTAR ISI…………………………………………………………………...
viii
DAFTAR GAMBAR…………………………………………………………... xiii DAFTAR TABEL……………………………………………………………...
xv
DAFTAR LAMPIRAN………………………………………………………...
xvi
BAB 1 PENDAHULUAN…………………...………………………………… 1 1.1 Latar Belakang……………………………………………………….
1
1.2 Perumusan Masalah………………………………………………….
2
1.3 Pembatasan Masalah…………………………………………………
3
1.4 Tujuan dan Manfaat Penelitian……...……………………………….
3
1.5 Manfaat Penelitian........……………………………………….….…..
4
1.6 Sistematika Penulisan………………………………………………... 4 1.6.1 Bagian Awal…………………………………………………... 4 1.6.2 Bagian Isi……………………………………………………...
4
1.6.3 Bagian Akhir…………………………………………………..
6
BAB 2 LANDASAN TEORI……………………………………………….….
7
2.1 Teori Graf………………..………………………………………....... 7 2.1.1 Definisi Graf………………..…………………………………... 7 2.1.2 Jenis-jenis Graf………………….…….…….…….…….…….... 8 2.1.3 Jalan (Walk)………………..……….…….…….……….…….... 9
viii
2.1.4 Jejak (Trail)………………….…….…….…….…….…….…....
10
2.1.5 Lintasan (Path)………………..………...…...…...…...…...…...
10
2.1.6 Sirkuit………………………………………………………..….
11
2.1.7 Graf Euler dan Graf Semi-Euler……………………………….
12
2.1.8 Lintasan dan Sirkuit Hamilton………………………………….
13
2.1.9 Graf Terhubung (Connected Graph)………………………….... 13 2.1.10 Graf Berbobot…………………………………………………. 14 2.1.11 Lintasan Terpendek…………………………………………....
15
2.2 Sekilas Tentang MATLAB…………………………………………..
16
2.2.1 Sejarah Travelling Salesman Problem…………………..……...
18
2.2.2 Contoh Perkembangan Masalah yang Muncul……….....……… 18 2.3 Algoritma Genetika…………………………………………………..
19
2.4 Fuzzy…………………………………………..……………………..
32
2.4.1 Logika Fuzzy…………………………………………………...
32
2.4.2 Himpunan Fuzzy…………………………………………..……
33
2.4.3 Fungsi Keanggotaan Fuzzy……..………………………………
36
2.4.4 Sistem Inferensi Fuzzy………………………………………....
40
2.4.4.1 Metode Sugeno…………………………..……………..
40
2.4.5 Kendali Logika Fuzzy……………………………………….....
42
2.4.6 IF-THEN Rule………………………………………………….. 43 2.5 Hubungan antara Algoritma Genetika dengan Kendali Logika Fuzzy………………………………...……………………………….......
44
2.6 Sekilas tentang MATLAB……………………………………...……
45
ix
2.6.1 Beberapa Bagian dari Window MATLAB………………….…..
46
2.6.2 Meminta Bantuan…………………………………………….....
47
2.6.3 Interupting dan Terminating dalam MATLAB……………....
47
2.6.4 Variabel pada MATLAB……………………………….......….. 47 2.7 Pembuatan Aplikasi Berbasis GUI………………………………….
48
2.7.1 Pendahuluan…………………………………………………..
48
2.7.2 GUI……………………………………………………………..
48
2.7.3 M-File Editor……………………………………………………
49
BAB 3 METODE PENELITIAN...................................……………………….
50
3.1 Menemukan masalah ………………………………………………...
50
3.2 Merumuskan Masalah………………………………..……………….
50
3.3 Pengambilan Data ……………………………………………...…….
50
3.4 Analisis dan Pemecahan Masalah……………....…………………….
53
3.4.1 Aplikasi Kebutuhan……………………………..………….….
54
3.4.1.1Analisis Kebutuhan Masukan (Input)………..……...….
54
3.4.1.2 Analisis Kebutuhan Proses….….….….….….…....…....
55
3.4.1.3 Analisis Kebutuhan Keluaran (Output) .…..…..….…....
55
3.4.2 Perancangan Perangkat Lunak….….….…..….….….…………
56
3.5 Penarikan Kesimpulan………………………………………………..
59
BAB 4 HASIL PENELITIAN DAN PEMBAHASAN…..……………………. 60 4.1 Hasil Penelitian………………………………………………………
60
4.1.1 Pengkodean Kromosom…………………………….………….
61
4.1.2 Inisialisasi Populasi…………………………………….……… 62
x
4.1.3 Evaluasi Individu………………………………………………
63
4.1.4 Roulette Wheel Selection……………………………………… 64 4.1.5 Update Probabilitas Crossover dan Probabilitas Mutasi………
65
4.1.6 Implementasi Program……………………………….………...
66
4.1.7 Hasil Simulasi Program………………………………….…….
69
4.1.7.1 Perhitungan menggunakan masukan populasi 100 dan generasi 100……………………………………………….…..
69
4.1.7.2 Perhitungan menggunakan masukan populasi 100 dan generasi 200……………………………………………….…..
75
4.1.7.3 Perhitungan menggunakan masukan populasi 100 dan generasi 500……………………………………………….…..
78
4.1.7.4 Perhitungan menggunakan masukan populasi 100 dan generasi 1000……………………………………………….…..
80
4.1.7.5 Perhitungan menggunakan masukan populasi 200 dan generasi 100……………………………………………….…..
85
4.1.7.6 Perhitungan menggunakan masukan populasi 500 dan generasi 100……………………………………………….…..
84
4.1.7.7 Perhitungan menggunakan masukan populasi 1000 dan generasi 100……………………………………………….…..
86
4.1.8 Analisis Penyelesaian Travelling Salesman Problem Menggunakan Aplikasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy dalam Pengiriman Surat dan Barang di PT. Pos Indonesia DC Tugu ……………………………………………………………………………
xi
88
4.2 Pembahasan…………………………………………………………
91
BAB 5 PENUTUP………………………………………………...…………....
94
5.1 Simpulan……………………………………………………………..
94
5.2 Saran…………………………………………………………………. 95 DAFTAR PUSTAKA………………………………………………………….. 96
xii
DAFTAR GAMBAR Gambar
Halaman
2.1
Gambar Contoh Graf G………..…….…….……..…………………...
2.2
Gambar Graf berdasarkan orientasi arah (a) graf berarah dan (b) graf
8
tak berarah………………..……..……..……..……..……..……..…...
9
2.3
Gambar Jalan pada Graf G……………..……..……………………….
10
2.4
Gambar Jejak pada Graf G…...………..……..……..……..…….…….
10
2.5
Gambar Lintasan pada Graf G……….……..……..………………….
11
2.6
Gambar Sirkuit pada Graf G……….………..…………..……………
12
2.7
Gambar Eulerian pada Graf G……….…………………………..……
12
2.8
Gambar Hamiltonian pada Graf G……………….....…………………
13
2.9
Gambar (a) Graf Terhubung, (b) Graf tak terhubung…………………
14
2.10
Gambar Contoh Graf Berbobot ……….…………………………….
15
2.11
Gambar Ilustrasi Seleksi dengan Mesin Roulette……………………
24
2.12
Gambar Contoh gen sebelum dan sesudah mutasi dengan pengkodean pohon……………………………………………………
31
2.13
Gambar Himpunan fuzzy untuk variabel umur…………………….…
34
2.14
Gambar Himpunan fuzzy pada variabel temperatur………………..…
35
2.15
Grafik liner naik…………...………………………………………….
37
2.16
Grafik linear turun...………………………… ……………………….
37
2.17
Grafik Representasi fungsi segitiga...…………………………….…...
38
2.18
Grafik Keanggotaan bilangan fuzzy A...………………………..…….
39
2.19
Grafik Bilangan Fuzzy L-R...………………………..………….…….
40
2.20
Diagram fuzzy sugeno...…………………..………………….……….
42
2.21
42
3.1
Diagram Konsep umum kronologi proses...…….……………………. xiii Gambar Halaman depan wikimapia...……… …………………….......
3.2
Gambar Hasil pencarian tempat...………………… ………………….
52
3.3
Menu Login wikimapia…………………………………………………
52
3.4
Gambar Hasil pengukuran jarak…………………………………...…
53
4.1
Gambar Posisi 22 Alamat dalam Grafik………………….…………..
61
4.2
Gambar Sintak inisialisasi populasi...…………………………………
62
4.3
Gambar Sintak evaluasi individu……………….……………………..
63
4.4
Gambar Sintak Roulette Wheel Selection……………………………..
64
4.5
Tampilan Fuzzy sugeno...……………………………….……...……..
65
4.6
Tampilan TSP...…………………………………………..…………...
67
4.7
Tampilan Hasil Uji...………………………………………....………..
68
4.8
Tampilan Tampilan Koordinat Kota atau Alamat Dituju...…………...
69
4.9
Tampilan TSP Setelah Memasukan Koordinat Kota, Populasi, dan
51
Generasi ………………………………………………………..……..
70
4.10
Gambar Hasil pencarian mutasi dan probabilitas crossover....….……
71
4.11
Tampilan TSP setelah dijalankan…………………….………………..
72
4.12
Tampilan grafik rute koordinat alamat tujuan…………………………
72
4.13
Tampilan Hasil uji pada populasi 100 dan generasi 100……………...
73
4.14
Tampilan Data yang telah disimpan pada excel……………………….
73
4.15
Proses Perhitungan dengan panjang jalur terbaik 22,63………………
90
DAFTAR TABEL Tabel 4.1
xiv
Halaman
Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi
74
100….……………………………………………………………….... 4.2
Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi 200….………………………………………………………………....
4.3
Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi 500….………………………………………………………………....
4.4
82
Tabel Hasil Perhitungan mengunakan Populasi 500 dan Generasi 100….………………………………………………………………....
4.7
80
Tabel Hasil Perhitungan mengunakan Populasi 200 dan Generasi 100….………………………………………………………………..
4.6
78
Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi 1000….………………………………………………………………..
4.5
76
84
Tabel Hasil Perhitungan mengunakan Populasi 1000 dan Generasi 100….………………………………………………………………....
86
4.8
Tabel Hasil Panjang Jalur Terbaik….……………………………...…
88
4.9
Tabel Hasil Mutasi dan Probabilitas Crossover….…………………...
90
DAFTAR LAMPIRAN xv
Lampiran 1
Nama, Alamat, dan Kode Lokasi Penerimaan Surat dan Barang dari PT Pos Indonesia DC Tugu Semarang…………………….
Lampiran 2
99
Kode Lokasi, Koordinat X, Koordinat Y pada Alamat Penerima Surat dan Barang dari PT Pos Indonesia DC Tugu Semarang ………………...……………………………………
100
Lampiran 3
Jarak Antartitik Koordinat ………………...…………………..
101
Lampiran 4
Tampilan Simulasi Matlab ………………………...……….….
103
Lampiran 5
Kode Program………………...……………………..…………
105
Lampiran 6
Tampilan dan Hasil Uji (Excel) dengan Pengujian 10 kali …....
124
Lampiran 7
Tampilan Graf Rute Terbaik Pengiriman Surat Dan Barang PT. Pos Indonesia DC Tugu…...………………................................
130
Lampiran 8
Tabel Populasi Awal…...………...…………........…………..…
147
Lampiran 9
Nilai Fitness dalam Suatu Populasi…...……………………..…
151
Lampiran 10 Probabilitas Fitness dan Nilai Kumulatifnya…………………...
153
Lampiran 11 Hasil Seleksi Roulette Wheel…………………………………..
155
Lampiran 12 Semesta Pembicaraan, Domain, Fungsi Keanggotaan dan Aturan Fuzzy…………………………………………………..
159
Halaman
xvi
BAB 1 PENDAHULUAN 1.1 Latar Belakang Proses pendistribusian surat dan barang adalah kegiatan yang tidak pernah lepas dari kehidupan. Jarak yang jauh serta penyebaran masyarakat yang meluas menjadi salah satu alasan bagi masyarakat untuk menggunakan jasa pengiriman barang daripada mengantar sendiri barang yang akan dikirimkan. Permasalahan pendistribusian barang menjadi poin penting bagi perusahaan penyedia jasa pengiriman barang maupun surat. Hal ini sangat memerlukan pertimbangan dan perhitungan yang tepat karena berkaitan dengan biaya transportasi yang harus dikeluarkan dalam proses pendistribusian. PT. Pos Indonesia merupakan salah satu perusahaan yang bergerak dalam bidang pengiriman barang maupun surat di Indonesia. PT. Pos Indonesia sendiri memiliki cabang di setiap kota di seluruh Indonesia. Dalam mengirimkan barang maupun surat dari pusat ke pelanggan di berbagai tempat dan di banyak kota, perlu adanya suatu sistem yang mampu meminimalisasi biaya pengiriman dan sehingga akan didapatkan keuntungan yang paling maksimal. Permasalahan seperti ini merupakan masalah model jaringan yang sama dengan permasalahan pada pedagang kaki lima atau biasa disebut Travelling Salesman Problem (TSP). TSP merupakan salah satu masalah optimalisasi. TSP adalah suatu permasalahan untuk menemukan siklus Hamilton yang memiliki total bobot sisi minimum. TSP bertujuan mencari rute dari kota asal ke kota-kota yang dituju
1
2
dengan syarat setiap kota hanya dapat dikunjungi satu kali kecuali kota awal. Banyak algoritma yang diterapkan pada permasalahan TSP di antaranya adalah nearest neighbor heuristic, cheapest insertion heuristic, two way exchange improvement heuristic, nearest insertion heuristic, ant colony optimation, dan branch and bound method. Terdapat algoritma lain yang dapat digambarkan sebagai metode untuk menemukan solusi dari suatu permasalahan TSP, yaitu Algoritma Genetika serta mengkombinasikannya pada teknik kendali Logika Fuzzy dengan harapan memperoleh rute dengan kualitas terbaik dari Algoritma Genetika. Pada prinsipnya, teknik kendali Logika Fuzzy digunakan untuk mengontrol nilai paramater Algoritma Genetika pada suatu generasi secara otomatis (automatic fine-tuning) berdasarkan informasi yang diperoleh dari populasi sebelumnya. Selain dengan menggunakan penyelesaian secara manual, seiring dengan keberhasilan
perkembangan
dan
penerapan
teknologi,
masalah-masalah
optimalisasi dapat diselesaikan secara lebih cepat dan mudah. Perhitungan yang begitu rumit jika diselesaikan secara manual, sekarang dapat diselesaikan dalam waktu yang relatif lebih singkat. Terdapat beberapa software komputer yang memungkinkan permasalahan-permasalahan optimalisasi terselesaikan secara lebih mudah dan lebih cepat. Beberapa program tersebut antara lain adalah software Lindo, MATLAB, QM for Windows, SkyNet, Solver, dan WinQSB. Dari latar belakang yang telah disebutkan di atas, dalam skripsi ini penulis ingin mencoba menyelesaikan permasalahan jaringan TSP yang terdapat pada suatu perusahaan. Selain menggunakan penyelesaian manual dengan algoritma
3
genetika, penulis juga akan menyelesaikan masalah optimalisasi ini dengan suatu software komputer yaitu MATLAB. Dengan dipilihnya penyelesaian jaringan TSP melalui Algoritma Genetika dengan teknik kendali Logika Fuzzy menggunakan MATLAB, diharapkan akan diperoleh solusi permasalahan jaringan TSP paling optimal sehingga dapat meminimalkan pengeluaran perusahaan melalui jarak yang paling minimal.
1.2 Perumusan Masalah Permasalahan yang akan dikaji dalam penelitian ini adalah sebagai berikut. 1. Bagaimana hasil pencarian jarak minimum dari jaringan TSP dalam pengiriman surat dan barang di PT. Pos Indonesia DC Tugu Semarang menggunakan Algoritma Genetika dengan teknik kendali Logika Fuzzy dalam aplikasinya pada MATLAB? 2. Bagaimana rute jaringan TSP yang mempunyai jarak minimum dalam pengiriman surat dan barang dengan menggunakan Algoritma Genetika dengan teknik kendali Logika Fuzzy di PT. Pos Indonesia DC Tugu Semarang? 1.3 Pembatasan Masalah Dalam penyusunan skripsi ini, penulis membahas tentang penentuan jarak minimum dan rute optimal dari jaringan TSP pada pengiriman barang maupun surat di PT. Pos Indonesia DC Tugu Semarang menggunakan Algoritma Genetika dengan teknik Kendali Logika Fuzzy. Permasalahan diasumsikan sebagai sebuah
4
TSP simetris, di mana jarak dari kota 1 ke kota 2 sama dengan jarak dari kota 2 ke kota 1. Software yang digunakan dalam penelitian ini adalah MATLAB.
1.4 Tujuan Penelitian Adapun tujuan yang diharapkan pada penelitian ini adalah sebagai berikut. 1. Menentukan rute optimal jaringan TSP yang mempunyai jarak minimum dalam pengiriman surat dan barang dengan menggunakan Algoritma Genetika dengan teknik kendali Logika Fuzzy di PT. Pos Indonesia DC Tugu Semarang dalam aplikasinya pada MATLAB. 2. Menentukan hasil pencarian jarak minimum dari jaringan TSP dalam pengiriman surat dan barang di PT. Pos Indonesia DC Tugu Semarang menggunakan Algoritma Genetika dengan teknik kendali Logika Fuzzy.
1.5 Manfaat Penelitian Adapun manfaat yang diharapkan pada penelitian ini adalah sebagai berikut. 1. Dapat menambah wawasan dan pengetahuan tentang pendistribusian dan transportasi suatu jaringan. 2. Dapat menerapkan Algoritma Genetika dengan teknik kenali Logika Fuzzy dalam menyelesaikan TSP. 3. Dapat menerapkan software Matlab dalam penyelesaian jaringan distribusi surat dan barang.
5
1.6 Sistematika Penulisan Sistematika berguna untuk memudahkan dalam memahami jalan pemikiran skripsi secara keseluruhan. Penulisan skripsi ini secara garis besar dibagi menjadi 3 bagian yaitu sebagai berikut. 1.6.1 Bagian Awal Bagian ini berisikan halaman judul, abstrak, halaman pengesahan, halaman motto dan persembahan, kata pengantar, daftar isi, daftar tabel, daftar gambar dan daftar lampiran. 1.6.2 Bagian Isi Bagian ini berisikan 5 bab, yaitu: BAB I. PENDAHULUAN Berisi gambaran secara global tentang isi skripsi yaitu latar belakang masalah, rumusan pemasalahan, pembatasan masalah, tujuan penelitian dan manfaat penelitian serta sistematika penulisan. BAB II. LANDASAN TEORI Landasan teori akan menguraikan tentang definisi maupun pemikiran-pemikiran yang dijadikan kerangka teoritis dalam mendasari pemecahan dari permasalahan pada penelitian ini yaitu masalah rute optimal dan jarak minimal dari jaringan TSP dalam pengiriman surat dan barang di PT. Pos Indonesia DC Tugu Semarang yang akan diselesaikan dengan algoritma Genetika dengan teknik kendali Logika Fuzzy menggunakan software Matlab. Bagian ini dibagi menjadi beberapa sub bab yaitu Teori Graf, Travelling Salesman Problem (TSP), Algoritma Genetika, Logika Fuzzy Hubungan antara Algoritma Genetika dengan kendali logika fuzzy.
6
BAB III. METODE PENELITIAN Bab ini menguraikan langkah-langkah kerja yang akan ditempuh, meliputi menemukan masalah, pengambilan data, analisis dan pemecahan masalah, serta penarikan simpulan. BAB IV. HASIL PENELITIAN DAN PEMBAHASAN Bab ini berisi pembahasan dari permasalahan yang dikemukakan. Bab ini dibagi menjadi dua sub bab, yaitu hasil penelitian dan pembahasan. Hasil penelitian berisi hasil perhitungan dan analisis data yang diperoleh dari studi pustaka maupun pemecahan kasus penentuan rute dan jarak minimum dari jaringan TSP pada pengiriman surat dan barang di PT. Pos Indonsia DC Tugu Semarang menggunakan Algoritma Genetika dengan teknik kendali Logika Fuzzy dalam aplikasinya di MATLAB. BAB V. PENUTUP Bab ini dibagi menjadi dua sub bab, yaitu simpulan dan saran. Simpulan berisi tentang garis besar isi dalam skripsi, sedangkan saran berupa komentar, sanggahan yang bersifat menyarankan kepada perusahaan bergantung dengan variabel yang ada dalam skripsi. 1.6.3 Bagian Akhir Bagian ini berisi daftar pustaka sebagai acuan penulisan dan lampiran yang mendukung kelengkapan skripsi.
BAB 2 LANDASAN TEORI
2.1 Teori Graf 2.1.1 Definisi Graf Sebuah graf kosong
berisikan dua himpunan yaitu himpunan berhingga tak
dari objek-objek yang disebut titik dan himpunan berhingga
(mungkin kosong) setiap elemen
yang elemen-elemennya disebut sisi sedemikian hingga
dalam
merupakan pasangan tak berurutan dari titik-titik di
Himpunan
disebut himpunan titik
himpunan sisi
. Misalkan
ditulis
adalah sebuah sisi
(adjacent) di
; sisi
dan
dan himpunan
adalah dua titik di . Titik
titik-titik akhir sisi ; sisi
dan
dan titik
menghubungkan (joining) titik
disebut (sering
berhubungan langsung dan titik
terkait (incident) dengan titik
dan titik
di
;
dan
(Budayasa,
2007: 1-2) Definisi di atas menyatakan bahwa
tidak boleh kosong, sedangkan
boleh kosong. Jadi, sebuah graf dimungkinkan tidak mempunyai sisi satu buah pun, tetapi titiknya harus ada, minimal satu. Graf yang hanya mempunyai satu buah titik tanpa sebuah sisi pun dinamakan graf trivial (Munir, 2010: 356)
7
8
Contoh 2.1: Sebuah
graf
dengan .
dan
;
;
;
;
; v1
e4
e1
v3
e5
e3 e6
v2
e2
v4
Gambar 2.1 Contoh Graf G 2.1.2 Jenis-jenis Graf Berdasarkan orientasi arah pada sisi, graf dibedakan atas dua jenis: (a)
Graf Berarah (Directed Graph atau Digraph)
Graf berarah adalah graf yang setiap sisinya mempunyai orientasi arah. Sisi beararah disebut dengan sebutan busur (arc). Pada Graf berarah,
dan
menyatakan dua buah busur yang berbeda, dengan kata lain Untuk busur
, titik
.
dinamakan titik awal (initial vertex) dan titik
dinamakan titik terminal (terminal vertex) (Munir, 2010: 358). (b)
Graf Tak-Berarah (Undirected Graph atau Undigraph)
Graf tak-berarah adalah graf yang sisinya tidak mempunyai orientasi arah. Pada graf tak berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. jadi
adalah sisi yang sama (Munir, 2010: 358).
9
v1
v3
v1 v1
e4
v3 v3
e1
v2
e5
v2 v2
v4
v4 v4
e2
(a)
e3
(b)
Gambar 2.2 Graf berdasarkan orientasi arah (a) graf berarah dan (b) graf tak berarah
2.1.3 Jalan (Walk) Misalkan
adalah sebuah graf. Sebuah jalan (walk) di
barisan berhingga (tak kosong)
yang suku-
sukunya bergantian sedemikian hingga untuk
. Dikatakan
jalan-
. Titik
dan titik
. Sedangkan titik-titik panjang jalan dari
adalah sebuah
dan
adalah titik-titik akhir sisi
adalah sebuah jalan dari titik
ke titik
, atau
berturut-turut disebut titik awal dan titik akhir disebut titik internal
; dan
disebut
dengan panjang positif disebut tertutup, jika titik awal dan akhir
identik (sama) (Budayasa, 2007: 6)
10
v1
v5
e2
e4
v2
e1
e3
e5
e7
e6 v3
v4
Gambar 2.3 Jalan pada graf
misalnya
2.1.4 Jejak (Trail) Sebuah titik
, mungkin saja muncul lebih dari satu kali dalam
jalan
, begitu juga dengan sebuah sisi , boleh muncul lebih dari satu kali pada
jalan
. Jika semua
dalam jalan
berbeda, maka
disebut
sebuah jejak (trail) (Budayasa, 2007: 6). v1
e2
e4
v2
e1
e6
v5
e3
e7
v3 Gambar 2.4 Jejak pada Graf
e5
v4 misalnya
2.1.5 Lintasan (Path) Jika semua titik
dalam jejak
berbeda, maka
disebut
lintasan (path) (Budayasa, 2007: 6). Dalam penulisan skripsi ini lintasan diartikan sama dengan rute sehingga dapat dituliskan bergantian. Lintasan adalah jejak,
11
akan tetapi tidak semua jejak adalah lintasan. Panjang lintasan pada sebuah graf berbobot adalah jumlah bobot semua sisi pada lintasan tersebut. Pada Gambar 2.5 jalan
adalah jejak tetapi
bukan lintasan, sedangkan
adalah lintasan.
v1
e4
v2
e1
e2
v5
e6 v3 Gambar 2.5 Lintasan pada graf
e3
e5
e7 v4 misalnya
2.1.6 Sirkuit Jejak yang berawal dan berakhir pada titik yang sama disebut sirkuit (Budayasa, 2007: 6). Sebuah sirkuit dikatakan sirkuit sederhana (simple circuit) jika sirkuit tersebut tidak memuat atau melewati sisi yang sama dua kali (setiap sisi yang dilalui hanya satu kali). Sebuah sirkuit dikatakan sirkuit dasar (elementary circuit) jika sirkuit tersebut tidak memuat atau melewati titik yang sama dua kali (setiap titik yang dilalui hanya satu kali, titik awal dan akhir boleh sama).
12 v1
v2
e1
e2
e4
v5
e3
e5
e7
e6 v3
v4
Gambar 2.6 Sirkuit pada graf
misalnya
.
2.1.7 Graf Euler dan Graf Semi-Euler Sebuah sirkuit di graf Jika graf
yang memuat semua sisi
memuat sirkuit Euler, maka graf
disebut sirkuit Euler.
disebut graf Euler. Sebuah jejak
buka yang memuat semua sisi graf disebut jejak Euler. Graf Euler jika
disebut graf semi-
memuat jejak Euler (Budayasa, 2007: 113) 2
1
3
3
1
2
4
5
6
(a)
7 (b)
Gambar 2.7 Eulerian pada graf Keterangan gambar: (a) Graf
memiliki Jejak Euler misal
(b) Graf
memiliki Sirkuit Euler misalnya
4
.
13
2.1.8 Lintasan dan Sirkuit Hamilton Misalkan
sebuah graf. Sebuah lintasan
yang memuat semua titik di
disebut lintasan Hamilton. Graf non Hamilton yang memuat lintasan Hamilton disebut graf semi-Hamilton (Budayasa, 2007: 130). Sirkuit Hamilton adalah sirkuit yang melalui tiap titik di dalam graf tepat satu kali, kecuali titik asal (sekaligus titik akhir) yang dilalui dua kali. Graf Hamilton adalah graf yang memiliki sirkuit Hamilton (Munir, 2001: 232). 2 1
1
4
3 (a)
1
2
2
3
4
3
4 (b)
(c)
Gambar 2.8 Hamiltonian pada graf Keterangan gambar: (a) Graf
memiliki lintasan Hamilton misalnya
(b) Graf
memiliki sirkuit Hamilton misalnya
(c) Graf
tidak memiliki lintasan maupun sirkuit Hamilton
2.1.9 Graf Terhubung (Connected Graph) Suatu graf
dikatakan terhubung (connected) jika untuk setiap dua titik
yang berbeda terdapat sebuah lintasan yang menghubungkan kedua titik tersebut.
14
Sebaliknya graf dari
adalah sebuah graf bagian terhubung maksimal (titik dan sisi)
(Budayasa, 2007: 8). Graf
dari graf
dikatakan graf bagian terhubung maksimal
apabila tidak ada graf bagian lain dari
yang terhubung dan memuat
. Jadi setiap graf terhubung memiliki tepat satu komponen sedangkan graf tidak terhubung memiliki paling sedikit dua komponen.
Contoh 2.2 Diberikan graf seperti Gambar 2.9. v1
e4
v3
e1
v2
e4
e1
e5
e2
v1
v3
e5
e3
e3
v4
v2
v4
e2
(a)
(b)
Gambar 2.9 (a) Graf Terhubung, (b) Graf Tak Terhubung
2.1.10 Graf Berbobot Graf berbobot adalah graf yang setiap sisinya diberi sebuah harga (bobot). Bobot pada setiap sisi dapat menyatakan jarak dua buah kota, biaya perjalanan antara dua buah kota, waktu tempuh pesan dari simpul ke komunikasi lain, dan sebagainya (Munir, 2005: 357) Diberikan graf berbobot seperti pada Gambar 2.10
15
15 1 6
14
15 12
18
14
11
13
1 8 17
16 Gambar 2.10 Contoh Graf Berbobot Dari gambar 2.10, dapat dijelaskan bobot dari masing-masing sisi, yaitu:
2.1.11 Lintasan Terpendek (Shortest Path) Permasalahan mencari lintasan terpendek di dalam graf merupakan salah satu permasalahan optimasi. Graf yang digunakan dalam pencarian lintasan terpendekadalah graf berbobot (weighted graf) yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu pengiriman, ongkos pembangunan, dan sebagainya. Asumsi yang digunakan adalah semua bobot bernilai positif. Kata “terpendek” jangan selalu diartikan secara fisik sebagai panjang minimum, sebab kata “terpendek” berbeda-beda maknanya bergantung pada tipikal
persoalan
yang akan
16
diselesaikan. Namun secara umum “terpendek” berarti meminimisasi bobot pada suatu lintasan di dalam graf. (Munir, 2010: 412) Panjang lintasan dalam sebuah graf berbobot adalah jumlah bobot semua sisi pada lintasan tersebut. Misalkan
dan
dua titik di graf
. Lintasan-(
di dengan panjang minimum disebut lintasan terpendek antara dari
ke , dinotasikan dengan
panjanglintasan terpendek antara titik
atau dan titik
dan
. jarak
didefinisikan sebagai di . (Budayasa, 2007: 47)
Ada beberapa macam persoalan lintasan terpendek adalah sebagai berikut. 1. Lintasan terpendek antara dua buah titik tertentu. 2. Lintasan terpendek antara semua pasangan titik. 3. Lintasan terpendek dari simpul tertentu ke semua titik yang lain. 4. Lintasan terpendek antara dua buah titik yang melalui beberapa titik tertentu.
2.2 Travelling Salesman Problem (TSP) Persoalan TSP merupakan salah satu persoalan kombinatorial. Banyak permasalahan yang dapat direpresentasikan dalam bentuk TSP. Persoalan ini sendiri menggunakan representasi graf untuk memodelkan persoalan yang diwakili sehingga lebih memudahkan penyelesaiannya. Diantara permasalahan yang dapat direpresentasikan dengan TSP adalah masalah transportasi, efisiensi pengiriman surat atau barang, perancangan pemasangan pipa saluran, proses pembuatan Printed Cirtcuit Board (PCB), dan lain-lain. Persoalan yang muncul adalah bagaimana cara mengunjungi simpul (node) pada graf dari titik awal ke setiap titik-titik lainnya dengan bobot minimum (biaya paling murah). Bobot atau
17
biaya ini sendiri dapat mewakili berbagai hal, seperti biaya, jarak, bahan bakar, waktu, kenyamanan dan lain-lain (Zulfikar, 2008:3-4). Pada TSP, jumlah jalur yang mungkin terjadi dapat diperoleh dengan menggunakan rumus permutasi berikut ini: ………………………………………………..……..…………(2.1) di mana n adalah jumlah seluruh node dan k adalah jumlah node yang diseleksi. Terdapat dua jenis TSP, yaitu asimetris dan simetris. Pada TSP asimetris, biaya dari node 1 ke node 2 tidak sama dengan biaya dari node 2 ke node 1. Sedangkan pada TSP simetris, biaya dari node 1 ke node 2 sama dengan biaya dari node 2 ke node 1. Untuk TSP asimetris, jumlah jalur yang mungkin adalah permutasi dari jumlah node dibagi dengan jumlah node. Hal ini dapat dipahami karena secara siklus, sebuah jalur dengan urutan 1-2-3 adalah sama dengan jalur 2-3-1 dan 3-12. Tetapi jalur dengan urutan 1-2-3 tidak sama dengan 3-2-1. Jadi apabila terdapat 27 node, maka jalur yang mungkin untuk TSP asimetris adalah: …………………………………..…………(2.2) Sedangkan untuk TSP simetris, jumlah jalur yang mungkin adalah permutasi dari jumlah node dibagi dengan dua kali jumlah node. Hal ini dapat dipahami karena secara siklus sebuah jalur dengan urutan 1-2-3 adalah sama dengan jalur 2-3-1 dan 3-1-2. Karena biaya dari node 1 ke node 2 sama dengan biaya dari node 2 ke node 1, maka jalur dengan urutan 1-2-3 sama dengan jalur 32-1. Jadi apabila terdapat 27 node, maka jalur yang mungkin untuk TSP simetris adalah:
18
…………………………………..……….(2.3)
2.2.1
Sejarah Travelling Salesman Problem Permasalahan matematik yang berkaitan dengan Travelling Salesman
Problem mulai muncul sekitar tahun 1800-an. Masalah ini dikemukakan oleh dua orang matematikawan, yaitu Sir William Rowan Hamilton yang berasal dari Irlandia dan Thomas Penyngton Kirkman yang berasal dari Inggris. Diskusi mengenai awal studi dari persoalan TSP ini dapat ditemukan di buku Graph Theory 1736-1936 by N.L. Biggs, E.K. LLoyd, and R.J. Wilson, Clarendon Press, Oxford, 1976. Bentuk umum dari persoalan TSP pertama kali dipelajari oleh para matematikawan mulai tahun 1930 di Vienna dan Harvard. Persoalan tersebut kemudian dikembangkan oleh Hassler Whitney dan Merril Flood di Princeton. Penelitian secara mendetail hubungan antara Menger dan Whitney, dan perkembangan persoalan TSP sebagai sebuah topik studi dapat ditemukan pada tulisan Alexander Schriver “On the history of combinatorial optimization (till 1960)” (Zulfikar, 2008:4).
2.2.2
Contoh Perkembangan Masalah yang Muncul Kode program komputer yang dibuat untuk menyelesaikan persoalan TSP
telah berkembang semakin baik dari tahun ke tahun. Tanda yang paling mencolok dari perkembangan metode untuk menyelesaikan persoalan TSP adalah bertambahnya jumlah simpul (node) yang dapat diselesaikan, mulai dari solusi persoalan 49 kota yang dikembangkan oleh Dantzig, Fulkerson, dan Johnson's
19
pada tahun 1954 sampai kepada solusi persoalan 24.978 kota pada tahun 2004, data-data tersebut didapat dari National Imagery and Mapping Agency, sebuah database nasional yang menyimpan nama-nama fitur geografi (Zulfikar, 2008:56).
2.3 Algoritma Genetika Algoritma genetika adalah suatu algoritma pencarian yang berbasis pada mekanisme seleksi alam dan genetika. Algoritma genetika merupakan salah satu algoritma yang sangat tepat digunakan dalam menyelesaikan masalah optimasi kompleks, yang sulit dilakukan oleh metode konvensional. (Desiani, 2006: 187) Algoritma genetika pertama kali diperkenalkan oleh John Holland (1975) dari Universitas Michigan. John Holland mengatakan bahwa setiap masalah yang berbentuk adaptasi (alami maupun buatan) dapat diformulasikan ke dalam terminologi genetika. Goldberg mendefinisikan algoritma genetika ini sebagai suatu pencarian algoritma berdasarkan pada mekanisme seleksi alam dan genetika alam (Desiani, 2006:187). Beberapa definisi penting dalam algoritma genetika, yaitu: 1.
Genotip (Gen) adalah sebuah nilai yang menyatakan satuan dasar yang membentuk suatu arti tertentu dalam satu kesatuan gen yang dinamakan kromosom. Dalam algoritma genetika, gen ini bisa bernilai biner, float, integer maupun karakter.
2.
Allel adalah nilai dari gen.
3.
Kromosom adalah gabungan gen-gen yang membentuk nilai tertentu.
20
4.
Individu menyatakan satu nilai atau keadaan yang menyatakan salah satu solusi yang mungkin dari permasalahan yang diangkat.
5.
Populasi merupakan sekumpulan individu yang akan diproses bersama dalam satu siklus proses evolusi.
6.
Generasi menyatakan satu satuan siklus proses evolusi.
7.
Nilai fitness menyatakan seberapa baik nilai dari suatu individu atau solusi yang didapatkan.
Ciri-ciri permasalahan yang dikerjakan dengan menggunakan algoritma genetika adalah: 1.
Mempunyai fungsi tujuan optimalisasi non linear dengan banyak kendala yang juga non linear.
2.
Mempunyai kemungkinan solusi yang jumlahnya tak berhingga.
3.
Membutuhkan solusi “real-time” dalam arti solusi bisa didapatkan dengan cepat
sehingga
dapat
diimplementasikan
untuk
permasalahan
yang
mempunyai perubahan yang cepat seperti optimasi pada pembebanan kanal pada komunikasi seluler. 4.
Mempunyai multi-objektif dan multi-kriteria, sehingga diperlukan solusi yang dapat secara bijak diterima oleh semua pihak (Basuki, 2003:4).
Struktur umum algoritma genetika dapat didefinisikan dengan langkah-langkah sebagai berikut (Wibowo, 2009:13).
21
1.
Membangkitkan populasi awal
Populasi awal ini dibangkitkan secara random sehingga didapatkan solusi awal. Populasi itu sendiri terdiri dari sejumlah kromosom yang mempresentasikan solusi yang diinginkan. 2.
Membentuk generasi baru
Dalam membentuk generasi baru digunakan tiga operator yaitu operator reproduksi/seleksi, crossover dan mutasi. Proses ini dilakukan berulang-ulang hingga didapatkan jumlah kromosom yang cukup untuk membentuk generasi baru dimana generasi baru ini merupakan representasi dari solusi baru. 3.
Evaluasi solusi
Proses ini akan mengevalusi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampai terpenuhi kriteria berhenti. Bila kriteria berhenti belum terpenuhi maka akan dibentuk lagi generasi baru dengan mengulangi langkah 2. Beberapa kriteria berhenti yang sering digunakan antara lain: a.
Berhenti pada generasi tertentu.
b.
Berhenti setelah dalam beberapa generasi berturut-turut didapatkan nilai fitness tertinggi tidak berubah.
c.
Berhenti bila dalam n generasi berikut tidak didapatkan nilai fitness yang lebih tinggi.
Komponen-komponen utama algoritma genetika (Kusumadewi, 2003: 14).
22
1. Teknik pengkodean Pengkodean adalah suatu teknik untuk menyatakan populasi awal sebagai calon solusi suatu masalah ke dalam suatu kromosom sebagai suatu kunci pokok persoalan ketika menggunakan algoritma genetika. Teknik pengkodean ini meliputi pengkodean gen dan kromosom. Gen merupakan bagian dari kromosom. Satu gen bisa mewakili satu variabel. Gen dapat direpresentasikan dalam bentuk string bit, pohon, array bilangan real, daftar aturan, elemen permutasi, elemen program, atau representasi lainnya yang dapat diimplementasikan untuk operator genetika. 2. Prosedur inisialisasi Ukuran populasi tergantung pada masalah yang akan dipecahkan dan jenis operator genetika yang akan diimplementasikan. Setelah ukuran populasi ditentukan, kemudian harus dilakukan inisialisasi kromosom dilakukan secara acak, namun demikian harus tetap memperhatikan domain solusi dan kendala permasalahan yang ada. 3. Evaluasi fitness Evalusi fitness merupakan dasar untuk proses seleksi. Langkah-langkahnya yaitu string dikonversi ke parameter fungsi, fungsi objektifnya dievaluasi, kemudian mengubah fungsi objektif tersebut ke dalam fungsi fitness, dimana untuk maksimasi problem, fitness sama dengan fungsi objektifnya. Output dari fungsi fitness dipergunakan sebagai dasar untuk menyeleksi individu pada generasi berikutnya.
23
Untuk permasalahan minimalisasi, nilai fitness adalah inversi dari nilai maksimal yang diharapkan. Proses inversi dapat dilakukan dengan rumusan
,
dengan x merupakan kromosom (Basuki, 2003:17). atau Keterangan: A
: konstanta yang ditentukan
x
: individu (kromosom) : nilai fungsi kromosom : bilangan kecil yang ditentukan untuk menghindari pembagi nol atau
4. Seleksi Seleksi ini bertujuan memberikan kesempatan reproduksi yang lebih besar bagi anggota populasi yang paling baik. Ada beberapa metode seleksi dari induk, antara lain: a.
Rank-Based Fitness
Pada Rank-Based fitness, populasi diurutkan menurut nilai objektifnya. Nilai fitness tiap-tiap individu hanya tergantung pada posisi individu tersebut dalam urutan, dan tidak dipengaruhi oleh nilai objektifnya. b.
Roulette Wheel Selection
Metode seleksi dengan mesin roulette ini merupakan metode yang paling sederhana dan sering dikenal dengan nama stochastic sampling with replacement. Cara kerja metode ini adalah sebagai berikut.
24
1). Menghitung nilai fitness dari masing-masing individu (fi, dimana i adalah individu ke-1 sampai dengan ke-n). 2). Menghitung total fitness semua individu. 3). Menghitung probabilitas masing-masing individu. 4). Dari probabilitas tersebut dihitung jatah masing-masing individu pada angka 1 sampai 100. 5). Membangkitkan bilangan random antara 1 sampai 100. 6). Dari bilangan random yang dihasilkan, menentukan individu mana yang 7). terpilih dalam proses seleksi. Individu 1 : fitness = 10%
Jatah untuk individu 1 : 1-10
Individu 2 : fitness = 25%
Jatah untuk individu 2 : 11-35
Individu 3 : fitness = 40%
Jatah untuk individu 3 : 36-75
Individu 4 : fitness = 15%
Jatah untuk individu 4 : 76-90
Individu 5 : fitness = 10%
Jatah untuk individu 5 : 91-100
Dibangkitkan bilangan random antara Individu Terpilih Random 30 individu 2 Random 88
individu 4
Random 64
individu 3
Random 18
individu 2
Random 44
individu 3
1-100 sebanyak 5 kali
Gambar 2.11 Ilustrasi Seleksi dengan Mesin Roullete
25
c. Stochastic Universal Sampling Pada metode ini, individu-individu dipetakan dalam suatu segmen garis secara berurutan sedemikian hingga tiap-tiap segmen individu memiliki ukuran yang sama dengan ukuran fitness-nya seperti halnya pada seleksi roda roulette. Kemudian diberikan sejumlah pointer sebanyak individu yang ingin diseleksi pada garis tersebut. Andaikan N adalah jumlah individu yang akan diseleksi, maka jarak antar pointer adalah 1/N, dan posisi pointer pertama diberikan secara acak pada range [1, 1/N]. d.
Truncation Selection Seleksi ini biasanya digunakan oleh populasi yang jumlahnya sangat besar. Pada metode ini, individu-individu diurutan berdasarkan nilai fitness-nya. Hanya individu-individu yang terbaik saja yang akan diseleksi sebagai induk. Parameter yang digunakan dalam metode ini adalah suatu nilai ambang trunk yang mengindikasikan ukuran populasi yang akan diseleksi sebagai induk yang berkisar antara 50%-100%. Individu-individu yang ada di bawah nilai ambang ini tidak akan menghasilkan keturunan.
e.
Tournament Selection Pada metode seleksi dengan turnamen, ditetapkan suatu nilai tour untuk individu-individu yang dipilih scara acak dari suatu populasi. Individuindividu yang terbaik dalam kelompok ini akan diseleksi sebagai induk. Parameter yang digunakan pada metode ini adalah ukuran tour yang bernilai antara 2 sampai N (jumlah individu dalam suatu populasi).
5.
Crossover
8
26
Crossover (perkawinan silang) bertujuan menambah keanekaragaman string dalam suatu populasi. Beberapa jenis crossover tersebut adalah: a.
Crossover Diskret Proses crossover dilakukan dengan menukar nilai variabel antar kromosom induk. Misalkan ada 2 individu dengan 3 variabel, yaitu: Induk 1:
12
25
5
Induk 2:
123
4
34
Untuk tiap-tiap variabel induk yang menyumbangkan variabelnya ke anak dipilih secara acak dengan probabilitas yang sama. Sampel 1: 2
2
1
Sampel 2: 1
2
1
Kromosom baru yang terbentuk:
b.
Anak 1:
123
4
5
Anak 2:
12
4
5
Crossover Intermediate (menengah) Crossover menengah merupakan metode crossover yang hanya dapat digunakan untuk variabel real. Nilai variabel anak dipilih di sekitar dan antara nilai-nilai variabel induk. Anak dihasilkan menurut aturan sebagai berikut. Anak = induk 1 + alpha (induk 2 – induk 1) Dengan alpha adalah faktor skala yang dipilih secara random pada interval [d, 1+d], biasanya d = 0,25. Tiap-tiap variabel pada anak merupakan hasil crossover variabel-variabel menurut aturan di atas dengan nilai alpha dipilih ulang untuk tiap variabel.
27
Misalkan ada 2 individu dengan 3 variabel, yaitu: Induk 1:
12
25
5
Induk 2:
123
4
34
Misalkan nilai alpha yang terpilih adalah: Sampel 1: 0,5
1,1
-0,1
Sampel 2: 0,1
0,8
0,5
Kromosom baru yang terbentuk
c.
Anak 1:
67,5
1,9
2,1
Anak 2:
23,1
8,2
19,5
Crossover Garis Pada dasarnya crossover garis ini sama dengan crossover menengah, hanya saja nilai alpha untuk semua variabel sama. Misalkan ada 2 individu dengan 3 variabel, yaitu: Induk 1:
12
25
5
Induk 2:
123
4
34
Alpha yang dipilih adalah: Sampel 1:
0,5
Sampel 2:
0,1
Kromosom baru yang terbentuk :
d.
Anak 1:
67,5
14,5
19,5
Anak 2:
23,1
22,9
7,9
Crossover dengan Permutasi
28
Pada penyilangan permutasi ini kromosom-kromosom anak diperoleh dengan cara memilih sub barisan tour dari satu induk dengan tetap menjaga urutan dan posisi sejumlah gen yang mungkin terhadap induk yang lainnya. Contoh crossover dengan permutasi: Misal Induk 1: (1 2 3 | 4 5 6 7 | 8 9) Induk 2: (4 5 3 | 1 8 7 6 | 9 2) Anak 1:
(x x x | 1 8 7 6 | x x)
Anak 2:
(x x x | 4 5 6 7 | x x)
Dari sini kita memperoleh pemetaan: 1-4, 8-5, 7-6, 6-7 Kemudian copy sisa gen di induk 1 ke anak 1 dengan menggunakan pemetaan yang sudah ada. Anak 1: (1-4 2 3 | 1 8 7 6 | 8-5 9) Anak 1: (4 2 3 | 1 8 7 6 | 5
9)
Lakukan hal yang sama untuk anak 2. Anak 2: (1-4 5-8 3 | 1 8 7 6 | 9 e.
2)
Order Crossover Order crossover merupakan cara crossover dengan menukar kromosom dengan tetap menjaga urutan gen yang bukan bagian dari kromosom tersebut. Contoh order crossover adalah: Misalkan ada 3 kromosom induk yang akan dilakukan crossover: Kromosom [1] = [ABCD]
29
Kromosom [2] = [BACD] Kromosom [3] = [ACDB] Proses crossover: Kromosom[1] = Kromosom[1] >< Kromosom[2] = [ABCD] >< [BACD] = [ACBD] Kromosom[2] = Kromosom[2] >< Kromosom[3] = [BACD] >< [BCDA] = [BCDA] Kromosom[3] = Kromosom[3] >< Kromosom[1] = [BCDA] >< [ABCD] = [BCAE] 6.
Mutasi Mutasi merupakan proses mengubah nilai satu atau beberapa gen dalam satu kromosom. Mutasi ini berperan untuk menggantikan gen yang hilang dari populasi akibat proses seleksi yang memungkinkan munculnya kembali gen yang tidak muncul pada inisialisasi populasi.
a.
Mutasi dengan pengkodean biner. Mutasi dengan pengkodean biner merupakan operasi yang sangat sederhana. Proses yang dilakukan adalah menginversi nilai bit pada posisi tertentu yang dipilih secara acak (atau dengan menggunakan skema tertentu) pada kromosom. Contoh mutasi pada pengkodean biner
30
b.
Kromosom sebelum mutasi
:1 0 0 1 0 1 1 1
Kromosom sesudah mutasi
:1 0 0 1 0 0 1 1
Mutasi dengan pengkodean permutasi. Proses mutasi yang dilakukan dalam pengkodean biner tidak dapat dilakukan pada pengkodean permutasi karena konsistensi urutan permutasi harus diperhatikan. Salah satu cara yang dapat dilakukan adalah dengan memilih dua posisi (locus) dari kromosom dan kemudian nilainya saling dipertukarkan. Contoh mutasi dalam pengkodean permutasi
c.
Kromosom sebelum mutasi
:1 2 3 4 5 6 7 8 9
Kromosom sesudah mutasi
:1 2 7 4 6 5 8 3 9
Mutasi dengan pengkodean nilai. Proses mutasi dalam pengkodean nilai dapat dilakukan dengan berbagai cara, salah satunya yaitu dengan memillih sembarang posisi gen pada kromosom. Nilai yang ada tersebut kemudian ditambahkan atau dikurangkan dengan suatu nilai kecil tertentu yang diambil secara acak. Contoh mutasi dalam pengkodean nilai real dengan nilai yang ditambahkan atau dikurangkan adalah 0,1.
d.
Kromosom sebelum mutasi
: 1,43 1,09 4,51 9,11 6,94
Kromosom sesudah mutasi
: 1,43 1,19 4,51 9,01 6,94
Mutasi dengan pengkodean pohon. Mutasi dalam pengkodean pohon dapat dilakukan antara lain dengan cara mengubah operator ( +, -, *, / ) atau nilai yang terkandung dalam suatu vertex
31
pohon yang dipilih, atau dapat juga dilakukan dengan memilih dua vertex dari pohon dan saling mempertukarkan operator atau nilainya. Contoh mutasi dalam pengkodean pohon seperti pada Gambar 2.12. +
+
X
/
5
X
y
_ _ 5
y
Gambar 2.12 Contoh gen sebelum dan setelah mutasi dengan pengkodean pohon e.
Swapping Mutation Proses mutasi dengan cara ini dilakukan dengan menentukan jumlah kromosom yang akan mengalami mutasi dalam satu populasi melalui parameter mutation rate (pm). Proses mutasi dilakukan dengan cara menukar gen yang telah dipilih secara acak dengan gen sesudahnya, jika gen tersebut berada di akhir kromosom, maka ditukar dengan gen yang pertama. Pertama hitung panjang total gen yang ada pada suatu populasi:
Untuk memilih posisi gen yang akan mengalami mutasi dilakukan dengan membangkitkan bilangan acak antara 1 sampai panjang total gen untuk dilakukan proses mutasi. (Wibowo, 2003:14)
32
2.4 Fuzzy 2.4.1 Logika Fuzzy Konsep logika fuzzy pertama kali diperkenalkan pada tahun 1965 oleh Prof. Lotfi A. Zadeh, seorang professor dari University of California di Berkly. Dasar logika fuzzy adalah teori himpunan fuzzy. Pada teori himpunan fuzzy, peranan derajat keanggotaan sebagai penentu keberadaan elemen dalam suatu himpunan sangatlah penting. Nilai keanggotaan atau derajat keanggotaan (membership values) yang nilainya terletak di antara selang [0,1] menjadi ciri utama dari penalaran dengan logika fuzzy tersebut (Kusumadewi, 2003). Menurut Cox, ada beberapa alasan mengapa orang menggunakan logika fuzzy, antara lain: 1. Konsep logika fuzzy mudah dimengerti. Karena konsep matematis yang mendasari penalaran fuzzy cukup mudah dimengerti. 2. Logika fuzzy sangat fleksibel, artinya mampu beradaptasi dengan perubahanperubahan, dan ketidakpastian yang menyertai permasalahan. 3. Logika fuzzy memiliki toleransi terhadap data yang tidak tepat. 4. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinier yang sangat kompleks. 5. Logika fuzzy dapat membangun dan mengaplikasikan pengalaman-pengalaman para pakar secara langsung tanpa harus pelatihan. 6. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali konvensional. 7. Logika fuzzy didasarkan pada bahasa alami.
33
2.4.2 Himpunan Fuzzy Pada himpunan tegas (crisp), nilai keanggotaan suatu item x dalam suatu himpunan A, yang sering ditulis dengan μA[x], memiliki 2 kemungkinan, yaitu: 1. satu (1), yang berarti bahwa suatu item menjadi anggota dalam suatu himpunan, atau 2. nol (0), yang berarti bahwa suatu item tidak menjadi anggota dalam suatu himpunan. Prinsip dasar dan persamaan matematika dari teori himpunan fuzzy adalah pengelompokkan objek dalam batas yang samar. Himpunan fuzzy merupakan sebuah generalisasi dari himpunan crisp. Kalau pada himpunan crisp, nilai keanggotaan hanya ada 2 kemungkinan, yaiu 0 atau 1. Sedangkan himpunan fuzzy didasarkan pada gagasan untuk memperluas jangkauan fungsi karakteristik sedemikian hingga fungsi tersebut akan mencakup bilangan real pada interval [0,1]. Nilai keanggotaan pada himpunan fuzzy menunjukkan bahwa suatu item dalam semesta pembicaraan tidak hanya berada pada 0 atau 1, melainkan juga nilai yang terletak diantaranya. Dengan kata lain, nilai kebenaran dari suatu item tidak hanya benar atau salah( Kusumadewi, 2003). Pada himpunan fuzzy terdapat 2 atribut, yaitu: 1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu keadaan atau kondisi tertentu dengan menggunakan bahasa alami, seperti : MUDA, PAROBAYA, TUA. 2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu variabel, seperti : 40, 25, 50, dsb.
34
Ada beberapa hal yang perlu diketahui dalam memahami sistem fuzzy, yaitu: 1. Variabel fuzzy Variabel fuzzy merupakan variabel yang hendak dibahas dalam suatu sistem fuzzy. Contoh : umur, temperatur, permintaan, dan sebagainya. 2. Himpunan fuzzy Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau keadaan tertentu dalam suatu variabel fuzzy. Contoh :
Variabel umur, terbagi menjadi 3 himpunan fuzzy, yaitu : MUDA, PAROBAYA, dan TUA (Gambar 2.13)
Gambar 2.13 Himpunan fuzzy untuk variabel umur
Variabel temperatur, terbagi menjadi 5 himpunan fuzzy, yaitu : DINGIN, SEJUK, NORMAL, HANGAT, dan PANAS (Gambar 2.14).
35
Gambar 2.14 Himpunan fuzzy pada variabel temperatur 3. Semesta Pembicaraan 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. Adakalanya nilai semesta pembicaraan ini tidak dibatasi batas atasnya. Contoh:
Semesta pembicaraan untuk variabel umur:
Semesta pembicaraan untuk variabel temperatur: :
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:
36
Muda = [0 45].
Pabobaya = [35 55].
Tua = [45 +∞).
Dingin = [0 20].
Sejuk = [15 25].
Normal = [20 30].
Hangat = [25 35].
Panas = [30 40].
2.4.3 Fungsi Keanggotaan Fuzzy Fungsi keanggotaan fuzzy (membership function) adalah suatu kurva yang menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotaannya (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 bisa digunakan, diantaranya sebagai berikut : (1) Representasi Linear Naik Kenaikan himpunan dimulai pada nilai domain yang memiliki derajat keanggotaan nol [0] bergerak kekanan menuju ke nilai domain yang memiliki derajat keanggotaan lebih tinggi (Gambar 2.15).
37
Gambar 2.15. Representasi linear naik(Kusumadewi dkk, 2006: 40)
Fungsi keanggotaan
(2) Garis lurus dimulai dari domain dengan derajat keanggotaan tertinggi pada sisi kiri kemudian bergerak menurun pada nilai domain yang memiliki derajat keanggotaan lebih rendah (Gambar 2.16)
Gambar 2.16 Representasi linear turun(Kusumadewi dkk, 2006: 40) Fungsi keanggotaan:
38
(3) Represetasi Fungsi Segitiga Fungsi segitiga pada dasarnya merupakan gabungan antara dua garis (linear), seperti terlihat pada gambar 2.17. fungsi ini mempunyai tiga parameter. Bilangan fuzzy yang mempunyai tiga parameter dan dapat dipresentasikan dengan fungsi segitiga, disebut bilangan fuzzy segitiga.
Gambar 2.17. Representasi fungsi segitiga(Kusumadewi dkk, 2006: 40) Fungsi keanggotaan:
(4) Representasi Fungsi Trapesium Fungsi Trapesium pada dasarnya seperti bentuk fungsi segitiga, hanya saja ada beberapa nilai yang memiliki nilai keanggotaan 1 (Gambar 2.18). Fungsi ini mempunyai empat parameter, yaitu
39
Sejumlah bilangan fuzzy
adalah bilangan fuzzy trapesium yang
dinotasikan dengan
dimana
dan anggota fungsi
adalah bilangan real
, didefinisikan:
(Pandian dan Natarjan, 2010: 81).
Gambar 2.18. Keanggotaan bilangan fuzzy (5) Bilangan fuzzy
(Kusumadewi dkk, 2006: 41)
Yang dinotasikan dengan
adalah
suatu himpunan fuzzy yang memiliki fungsi keanggotaan sebagai berikut.
Dengan naik
ke
sebagai rentang kiri dan kanan. 1,
sedangkan
bersifat
monoton
bersifat monoton turun
dari
1.
40
nilai adalah 1 yang terjadi pada saat
Gambar 2.19. Bilangan Fuzzy Jika bilangan fuzzy
tertinggi
(Kusumadewi dkk, 2006: 42)
(Kusumadewi dkk, 2006: 42)
memiliki
fuzzy trapesium, dengan kanan. Jika
keanggotaan
merupakan bilangan
adalah lebar sisi kiri dan β adalah lebar sisi
maka bilangan fuzzy trapesium simetris dan jika
maka merupakan bilangan fuzzy trapesium tak simetris. 2.4.4 Sistem Inferensi Fuzzy Terdapat 3 metode pada sistem inferensi fuzzy yaitu: metode Tsukamoto, metode Mamdani dan metode Sugeno. Dalam skripsi ini metode yang dipakai dan yang akan dibahas adalah metode Sugeno. 2.4.4.1 Metode Sugeno Tahapan-tahapan
dalam
berikut(Widodo,2012:125) 1. Pembentukan himpunan Fuzzy
metode
sugeno
adalah
sebagai
41
Pada tahapan ini variabel input (crisp) dari sistem fuzzy ditransfer ke dalam himpunan fuzzy untuk dapat digunakan dalam perhitungan nilai kebenaran dari premis pada setiap aturan dalam basis pengetahuan 2. Aplikasi fungsi implikasi: Tiap-tiap aturan (proposisi) pada basis pengetahuan fuzzy akan berhubungan dengan suatu relasi fuzzy. Bentuk umum dari aturan yang digunakan dalam fungsi implikasi adalah sebagai berikut: IF x is A THEN y is B 3. Komposisi aturan: Tidak seperti penalaran monoton, apabila sistem terdiri dari beberapa aturan, maka inferensi diperoleh dari kumpulan dan korelasi antar aturan. 4. Penegasan (defuzzifikasi): Input dari proses defuzzifikasi adalah suatu himpunan fuzzy yang diperoleh dari komposisi aturan-aturan fuzzy, sedangkan output (konsekuen) sistem tidak berupa himpunan fuzzy, melainkan berupa konstanta atau persamaan linear. Sehingga jika diberikan suatu himpunan fuzzy dalam range tertentu, maka harus dapat diambil suatu nilai konstanta atau persamaan linier tertentu sebagai output seperti terlihat pada Gambar 2.20
42
Gambar 2.20 Proses Deffuzifikasi 2.4.5
Kendali Logika Fuzzy
Pemikiran utama teori logika fuzzy adalah memetakan sebuah ruang input ke dalam ruang output dengan menggunakan IF-THEN rules. Pemetaan dilakukan dalam suatu Fuzzy Inference System (FIS). Urutan rule bisa sembarangan. FIS mengevaluasi rule secara simultan untuk menghasilkan kesimpulan. Oleh karena itu, semua rule harus lebih didefinisikan lebih dahulu sebelum kita membangun sebuah FIS yang akan digunakan untuk menginterprestasikan semua rule tersebut. FIS merupakan sebuah metode yang dapat menginterprestasikan harga-harga dalam vektor input. Menarik kesimpulan berdasarkan sekumpulan IF-THEN rules yang diberikan dan kemudian menghasilkan vektor output. (Widodo, 2012: 126) Gambar 2.21 menjelaskan alur kerja program.
43
Mulai
Input: Data Lokasi, Jumlah Populasi, dan Batass Generasi
Fuzzy
Output: Probabilitas Mutasi dan Probabilitas Crossover
Populasi Awal Roulette Wheel
Evaluasi Fitness
Mutasi
Crossover Tidak
Kriteria berhenti terpenuhi
Seleksi Ya
Hasil
Selesai Gambar 2.21 Flow Chart Rancangan Sistem
44
2.5 Hubungan
antara
Algoritma
Genetika
dengan
Kendali Logika Fuzzy Algoritma Genetika dengan Kendali Logika Fuzzy adalah sebuah teknik komputasi gabungan antara algoritma genetika dan logika fuzzy. Metode ini hampir sama dengan metode algoritma genetika, namun parameter-parameter yang dipakai dihasilkan dari sebuah sistem fuzzy. Dalam algoritma genetika dengan teknik kendali logika fuzzy, proses yang terjadi atau alur proses sama seperti dengan algoritma genetika, yang dikenalkan oleh John Holland dari Universitas Michigan (1975), dimana algoritma genetika merupakan teknik pencarian heuristik berdasar mekanisme evolusi biologis yang meniru dari teori Darwin dan operasi genetika pada kromosom. (Bindu & Tanwar, 2012:418) dari pada memilih nilai acak dari orang tua, aturan fuzzy didefinikan untuk memilih aturan yang optimal. Sistem yang diusulkan adalah untuk mengoptimalkan proses hasil dari algoritma genetika. Dalam algoritma genetika dengan teknik kendali logika fuzzy terdapat enam tahap utama, yaitu: 1. Representasi kromosom. 2. Inisialisasi Populasi. 3. Fungsi evaluasi. 4. Seleksi. 5. Operator genetika, meliputi operator rekombinasi (crossover) dan mutasi. 6. Penentuan parameter, yaitu parameter kontrol algoritma genetika, yaitu:
45
ukuran populasi (popsize), peluang crossover (Pc), dan peluang mutasi (pm). Dalam penentuan parameter ini dilakukan proses sistem fuzzy untuk mendapatkan nilai yang akan digunakan sebagai parameter. (Muzid, 2008:30) Pada algoritma ini terdapat berbagai metode yang digunakan dalam perpaduan antara algoritma genetika dan sistem fuzzy. Diantaranya adalah model sistem fuzzy yang digunakan pada penentuan parameter adalah menggunakan sistem inferensi fuzzy metode sugeno. Metode Sugeno yang digunakan untuk algoritma genetika dengan teknik kendali logika fuzzy adalah menggunakan dua buah masukan dan dua buah keluaran. Dua buah masukan yang digunakan adalah: 1. Jumlah Populasi yang digunakan. 2. Jumlah generasi yang akan diproses. Sedangkan dua buah keluaran yang akan dihasilkan adalah: 1. Nilai probabilitas rekombinasi (crossover). 2. Nilai probabilitas mutasi. Berikut contoh persoalan yang diselesaikan dengan menggunakan algoritma genetika dengan teknik kendali logika fuzzy. Terdapat 5 buah kota yang akan dilalui oleh seorang pedagang keliling, misalnya Kota A,B,C,D,E. Perjalanan dimulai dari kota A dan berakhir di kota A. Jarak antar kota diperlihatkan pada graf di bawah ini:
46 A 9
7 8 B
E 9
5 3 7
6
2
D
4
C
Gambar 2.22 Contoh Graf yang akan dilalui oleh seorang pedagang keliling Persoalan tersebut akan diselesaikan dengan menggunakan algoritma genetika dengan teknik kendali logika fuzzy. Kriteria berhenti ditentukan terlebih dahulu yaitu apabila setelah dalam beberapa generasi berturut-turut diperoleh nilai fitness yang terendah tidah berubah. Pemilihan nilai fitness yang terendah sebagai syarat karena nilai tersebut yang merepresentasikan jarak terdekat yang dicari pada persoalan ini. Penentuan parameter kontrol algoritma genetika, yaitu: peluang crossover (pc), dan peluang mutasi (pm) dilakukan dengan menggunakan proses kendali logika fuzzy. Penyelesaian: Ada 4 kota yang akan menjadi gen dalam kromosom yaitu kota-kota selain kota asal. Inisialisasi Misalkan kita menggunakan 6 buah populasi dalam satu generasi, yaitu: Kromosom[1] = [B D E C]
47
Kromosom[2] = [D B E C] Kromosom[3] = [C B D E] Kromosom[4] = [E B C D] Kromosom[5] = [E C B D] Kromosom[6] = [C D E B] Evaluasi kromosom Kita akan menghitung nilai fitness dari tiap kromosom yang telah dibangkitkan: Fitness[1] = AB + BD + DE + EC + CA = 7 + 2 + 6 + 3 + 5 = 23 Fitness[2] = AD + DB + BE + EC + CA = 9 + 2 + 8 + 3 + 5 = 27 Fitness[3] = AC + CB + BD + DE + EA = 5 + 7 + 2 + 6 + 9 = 29 Fitness[4] = AE + EB + BC + CD + DA = 9 + 8 + 7 + 4 + 9 = 37 Fitness[5] = AE + EC + CB + BD + DA = 9 + 3 + 7 + 2 + 9 = 30 Fitness[6] = AC + CD + DE + EB + BA = 5 + 4 + 6 + 8 + 7 = 30 Seleksi Kromosom Oleh karena pada persoalan TSP yang diinginkan yaitu kromosom dengan fitness yang lebih kecil akan mempunyai probabilitas untuk terpilih kembali lebih besar maka digunakan inverse. Q[i] = 1/Fitness[i] Q[1] = 1/23 = 0,043 Q[2] = 1/27 = 0,037 Q[3] = 1/29 = 0,034 Q[4] = 1/37 = 0,027 Q[5] = 1/30 = 0,033
48
Q[6] = 1/30 = 0,033 Total = 0,043 + 0,037 + 0,034 + 0,027 + 0,033 + 0,033 = 0,207 Probabilitas Untuk mencari probabilitas kita menggunakan rumus berikut: P[i] = Q[i] / Total P[1] = 0,043 / 0,207 = 0,208 P[2] = 0,037 / 0,207 = 0,179 P[3] = 0,034 / 0,207 = 0,164 P[4] = 0,027 / 0,207 = 0,130 P[5] = 0,033 / 0,207 = 0,159 P[6] = 0,033 / 0,207 = 0,159 Dari probabilitas di atas dapat terlihat bahwa kromosom ke-1 mempunyai fitness paling kecil sehingga mempunyai probabilitas untuk terpilih pada generasi selanjutnya lebih besar dari kromosom lainnya. Untuk proses seleksi kita menggunakan roulette wheel, untuk itu kita terlebih dahulu menghitung probabilitas dari masing-masing kromosom. Probabilitas Kumulatif C[1] = 0,208 C[2] = 0,208 + 0,179 = 0,387 C[3] = 0,387 + 0,164 = 0,551 C[4] = 0,551 + 0,130 = 0,681 C[5] = 0,681 + 0,159 = 0,840 C[6] = 0,840 + 0,159 = 1
49
Metode Roulette Wheel
Gambar 2.23 Gambar Roulette Wheel Metode roulette-wheel adalah membangkitkan nilai acak R antara 0-1. Jika R[k]
50
Setelah itu populasi baru akan terbentuk, yaitu: Kromosom[1] = [2] = [ D B E C ] Kromosom[2] = [1] = [ B D E C ] Kromosom[3] = [3] = [ C B D E ] Kromosom[4] = [5] = [ E C B D ] Kromosom[5] = [3] = [ C B D E ] Kromosom[6] = [4] = [ E B C D ] Selanjutnya akan dihitung nilai parameter crossover probability yang diperoleh dari perhitungan kendali logika fuzzy dengan menginputkan populasi = 6 dan generasi = 100. 1) Pada semesta pembicaraan dan domain untuk populasi, aturan yang digunakan adalah sebagai berikut: • Semesta pembicaraan: [0 1000] • Domain SMALL: [50 250] • Domain MEDIUM: [80 275] • Domain LARGE: [350 500]
Gambar 2.24 Semesta pembicaraan dan domain untuk variabel populasi.
51
2) Sedangkan pada semesta pembicaraan dan domain untuk variabel generasi, aturan nilai yang digunakan adalah sebagai berikut: • Semesta pembicaraan: [0 1000] • Domain SHORT: [50 200] • Domain MEDIUM: [80 275] • Domain LONG: [350 500]
Gambar 2.25 Semesta pembicaraan dan domain untuk variabel generasi. 3) Pada semesta pembicaraan dan domain untuk hasil output yaitu nilai probabilitas rekombinasi (crossover), aturan nilai yang adalah sebagai berikut: • Semesta pembicaraan: [0.6 0.9] • Domain SMALL: [0.625 0.7] • Domain MEDIUM: [0.63 0.7 0.72 0.78] • Domain LARGE: [0.72 0.78 0.8 0.87] • Domain VERY LARGE: [0.8 0.875]
52
Gambar 2.26 Semesta pembicaraan dan domain untuk variabel probabilitas crosover (Muzid, 2008).
4) Pada semesta pembicaraan dan domain untuk nilai probabilitas mutasi, aturan nilai yang digunakan oleh peneliti adalah sebagai berikut: • Semesta pembicaraan: [0 0.25] • Domain VERY SMALL: [0.025 0.1] • Domain SMALL: [0.47 0.83 0.1 0.14] • Domain MEDIUM: [0.1 0.14 0.167 0.2] • Domain LARGE: [0.15 0.225]
Gambar 2.27 Semesta pembicaraan dan domain untuk variabel probabilitas mutasi (Muzid, 2008).
53
Aturan Fuzzy: (Muzid, 2008)
IF (Populasi is SMALL) AND (Generasi is SHORT) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is LARGE).
IF (Populasi is MEDIUM) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is MEDIUM).
IF (Populasi is LARGE) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is SMALL).
IF (Populasi is SMALL) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is MEDIUM).
IF (Populasi is MEDIUM) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is SMALL).
IF (Populasi is LARGE) AND (Generasi is MEDIUM) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is VERYSMALL).
IF (Populasi is SMALL) AND (Generasi is LONG) THEN (ProbCrossover is VERYLARGE) AND (ProbMutasi is SMALL).
IF (Populasi is MEDIUM) AND (Generasi is LONG) THEN
(ProbCrossover
is
VERYLARGE)
AND
(ProbMutasi
VERYSMALL).
IF (Populasi is LARGE) AND (Generasi is LONG) THEN (ProbCrossover is LARGE) AND (ProbMutasi is VERYSMALL). Penyelesaian: Ada 4 variabel fuzzy yang akan dimodelkan, yaitu: (1) Populasi dengan nilai keanggotaan sebagai berikut: [6] = 1
is
54
[6] = 0 [6] = 0
(2) Generasi dengan nilai keanggotaan sebagai berikut:
(3) Probabilitas Crossover dengan nilai keanggotaan sebagai berikut:
55
(4) Probabilitas Mutasi dengan nilai keanggotaan sebagai berikut:
56
Sekarang kita cari nilai z untuk setiap aturan dengan menggunakan fungsi MIN pada aplikasi fungsi implikasinya: [R1] IF (Populasi is SMALL) AND (Generasi is SHORT) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is LARGE);
Lihat himpunan ProbCrossover MEDIUM,
Lihat himpunan ProbMutasi LARGE,
[R2] IF (Populasi is MEDIUM) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is MEDIUM).
[R3] IF (Populasi is LARGE) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is SMALL).
57
[R4] IF (Populasi is SMALL) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is MEDIUM).
Lihat himpunan ProbCrossover LARGE,
Lihat himpunan ProbMutasi MEDIUM,
[R5] IF (Populasi is MEDIUM) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is SMALL).
58
[R6] IF (Populasi is LARGE) AND (Generasi is MEDIUM) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is VERYSMALL).
[R7] IF (Populasi is SMALL) AND (Generasi is LONG) THEN (ProbCrossover is VERYLARGE) AND (ProbMutasi is SMALL).
[R8] IF (Populasi is MEDIUM) AND (Generasi is LONG) THEN (ProbCrossover VERYSMALL).
is
VERYLARGE)
AND
(ProbMutasi
is
59
[R9] IF (Populasi is LARGE) AND (Generasi is LONG) THEN (ProbCrossover is LARGE) AND (ProbMutasi is VERYSMALL).
Dari sini kita dapat mencari berapakah nilai x (probabilitas crossover) dan y (probabilitas mutasi), yaitu:
Sedangkan,
Jadi nilai probabilitas crossover = 0,69 dan nilai probabilitas mutasi 0,19. PINDAH SILANG (CROSSOVER) Nilai ρc = 0,69 berarti jika bilangan random dihasilkan < 0.69 maka akan dipilih menjadi induk baru. Hasil 6 bilangan random yang dihasilkan adalah : R[1] = 0,851 , R[2] = 0,211 , R[3] = 0,202 , R[4] = 0,877 , R[5] = 0,771 ,R[6] = 0,131. Kromosom ke-k yang dipilih sebagai induk jika R[k] < ρc. Maka yang akan dijadikan induk adalah kromosom[2], kromosom[3], dan kromosom[6]. Proses Crossover :
60
Kromosom[2] = Kromosom[2] >< Kromosom[3] = [B D E C] >< [C B D E] = [B D C E] Kromosom[3] = Kromosom[3] >< Kromosom[6] = [C B D E] >< [E B C D] = [C B E D] Kromosom[6] = Kromosom[6] >< Kromosom[2] = [E B C D] >< [B D E C] = [E D B C] Hasil Crossover: Kromosom [1] = [D B E C] Kromosom [2] = [B D C E] Kromosom [3] = [C B E D] Kromosom [4] = [E C B D] Kromosom [5] = [C B D E] Kromosom [6] = [E D B C] MUTASI Panjang total gen = jumlah gen dalam 1 kromosom * jumlah Kromosom (3) = 4 * 6 = 24 Probabilitas mutasi (ρm) = 0,19 maka jumlah gen yang akan dimutasi adalah = 0,19*24 = 4,56 = 5. Posisi tersebut didapat dari pembangkitan 5 bilangan acak. Misakan 5 buah posisi gen yang akan dimutasi adalah 3, 7, 10, 20, 24. Kromosom [1] = [D B E C] = [D B C E]
61
Kromosom [2] = [B D C E] = [B D E C] Kromosom [3] = [C B E D] = [C E B D] Kromosom [4] = [E C B D] = [E C B D] Kromosom [5] = [C B D E] = [E B D C] Kromosom [6] = [E D B C] = [C D B E] Proses algoritma genetika dengan teknik kendali logika fuzzy untuk 1 generasi telah selesai. Maka nilai fitness setelah 1 generasi adalah: Fitness [1] = AD + DB + BC + CE + EA = 9 + 2 + 7 + 3 + 9 = 30 Fitness [2] = AB + BD + DE + EC + CA = 7 + 2 + 6 + 3 + 5 = 23 Fitness [3] = AC + CE + EB + BD + DA = 5 + 3 + 8 + 2 + 9 = 27 Fitness [4] = AE + EC + CB + BD + DA = 9 + 3 + 7 + 2 + 9 = 30 Fitness [5] = AE + EB + BD + DC + CA = 9 + 8 + 2 + 4 + 5 = 28 Fitness [6] = AC + CB + BD + DE + EA = 5 + 7 + 2 + 6 + 9 = 29 Sebelumnya telah ditentukan kriteria berhenti yaitu bila setelah dalam beberapa generasi berturut-turut diperoleh nilai fitness yang terendah tidak berubah. Pada 1 generasi telah terlihat bahwa terdapat nilai fitness terkecil yang tidak berubah. Apabila perhitungan dilanjutkan hingga ke generasi ke-N maka diyakinkan bahwa nilai fitness yang terendah tetap tidak akan berubah. Walaupun perhitungan cukup dijabarkan hingga generasi ke-1 saja namun solusi yang mendekati optimal telah didapatkan. Oleh karena itu, terbukti bahwa algoritma genetika dapat menyelesaikan persoalan.
62
2.6 Sekilas tentang MATLAB MATLAB merupakan bahasa pemrogaman yang hadir dengan fungsi dan karakteristik yag berbeda dengan bahasa pemrograman lain yang sudah ada lebih dahulu seperti Delphi, Basic, maupun C++. MATLAB merupakan bahasa pemrograman level tinggi yang dikhususkan untuk kebutuhan komputasi matematik, analisis data, pengembangan algoritma, simulasi dan pemodelan, serta grafik-grafik perhitungan. MATLAB hadir dengan membawa warna yang berbeda. Hal ini karena MATLAB membawa keistimewaan dalam fungsi-fungsi matematika, fisika, statistik, dan visualisasi. MATLAB dikembangkan oleh MathWorks, yang pada awalnya dibuat untuk memberikan kemudahan mengakses data matrik pada proyek LINPACK dan EISPACK. Saat ini MATLAB memiliki ratusan fungsi yang dapat digunakan sebagai program solver mulai dari masalah yang simple sampai masalah-masalah yang kompleks dari berbagai disiplin ilmu (Firmansyah, 2007). 2.6.1 Beberapa Bagian dari Window MATLAB Adapun beberapa bagian dari window yang terdapat dalam program MATLAB meliputi: 1.
Current Directory Bagian dari window ini menampilkan isi dari direktori kerja saat menggunakan MATLAB
2.
Command History
63
Bagian ini berfungsi untuk menyimpan perintah-perintah apa saja yang sebelumnya dilakukan oleh pengguna terhadap MATLAB. 3.
Command Window Bagian ini merupakan tempat untuk menjalankan fungsi, variabel, mendeklerasikan variabel, menjalankan proses-proses, serta melihat isi variabel.
4.
Workspace Bagian ini berfungsi untuk menampilkan seluruh variabel-variabel yang sedang aktif pada saat pemakaian MATLAB (Firmansyah, 2007).
2.6.2 Meminta Bantuan MATLAB menyediakan fungsi help yang berisikan tutorial lengkap mengenai MATLAB dan segala keunggulannya. User dapat menjalankan fungsi ini dengan menekan tombol pada toolbar atau menulis perintah ‘helpwin’ pada command window. MATLAB juga menyediakan fungsi demos yang berisikan video tutorial MATLAB serta contoh-contoh program yang bisa dibuat dengan MATLAB (Firmansyah, 2007). 2.6.3 Interupting dan Terminating dalam MATLAB Untuk meghentikan proses yang sedang berjalan pada MATLAB dapat dilakukan dengan menekan tombol Ctrl+C. Sedangkan untuk keluar dari MATLAB dapat dilakukan dengan menuliskan perintah exit atau quit pada command window atau dengan menekan menu exit pada bagian menu file dari menu bar (Firmansyah, 2007).
64
2.6.4 Variabel pada MATLAB MATLAB hanya memiliki dua jenis tipe data yaitu numeric dan string. Dalam MATLAB setiap variabel akan disimpan dalam bentuk matrik. User dapat langsung menuliskan variabel baru tanpa harus mendeklarasikannya terlebih dahulu pada command window (Firmansyah, 2007)
2.7
Pembuatan Aplikasi Berbasis Graphic User Interface (GUI)
2.7.1
Pendahuluan Hampir sebagian besar aplikasi yang beredar di pasaran saat ini berbasis
Graphic User Interface (GUI) karena lebih diterima oleh user dibanding program yang berbasis console. Istilah populer dari GUI adalah pemrograman visual dengan bentuk form atau frame. Kebanyakan bahasa pemrograman yang digunakan oleh developer dalam
membuat aplikasi sudah mendukung GUI.
Tetapi kebanyakan kurang mendukung sistem yang menerapkan Soft Computing. Matlab sebagai bahasa pemrograman yang mendukung Soft Computing, kini sudah dilengkapi dengan GUI untuk pembuatan aplikasinya. Bahkan sudah dilengkapi dengan Deployment Project agar dihasilkan executable program yang dapat berjalan di sembarang komputer tanpa MATLAB. GUI pada MATLAB berfungsi sebagai penghubung antara script Matlab yang tersimpan berupa M-File dan toolbox-toolbox MATLAB seperti FIS, ANFIS, JST, Algoritma Genetika dan lain-lain. Setelah kita mempelajari toolboxtoolbox
MATLAB
pada
bab-bab
terdahulu,
kita
mulai
masuk
ke
65
pengintegrasiannya ke dalam aplikasi sesungguhnya dengan bantuan GUI. (Widodo, 2012:159) 2.7.2
GUI GUI pada MATLAB dapat kita buka dengan mengeklik “File-New-Gui”.
Atau dengan mengetik “guide” pada Command Window. Pilih “Blank GUI” pada jendela GUIDE Quick Start. Cara menggunakannya adalah dengan menge-drag icon pada komponen ke tengah kemudian dobel klik untuk mengeset parameternya. Parameter yang diseting berupa nama variabel (tag) dan nama String. (Widodo, 2012:160) 2.7.3
M-File Editor Visualisasi pada MATLAB yang berupa GUI tidak akan dapat berjalan
sebagaimana mestinya tanpa adanya bantuan M-File. GUI hanyalah alat bantu dalam
pembuatan
desain
interaksi
antara
pengguna
dengan
aplikasi.
Sesungguhnya yang berperan dalam komputasi tetap saja script M-File. M-File secara otomatis terbentuk saat kita mengklik icon “Run” pada jendela GUI. Sesaat setelah kita mengklik tombol “Run” kita diminta untuk menyimpan dan memberi nama project yang baru saja kita buat GUI-nya. Pada M-File editor tampak script yang dibuatkan oleh Matlab secara otomatis. Berikutnya kita tinggal menyisipkan script-script yang dibutuhkan pada M-File tersebut. Saat kita menyisipkan suatu komponen pada GUI, secara otomatis pada M-File disipkan pula function yang berupa Callback. (Widodo, 2012:162).
66
BAB 3 METODE PENELITIAN
Metode penelitian merupakan suatu cara yang digunakan dalam penelitian sehingga pelaksanaan penelitian dapat dipertanggungjawabkan secara ilmiah. Dengan metode penelitian, data yang diperoleh semakin lengkap untuk memecahkan masalah yang dihadapi. Pada penelitian ini langkah-langkah yang dilakukan adalah sebagai berikut.
3.1.
Menemukan Masalah Dalam tahap ini dicari sumber pustaka dan dipilih suatu masalah. Untuk
lebih memperjelas pembahasan, maka dipilih suatu kasus yang terjadi di suatu perusahaan yang berkaitan langsung dengan permasalahan yang akan diangkat.
3.2.
Merumuskan Masalah Masalah yang ditemukan kemudian dirumuskan pada pencarian rute
jaringan dan hasil pencarian jarak minimum dalam pengiriman barang menggunakan algoritma genetika dengan software MATLAB di PT. Pos Indonesia DC Tugu Semarang.
3.3.
Pengambilan Data Dalam penelitian ini, penulis memperoleh data dari PT. Pos Indonesia DC
Tugu Semarang yang kemudian akan dilakukan pengolahan. Data ini berupa data pengiriman barang oleh kurir dari PT. Pos Indonesia DC Tugu Semarang beserta alamatnya. Untuk memperoleh data jarak antar lokasi dilakukan proses pencarian
66
67
jarak menggunakan bantuan Wikimapia. Metode ini dilakukan karena dengan cara ini akan didapatkan jarak antar lokasi secara lebih akurat tanpa harus mengeluarkan banyak waktu dan biaya dalam pencariannya. Adapun langkahlangkahnya adalah sebagai berikut. 1.
Membuka situs www.wikimapia.org.
2.
Di bagian pencarian atau search ketik kata kunci yang berhubungan dengan Semarang, misal Universitas Negeri Semarang. Setelah itu, tekan ENTER atau tombol CARI.
Gambar 3.1 Halaman Depan Wikimapia 3.
Setelah muncul semua informasi yang berhubungan dengan Semarang, pilih Universitas Negeri Semarang. Agar nama jalan dapat terlihat, maka ubah nama JENIS PETA menjadi Google Versi Padu.
68
Gambar 3.2 Hasil Pencarian Tempat 4.
Untuk memunculkan pengukuran jarak, pada menu utama Wikimapia klik menu LOGIN – PENGUKURAN JARAK.
Gambar 3.3 Menu Login Wikimapia
69
5.
Mulai mengukur jarak dari mulai Universitas Negeri Semarang Sekaran hingga berakhir di PROGRAM PASCASARJANA UNNES. Setelah selesai, maka akan tampak bahwa total jarak adalah 1,3 KM.
Gambar 3.4 Hasil Pengukuran Jarak
3.4.
Analisis dan Pemecahan Masalah Dari berbagai sumber yang sudah menjadi bahan kajian, diperoleh suatu
pemecahan masalah. Selanjutnya dilakukan langkah-langkah pemecahan masalah sebagai berikut: 1.
Pembentukan model. Menyajikan titik-titik yang harus dilalui dalam jaringan TSP berdasarkan data perusahaan beserta jarak antar titiknya.
2.
Mencari penyelesaian masalah.
70
Pada tahap ini dilakukan pencarian rute optimal dan jarak minimal yang dapat ditempuh dalam pengiriman barang dengan syarat semua alamat dilalui tepat satu kali kecuali titik asal yang sama dengan titik akhir. Setelah diketahui jarak antara titik menggunakan Wikimapia, akan dicari hasil perhitungan rute optimal dan jarak minimal dari jaringan TSP beserta gambar rute tersebut. Proses ini memerlukan ketelitian yang tinggi karena jika terjadi suatu kesalahan kecil saja akan berakibat pada ketidaktepatan dalam perhitungan rute dan jarak dari jaringan TSP terbaik. Masalah minimasi ini akan dicari dengan menggunakan algoritma genetika pada software MATLAB. 3.4.1. Analisis Kebutuhan Aplikasi dalam menentukan jalur terpendek pada kasus TSP ini dirancang dengan menggunakan Algoritma Genetika. Dalam melakukan proses aplikasi yang mencakup proses input dan proses outputnya, dinyatakan dengan menggunakan aplikasi bahasa pemrograman MATLAB yang diperjelas dengan diagram alir/flowchart (lihat Gambar 3.5). Pada tahap ini, digunakan notasi-notasi untuk menggambarkan arus data tersebut. 3.4.1.1. Analisis Kebutuhan Masukan (Input) Proses input atau masukan dari aplikasi dalam memnentukan jalur terpendek pada permasalahan TSP ini berupa parameter-parameter yang diperlukan dalam Algoritma Genetika, yaitu: 1.
Data jumlah kota, yang dalam penelitian ini adalah jumlah alamat, disimbolkan dengan ( ) dan direpresentasikan dengan koordinat (
).
71
Jumlah alamat ( ) ditentukan oleh pengguna. Pada penentuan koordinat alamat, penulis menggunakan bantuan website wikimapia.org. 2.
Parameter-parameter yang diperlukan dalam perhitungan Algoritma Genetika, yaitu: -
Ukuran Populasi dan Generasi
= (100 dan 100), (100 dan 200), (100
dan 500), (100 dan 1000), (200 dan 100), (500, 100), dan (1000,100) -
Panjang Kromosom/Jumlah Gen = 22
-
Peluang Crossover ( )
=
dihitung
menggunakan
fuzzy
=
dihitung
menggunakan
fuzzy
sugeno -
Peluang Mutasi (
)
sugeno 3.4.1.2.
Analisis Kebutuhan Proses
Kebutuhan proses yang dilakukan pada sistem menentukan jalur terpendek dalam menyelesaian permasalahan TSP ini antara lain: 1.
Proses pembuatan rute pada grafik.
2.
Proses menentukan jarak kota dengan bantuan website wikimapia.org.
3.
Proses perhitungan fungsi fitness, seleksi, crossover, mutasi sampai dengan menentukan hasil populasi akhirnya.
4. 3.4.1.3.
Proses penyeleksian jalur terpendek. Analisis Kebutuhan Keluaran (Output) Data keluaran yang diperoleh dari proses pengaplikasian dalam
menentukan jalur terpendek dengan Algoritma Genetika dengan Teknik Kendali Logika Fuzzy pada permasalahan TSP ini adalah rute jalur terpendek dari 22
72
alamat yang telah ditentukan disertai dengan jarak antar alamat serta panjang jalur minimum dan grafik fitness rata-ratanya. 3.4.2. Perancangan Perangkat Lunak Program yang dibuat berdasarkan langkah-langkah untuk menyelesaikan TSP Algoritma Genetika dengan kendali logika fuzzy menggunakan software MATLAB sebagai berikut. a. Langkah-langkah hybrid Algoritma Genetika dengan teknik kendali logika fuzzy : 1.
Pengkodean Kromosom Pada tahap ini, alamat-alamat yang akan dikunjungi diberi nomor urut. Kemudian dibentuk ke dalam suatu kromosom yang berisi gen-gen yang mempresentasikan nomor urut dari semua kota yang ada. Jumlah gen dalam setiap kromosom adalah sama dengan jumlah alamat. Masingmasing nomor urut alamat hanya boleh muncul sekali di dalam suatu kromosom dan dibangkitkan secara acak.
2.
Inisialisasi Populasi Tahap ini bertujuan untuk membangkitkan sebuah populasi yang berisi sejumlah kromosom. Setiap kromosom berisi sejumlah gen. Input untuk fungsi ini adalah ukuran populasi (jumlah kromosom dalam populasi) dan jumlah gen dalam satu kromosom. Output dari fungsi tersebut adalah variabel populasi berupa matriks dua dimensi.
73
3.
Menentukan Nilai Fitness Permasalahan TSP untuk mencari jarak terpendek dari 27 alamat yang akan dilalui adalah meminimalkan total biaya. Oleh karena itu, nilai fitness yang bisa digunakan adalah 1 dibagi total biaya. Dalam hal ini yang dimaksud dengan total biaya adalah jumlah jarak antara satu alamat dengan alamat lain secara melingkar. Misalkan untuk sejumlah
alamat,
total biaya adalah jarak alamat 1 ke alamat 2 ditambah jarak dari alamat 2 ke alamat 3 dan seterusnya sampai dengan jarak dari alamat 4.
ke alamat 1.
Seleksi Seleksi yang digunakan pada permasalahan TSP ini adalah dengan metode roulette wheel (roda roulette). Pada tahap ini, masing-masing kromosom menempati potongan lingkaran pada roda roulette secara proporsional sesuai dengan nilai fitnessnya. Kromosom yang memiliki nilai fitness lebih besar, menempati potongan lingkaran lebih besar dibandingkan dengan kromosom bernilai fitness rendah. Pertama, dibuat interval nilai kumulatif (dalam interval [0,1]) dari nilai fitness masing-masing kromosom dibagi dengan nilai fitness semua kromosom. Sebuah kromosom akan terpilih jika bilangan random yang dibangkitkan berada dalam interval akumulatifnya.
5.
Proses Perkawinan Silang (Crossover) Pada tahap ini, akan dipilih 2 kromosom induk yang akan mengalami proses perkawinan silang secara acak, kemudian menentukan titik potongnya. Setelah titik potongnya terpilih, maka dilakukan penukaran informasi dari kedua kromosom tersebut berdasarkan titik potong yang
74
telah ditentukan. Pada proses ini akan dihasilkan kromosom anak hasil dari perkawinan silang kedua induknya, dimana kromosom anak tersebut berisi gen-gen gabungan dari bagian kromosom 1 dan kromosom 2. 6.
Proses Mutasi Proses mutasi adalah penukaran pasangan gen yang telah terpilih secara random dalam 1 kromosom. Penukaran pasangan ini dilakukan pada dua gen dalam satu kromosom. Untuk semua gen dalam kromosom, jika bilangan random [1,0] yang dibangkitkan kurang dari probabilitas mutasi, maka nilai gen tersebut akan ditukar dengan nilai gen lain yang dipilih secara random. Pada langkah 5 dan langkah 6, kedua probabilitas dari probabilitas crossover dan probabilitas mutasi akan diatur/ dikontrol dengan melakukan proses kendali logika fuzzy.
7.
Evaluasi dan Kriteria Penghentian Generasi Tahap ini adalah penghitungan jumlah generasi sampai mencapai batas maksimum generasi yang diberikan. Bila dalam jumlah generasi yang ditentukan tidak ada kromosom yang lebih baik, maka proses iterasi akan berhenti.
b. Kendali logika fuzzy Langkah-langkah yang dilakukan adalah sebagai berikut : Prosedur : untuk mengontrol nilai parameter algoritma genetika Langkah1 : Hitung perubahan nilai pada rata-rata nilai fitness antara generasi sekarang dengan generasi sebelumnya.
75
Langkah 2 : Tentukan nilai pengontrol antara generasi sekarang dengan generasi sebelumnya menggunakan tabel pengambilan keputusan fuzzy. Langkah 3 : Setelah melakukan nilai pengontrol diatas, hitung nilai perubahan pada probabilitas crossover dan probabilitas mutasi. Langkah 4 : Update nilai probabilitas crossover dan probabilitas mutasi. Langkah 5 : kembali pada loop algoritma genetika.
3.5.
Penarikan Simpulan Langkah ini merupakan langkah terakhir dari penelitan. Penarikan
kesimpulan didasarkan pada studi kasus dan pembahasan permasalahan. Simpulan yang diperoleh merupakan hasil analisis dari penelitian. Simpulan yang diambil dari penelitian ini adalah tentang bagaimana mencari jalur terpendek dan hasil pencarian jarak minimum dalam pengiriman barang menggunakan algoritma genetika dengan software MATLAB di PT. Pos Indonesia DC Tugu Semarang.
BAB 4 HASIL PENELITIAN DAN PEMBAHASAN
4.1
Hasil Penelitian Penelitian ini mengkaji tentang pengiriman surat maupun barang di PT.
Pos Indonesia DC Tugu Semarang dengan permasalahannya yaitu menentukan rute jaringan Travelling Salesman Problem (TSP) terbaik dengan jarak pendistribusian terkecil menggunakan algoritma genetika dengan teknik kendali logika fuzzy. Pada permasalahan ini aplikasi yang dibuat menggunakan bantuan software Matlab 7.8.0 (R2009a). Dalam penelitian ini yang akan dicari adalah panjang rute yang dilalui untuk pendistribusian surat maupun barang yang akan dikirimkan PT. Pos Indonesia DC Tugu Semarang menuju para penerima barang yang berada di wilayah Kota Semarang, dalam hal ini dikhususkan untuk wilayah Kecamatan Ngaliyan. Permasalahan TSP pada penelitian ini bukan lah masalah TSP murni, karena masih terdapat beberapa jalan yang dilewati lebih dari satu kali. Hal ini dikarenakan tidak adanya jalan lain yang bisa dipilih untuk melanjutkan pendistribusian barang dari rumah penerima satu ke penerima selanjutnya. Penulis memperoleh data dari PT. Pos Indonesia DC Tugu Semarang berupa list nama penerima beserta alamat lengkapnya seperti yang tersaji dalam Lampiran 1, kemudian dilakukan proses pencarian koordinat titik dengan bantuan situs wikimapia.org yang sudah terintegrasi dengan Google Maps. Situs
76
77
Wikimapia.org merupakan situs pencari koordinat lokasi di bumi, dengan sumbu horisontal X adalah garis bujur (longitude), sedangkan sumbu vertikal Y merupakan garis lintng (latitude), yang berjalan melalui Observatorium Greenwich di Inggris. Koordinat semua titik dalam pendistribusian surat maupun barang menuju rumah penerima barang yang telah diberikan oleh PT. Pos Indonesia DC Tugu Semarang disajikan pada Lampiran 2. Dari koordinat yang telah diketahui pada Lampiran 2, kemudian dapat dicari jarak antar lokasinya. Dalam penelitian ini, perhitungan jarak antar lokasi dilakukan dengan bantuan Google Maps yang telah menyediakan fasilitas berupa pengukuran jarak. Adapun untuk membandingakan ukuran jarak pada Google Maps dengan jarak sebenarnya di lapangan, penulis melakukan observasi langsung pada beberapa sample tempat. Hasil perhitungan jarak antar semua lokasi terlampir pada Lampiran 3. 4.1.1 Pengkodean Kromosom Pada tahap pengkodean kromosom ini, kota-kota yang akan dikunjungi diberi nomor urut dan ditentukan pula posisinya dalam grafik.
78
Gambar 4.1 Posisi 22 Alamat dalam Grafik 4.1.2 Inisialisasi Populasi Tahap ini adalah tahap membangkitkan sebuah populasi yang berisi sejumlah kromosom. Setiap kromosom berisi sejumlah gen dan setiap gen berisi nomor dari semua kota yang menjadi sample. Masing-masing nomor urut hanya boleh muncul 1 kali di dalam 1 kromosom. Masukan untuk fungsi ini adalah ukuran populasi yaitu jumlah kromosom dalam populasi dan jumlah gen dalam satu kromosom. Kromosom yang dibangkitkan adalah sebuah kromosom acak. Untuk membangkitkan kromosom ini, digunakan fungsi random yang telah tersedia dalam MATLAB. Sintak dapat dilihat pada Gambar 4.2 sebagai berikut. function Populasi = TSPInisiasiPopulasi(UkPop,JumGen) for ii=1:UkPop, [Xval,Ind] = sort(rand(1,JumGen)); Populasi(ii,:) = Ind; end
Gambar 4.2 Sintak Inisialisasi Populasi Fungsi
di
atas
dideklarasikan
dengan
nama
TSPInisialisasiPopulasi, dengan 2 variabel yaitu Ukpop,JumGen. Ukpop merupakan ukuran populasi, dan JumGen adalah jumlah gen. Output yang dihasilkan dari fungsi ini adalah Populasi. Untuk menyatakan kromosom kepada populasi yang jumlah kolomnya sama dengan jumlah gen digunakan perintah Populasi(ii,:). Ukpop menyatakan ukuran populasi atau jumlah kromosom dalam populasi, dimana nilainya dapat dimasukkan melalui perintah
79
input (‘Masukkan Ukuran Populasi: ‘). JumGen menyatakan jumlah gen dalam kromosom, dimana gen ini merepresentasikan jumlah alamat yang
ada.
Nilai
dari
JumGen
(‘Masukkan Jumlah Gen :
dimasukkan
melalui
perintah
input
‘).Perintah sort (rand(1,JumGen))
manyatakan pembangkitan matriks berukuran 1 x JumGen yang berisi bilangan random dalam interval 0 – 1 yang terurut dari kecil ke besar. Program tersebut kemudian disimpan dengan nama TSPInisialisasiPopulasi.m.Dari program tersebut, didapatkan kromosom yang terbentuk seperti pada Lampiran 8. Dari hasil tersebut dapat diperoleh populasi awal yang dibangkitkan secara acak dengan merepresentasikannya melalui nomor urut setiap alamat yang merupakan jalur yang dilalui pada masing-masing kromosom secara melingkar. Populasi awal ini diambil secara acak dari sekian banyak solusi jalur yang memungkinkan untuk dilalui. Masing-masing nomor urut hanya boleh muncul 1 kali dalam 1 kromosom. 4.1.3
Evaluasi Individu TSP bertujuan untuk meminimalkan jarak, maka nilai fitnessnya adalah
inversi total jarak dari jalur yang didapatkan, dengan menggunakan rumus mana
di
adalah total jarak dari jalur yang didapatkan. Variabel yang digunakan untuk mencari nilai fitness yaitu populasi, jumlah
gen, dan jarak antar kota dalam suatu kromosom. Output dari fungsi ini adalah nilai fitness dalam suatu populasi yang dapat dilihat pada Lampiran 9. 4.1.4
Probabilitas Fitness
80
Probabilitas fitness adalah perhitungan masing-masing nilai fitness pada setiap kromosom dalam suatu populasi terhadap jumlah total nilai fitnessnya. Rumus yang digunakan adalah
. Pada tahap ini juga dapat ditentukan
nilai kumulatif dari probabilitasnya. Perhitungan probabilitas fitness ini diimplementasikan dengan fungsi sort. while generasi<MaxGen, generasi=generasi+1; gen(generasi)=generasi; F=sum(pop(:,N+2)); for i=1:popsize, p(i)=pop(i,N+2)/F; q(i)=sum(p(1:i)); end; [Urut,indek]=sort(pop(:,N+2));
Gambar 4.3 Sintak Probabilitas Fitness Variabel yang digunakan untuk mencari probabilitas fitness yaitu popsize (ukuran populasi) dan MaxGen (maksimum generasi). Keluarannya adalah probabilitas fitness dan nilai kumulatif dari probabilitasnya yang dapat dilihat pada Lampiran 10. Nilai Kumulatif dari probabilitas fitness yang diperoleh adalah 1, hal ini terjadi karena bila dilihat berdasarkan definisi teori probabilitas, nilai probabilitas berkisar antara interval 0 – 1 di mana
, artinya, nilai probabilitas
yang dihasilkan tidak boleh lebih dari 1. Nilai probabilitas maksimum yang dihasilkan harus bernilai 1.
4.1.5
Roulette Wheel Selection Proses seleksi adalah proses mencari kromosom terbaik dalam satu
generasi, di mana untuk menentukan suatu kromosom terbaik dapat dilihat dari
81
nilai fitnessnya. Proses seleksi dilakukan dengan mengevaluasi setiap kromosom berdasarkan nilai fitnessnya untuk mendapatkan peringkat terbaik. Pada tahap ini, kromosom diseleksi sesuai dengan nilai fitnessnya. Tahap pertama yang dilakukan adalah nilai fitness yang diperoleh dijumlahkan, kemudian bangkitkan bilangan random. Setelah itu, nilai fitness yang telah terurut tadi dibandingkan dengan bilangan random yang dibangkitkan. Jika
bilangan random yang
telah dibangkitkan, maka kromosom tersebut akan terpilih sebagai induk untuk melakukan proses selanjutnya. H yang dapat dilihat pada Lampiran 11. 4.1.6
Update Probabilitas Crossover dan Probabilitas Mutasi Pada proses ini, update probabilitas crossover dan probabilitas mutasi
menggunakan teknik kendali logika fuzzy. Pada prinsipnya proses kendali logika fuzzy dipergunakan untuk mengontrol nilai parameter algoritma genetika pada suatu generasi secara otomatis (automatic fine-tuning) berdasarkan informasi yang diperoleh dari populasi sebelumnya. nilai statistik dari populasi dan generasi yang ada dimasukkan dalam proses fuzzy sehingga menghasilkan parameter yang kemudian akan digunakan dalam proses algoritma genetika sehingga akan menghasilkan keluaran akhir. Dalam skripsi ini perhitungan probabilitas crossover dan probabilitas mutasi menggunakan bantuan perhitungan fuzzy sugeno yang terdapat di dalam software MATLAB. Untuk perhitungan manualnya dapat dilihat pada Lampiran 12. 4.1.6
Implementasi Program
82
Setelah memperoleh data dari PT Pos Indonesia DC Tugu Semarang berupa list nama beserta alamat penerima dan mencari koordinat beserta jarak antar alamat penerima, kemudian dibangun perangkat lunak implementasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy pada Travelling Salesman Problem melalui bantuan software MATLAB. Setelah perangkat lunak implementasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy pada Travelling Salesman Problem selesai dibangun, maka tahap selanjutnya adalah tahap uji coba program. Tahap uji coba tampilan adalah tahap pengujian dengan menjalankan program Travelling Salesman Problem yang sebagai masukan adalah titik koordinat tempat tujuan, jarak antar lokasi tempat tujuan, jumlah populasi, dan batas generasi yang akan diperoleh. Dalam perangkat yang telah dibuat, terdapat beberapa tampilan antara lain: tampilan Menu Utama, tampilan About, dan tampilan Help. Hasil pada tampilan Menu Utama, tampilan About, dan tampilan Help dapat dilihat pada Lampiran 4. Untuk coding pada matlab dapat dilihat pada Lampiran 5. Tampilan TSP dapat dilihat pada Gbr 4.6.
83
Gambar 4.6 Tampilan Uji TSP Pada tampilan Uji TSP yang ada pada Gambar 4.6 berguna untuk melakukan proses pencarian rute menggunakan algoritma genetika dengan teknik kendali logika fuzzy dengan memasukkan data koordinat alamat yang dituju yang sebelumnya telah dimasukkan ke dalam Excel, jumlah populasi, dan batas generasi. Kemudian terdapat beberapa tombol beserta fungsinya antara lain: 1. Tombol Input Data: berfungsi untuk memasukkan data koordinat alamat dituju yang sebelumnya telah dimasukkan ke dalam Excel 2. Tombol Fuzzy Sugeno: berfungsi untuk memberi keluaran berupa Pmutasi dan Pcrossover setelah menginputkan Populasi dan Generasi). 3. Tombol Cari: berfungsi untuk melakukan proses perhitungan menggunakan algoritma genetika dengan teknik kendali logika fuzzy. 4. Tombol Plot: berfungsi untuk menampilkan grafik koordinat kota/alamat yang akan dilalui setelah melakukan proses perhitungan.
84
5. Tombol Menu Utama: berfungsi untuk kembali pada tampilan menu utama. 6. Tombol Hasil Uji: berfungsi untuk menyimpan hasil perhitungan berupa nilai fitness terbaik, nilai fitness rata-rata, panjang jalur terbaik (Km), waktu (s), dan jalur terbaik. Tampilan Hasil Uji dapat dlihat pada Gambar 4.7.
Gambar 4.7 Tampilan Hasi Uji 7. Tombol Refresh: digunakan untuk memasukkan nilai pada kolom yang telah disediakan setelah melakukan perhitungan menggunakan algoritma genetika dengan teknik kendali logika fuzzy. 8. Tombol Reset: digunakan untuk menghapus semua masukkan nilai. 9. Tombol Save Excel: digunakan untuk menyimpan data ke dalam file Excel. Berikut ini merupakan grafik koordinat kota/alamat yang dituju dapat dilihat pada Gambar 4.8.
85
Gambar 4.8 Tampilan Koordinat Kota atau Alamat Dituju 4.1.7
Hasil Simulasi Program Perangkat lunak yang telah dirancang memerlukan pengujian data dengan
melakukan proses pencarian rute dengan variasi jumlah populasi dan batas generasi yaitu: (100 dan 100), (100 dan 200), (100 dan 500), (100 dan 1000), (200 dan 100), (500 dan 100) dan (1000 dan 100). Kemudian dilakukan proses perhitungan sebanyak 10 kali dan diambil hasil terbaik minimum. 4.1.7.1 Perhitungan menggunakan masukan populasi 100 dan generasi 100 Untuk memulai perhitungan menggunakan perangkat lunak yang telah disediakan dapat dilihat pada Gambar 4.9 dengan memasukkan koordinat alamat tujuan yang sebelumnya telah disiapkan pada Excel, populasi 100 dan generasi 100.
86
Gambar 4.9 Tampilan TSP Setelah Memasukan Koordinat Kota, Populasi, dan Generasi Setelah tombol Fuzzy Sugeno ditekan pada Pmutasi dan Pcrossover akan muncul nilai 0,9152 dan 0,71538. Nilai Pmutasi dan Pcrossover dihasilkan melalui sistem fuzzy Sugeno dengan memasukkan populasi 100 dan generasi 100 dan menggunakan aturan fuzzy serta nilai fungsi keanggotaan fuzzy yang telah dijelaskan pada Lampiran 6. Gambar 4.10 menjelaskan proses kerja pencarian probabilitas mutasi dan probabilitas crossover menggunakan fuzzy Sugeno.
87
Gambar 4.10 Hasil Pencarian Mutasi dan Probabilitas Crossover Gambar diatas merupakan menu pilihan untuk menyimpan, mengedit, dan melihat sistem fuzzy. Kolom kuning menunjukkan variabel input yang dalam penelitian ini adalah nilai Generasi dan Populasi. Kolom biru menunjukkan variabel output yang dalam penelitian ini adalah nilai probabilitas crossover dan nilai probabilitas mutasi. Kolom di bawah kolom biru menunjukkan kombinasi output dari tiap-tiap aturan yang terbentuk dari fungsi komposisi yang digunakan, kemudian dilanjutkan dengan proses defuzzifikasi. Kemudian pilih tombol Cari. Maka akan dilakukan proses perhitungan seperti yang tertera pada Gambar 4.11.
88
Gambar 4.11 Tampilan TSP Setelah Dijalankan Kemudian jika ingin melihat grafik koordinat alamat tujuan pilih tombol Plot seperti tertera pada Gambar 4.12.
Gambar 4.12 Tampilan Grafik Rute Koordinat Alamat Tujuan
89
Setelah melakukan proses perhitungan sebanyak 10 kali maka hasil perhitungan dapat dilihat pada Gambar 4.13 setelah memilih tombol Hasil Uji.
Gambar 4.13 Hasil Uji pada Populasi 100 dan Generasi 100 Dan Gambar 4.14 merupakan data yang telah disimpan ke dalam Excel.
Gambar 4.14 Tampilan Data yang Telah Disimpan pada Excel Untuk tampilan Hasil Uji dan tampilan data yang telah disimpan pada excel selanjutnya dapat dilihat pada Lampiran 7. Kemudian hasil perhitungan
90
menggunakan populasi 100, generasi 100, probabilitas mutasi 0,1952 dan probabilitas crossover 0,71538 sebanyak 10 kali dapat dilihat pada Tabel 4.1 Tabel 4.1 Hasil Perhitungan menggunakan Populasi 100 dan Generasi 100 Panjang Fitness
Fitness
No
Waktu jalur terbaik
terbaik
rata-rata
Jalur terbaik (detik)
(Km) 1
0,0343
0,021
29,13
82,428
1-9-5-8-6-17-16-20-1112-13-14-10-22-15-2118-19-7-3-4-2-1
2
0,0308
0,0206
32,5
78,981
1-10-6-7-8-3-5-4-13-1211-18-15-14-16-17-9-1922-21-20-2-1
3
0,0321
0,0212
31,18
82,644
1-3-20-17-15-21-22-1618-19-9-5-13-14-11-122-4-6-8-10-7-1
4
0,0304
0,0207
32,93
80,883
1-3-2-7-9-21-22-17-1513-10-16-19-18-20-11-84-6-12-14-5-1
5
0,0324
0,0206
30,9
85,007
1-2-5-6-15-21-18-17-1413-22-10-9-4-3-11-2019-16-12-8-7-1
6
0,0317
0,0208
31,55
81,764
1-6-5-3-2-4-7-20-22-1615-13-18-19-12-14-11-
91
17-21-10-9-8-1 7
0,0324
0,0207
30,87
83,132
1-20-8-4-5-6-9-7-3-1617-14-13-10-11-12-1819-22-21-15-2-1
8
0,0326
0,0206
30,69
82,224
1-3-5-18-17-16-10-2122-20-14-11-12-8-9-4-67-15-13-19-2-1
9
0,0352
0,0212
28,38
84,012
1-5-6-7-8-9-16-22-3-411-12-13-15-21-17-1418-19-20-10-2-1
10
0,0311
0,0208
32,14
68,894
1-6-10-5-20-16-17-1122-21-13-14-12-9-7-815-18-19-3-4-2-1
Dari Tabel 4.1 diperoleh hasil rata-rata panjang jalur terbaik adalah 31,027 Km, nilai fitness terbaik yang terbesar adalah 0,0352, panjang jalur terpendek adalah 28,38 Km dan waktu eksekusi adalah 84,012 detik dengan jalur terbaiknya adalah
. 4.1.7.2 Perhitungan menggunakan masukan populasi 100 dan generasi 200 Hasil setelah dilakukan perhitungan menggunakan populasi 100, generasi 200, probabilitas mutasi 0,144121 dan probabilitas crossover 0.793136 sebanyak 10 kali pada Tabel 4.2.
92
Tabel 4.2 Hasil Perhitungan menggunakan Populasi 100 dan Generasi 200 Panjang Fitness
Fitness
terbaik
rata-rata
No
Waktu jalur terbaik
Jalur terbaik (detik)
(Km) 1
0,033557
0,021032
29,8
144,6498
1-2-5-6-16-13-14-1112-10-7-3-9-15-21-1918-22-17-20-4-8-1
2
0,032248
0,02065
31,01
142,8627
1-2-4-3-18-16-17-7-810-11-6-15-14-22-2120-19-13-12-5-9-1
3
0,032041
0,02093
31,21
142,726
1-2-12-20-17-13-8-6-53-4-9-10-11-7-21-1918-22-16-15-14-1
4
0,035002
0,021089
28,57
149,936
1-4-3-15-14-12-19-1813-22-16-17-21-20-116-5-9-7-8-10-2-1
5
0,034282
0,020981
29,17
155,2665
1-2-15-8-7-10-22-1716-18-20-11-12-13-1419-21-6-4-9-5-3-1
6
0,036873
0,020914
27,12
152,0769
1-2-5-8-10-15-14-13-7-
93
4-3-12-11-19-20-21-1716-22-18-9-6-1 7
0,034614
0,020563
28,89
152,686
1-2-10-14-16-5-8-7-915-13-19-20-17-18-2122-11-3-6-4-1
8
0,030826
0,020979
32,44
154,926
1-3-9-2-4-12-11-16-1513-21-22-8-5-6-7-1714-20-18-19-10-1
9
0,03639
0,020603
27,48
155,2225
1-2-4-8-7-9-5-16-2119-18-17-14-13-12-1522-20-11-10-3-6-1
10
0,034037
0,021053
29,38
152,3815
1-2-5-9-3-7-6-8-16-2118-14-17-15-13-19-2220-10-11-12-4-1
Dari Tabel 4.2 diperoleh hasil rata-rata panjang jalur terbaik adalah 29,507 Km, nilai fitness terbaik yang terbesar adalah 0,036873 panjang jalur terpendek adalah 27,12 Km dan waktu eksekusi adalah 152,0769 detik dengan jalur terbaiknya adalah 1-2-5-8-10-15-14-13-7-4-3-12-11-19-20-21-17-16-22-18-9-6-1
94
4.1.7.3 Perhitungan menggunakan masukan populasi 100 dan generasi 500 Hasil setelah dilakukan perhitungan menggunakan populasi 100, generasi 500, probabilitas mutasi 0.088359 dan probabilitas crossover 0.863904 sebanyak 10 kali pada Tabel 4.3. Tabel 4.3 Hasil Penghitungan menggunakan Populasi 100 dan Generasi 500 Panjang Fitness
Fitness
No
Waktu jalur terbaik
terbaik
rata-rata
Jalur terbaik (detik)
(Km) 1
0,03686
0,021092
27,13
362,0199
1-3-4-6-5-15-14-13-109-7-8-2-12-11-19-2021-22-16-18-17-1
2
0,03537
0,020912
28,27
353,1231
1-2-4-12-11-14-10-168-7-9-5-6-3-13-15-1920-17-18-21-22-1
3
0,033356 0,021082
29,98
355,9253
1-8-13-14-15-19-2122-10-11-12-7-2-3-4-56-9-20-17-18-16-1
4
0,033478 0,021248
29,87
361,8065
1-6-8-7-10-14-18-1619-20-11-12-22-21-93-5-17-15-13-4-2-1
5
0,037175 0,020736
26,9
381,8134
1-4-5-9-15-14-22-21-
95
17-12-11-16-19-18-2013-3-6-7-8-10-2-1 6
0,037608 0,021252
26,59
381,3105
1-9-8-6-5-20-22-21-1918-16-17-13-7-3-4-1015-14-12-11-2-1
7
0,03701
0,020978
27,02
362,2903
1-3-13-20-22-14-1510-7-8-19-18-17-1621-12-11-6-9-5-4-2-1
8
0,036443
0,02118
27,44
372,6351
1-3-7-8-11-17-21-1819-16-22-13-14-20-1510-9-12-4-5-6-2-1
9
0,040404 0,021187
24,75
358,1425
1-2-7-13-14-18-19-2221-20-17-16-15-12-118-10-3-4-5-9-6-1
10
0,034916 0,020846
28,64
361,9673
1-2-9-7-10-21-20-4-35-8-12-11-13-14-1517-22-18-16-19-6-1
Dari Tabel 4.3 diperoleh hasil rata-rata panjang jalur terbaik adalah 27,659 Km, nilai fitness terbaik yang terbesar adalah 0,040404, panjang jalur terpendek adalah 24,75 Km dan waktu eksekusi adalah 358,1425 detik dengan jalur terbaiknya adalah 1-2-7-13-14-18-19-22-21-20-17-16-15-12-11-8-10-3-4-5-9-6-1.
96
4.1.7.4 Perhitungan menggunakan masukan populasi 100 dan generasi 1000 Hasil setelah dilakukan perhitungan menggunakan populasi 100, generasi 1000, probabilitas mutasi 0.0870227 dan probabilitas crossover 0.86671 sebanyak 10 kali pada Tabel 4.4. Tabel 4.4 Hasil Penghitungan menggunakan Populasi 100 dan Generasi 1000 Panjang Fitness
Fitness
No
Waktu jalur terbaik
terbaik
rata-rata
Jalur terbaik (detik)
(Km) 1
0,036657 0,020571
27,28
850,1732 1-19-18-20-15-8-4-1016-21-22-17-13-14-1211-9-7-6-5-3-2-1
2
0,037893 0,021056
26,39
845,424
1-6-10-13-21-22-20-1718-19-16-11-12-14-152-3-4-5-9-8-7-1
3
0,039793 0,020735
25,13
766,3086 1-2-4-5-6-7-10-13-1214-15-16-11-17-20-1918-21-22-8-9-3-1
4
0,04029
0,021016
24,82
726,3575 1-2-3-6-9-4-7-8-16-1819-20-17-11-12-5-1015-14-13-21-22-1
5
0,039809 0,021154
25,12
740,2625 1-5-3-6-20-19-18-12-11-
97
8-7-9-10-15-14-13-2122-16-17-4-2-1 6
0,040833 0,021017
24,49
714,8976 1-2-4-7-8-9-22-12-1113-14-15-16-21-18-2019-17-10-5-6-3-1
7
0,037161 0,020851
26,91
752,0383 1-22-18-19-20-21-1617-8-7-4-11-12-3-5-1015-13-14-9-6-2-1
8
0,044189 0,021233
22,63
712,537
1-3-4-6-9-8-7-19-18-1617-20-21-22-15-12-1110-14-13-5-2-1
9
0,037147 0,020607
26,92
701,0468 1-4-13-14-9-17-15-2021-22-16-18-19-11-1210-3-5-6-8-7-2-1
10
0,039573 0,021569
25,27
1240,433 1-2-6-5-7-13-14-19-2015-17-11-12-16-21-2218-10-8-9-4-3-1
Dari Tabel 4.4 diperoleh hasil rata-rata panjang jalur terbaik adalah 25,496 Km, nilai fitness terbaik yang terbesar adalah 0,044189, panjang jalur terpendek adalah 22,63 Km dan waktu eksekusi adalah 712,537 detik dengan jalur terbaiknya adalah 1-3-4-6-9-8-7-19-18-16-17-20-21-22-15-12-11-10-14-13-5-2-1.
98
4.1.7.5 Perhitungan menggunakan masukan populasi 200 dan generasi 100 Hasil setelah dilakukan perhitungan menggunakan populasi 200, generasi 100, probabilitas mutasi 0.154458 dan probabilitas crossover 0.672989 sebanyak 10 kali pada Tabel 4.5. Tabel 4.5 Hasil Penghitungan menggunakan Populasi 200 dan Generasi 100 Panjang Fitness
Fitness
No
Waktu jalur terbaik
terbaik
rata-rata
Jalur terbaik (detik)
(Km) 1
0,034892 0,020604
28,66
107,7242
1-6-8-7-9-5-14-17-18-1916-20-22-21-11-10-3-1213-15-4-2-1
2
0,03358
0,020664
29,78
103,2903
1-13-15-9-8-17-16-22-1814-20-19-21-12-11-10-47-6-5-2-3-1
3
0,034977 0,020761
28,59
103,6012
1-4-5-9-7-6-8-18-17-1119-20-10-14-13-15-21-2216-12-3-2-1
4
0,033807 0,020844
29,58
103,3392
1-3-8-15-12-11-7-9-5-4-221-22-19-18-14-13-16-1720-10-6-1
5
0,032321 0,020573
30,94
103,9453
1-6-3-12-18-17-21-22-20-
99
19-13-11-10-4-9-5-7-816-15-14-2-1 6
0,032927 0,020659
30,37
103,2522
1-2-7-11-8-5-14-13-1822-17-19-16-21-20-12-1510-3-4-6-9-1
7
0,036483 0,020505
27,41
103,0078
1-4-9-5-10-22-21-17-168-7-20-19-18-11-13-1514-12-6-3-2-1
8
0,031496 0,020767
31,75
103,2374
1-5-3-2-15-20-19-17-1814-13-12-11-16-8-7-1022-21-4-6-9-1
9
0,032531 0,020535
30,74
109,64
1-2-14-18-20-19-22-1710-12-11-4-3-6-8-13-1516-21-9-7-5-1
10
0,031716 0,020581
31,53
116,1593
1-16-18-11-9-8-7-10-2117-22-20-12-19-14-13-156-4-5-3-2-1
Dari Tabel 4.5 diperoleh hasil rata-rata panjang jalur terbaik adalah 29,936 Km, nilai fitness terbaik yang terbesar adalah 0,036483, panjang jalur terpendek adalah 27,41 Km dan waktu eksekusi adalah 103,0078 detik dengan jalur terbaiknya adalah 1-4-9-5-10-22-21-17-16-8-7-20-19-18-11-13-15-14-12-6-3-2-1.
100
4.1.7.6 Perhitungan menggunakan masukan populasi 500 dan generasi 100 Hasil setelah dilakukan perhitungan menggunakan populasi 500, generasi 100, probabilitas mutasi 0.0878917 dan probabilitas crossover 0.643237 sebanyak 10 kali pada Tabel 4.6. Tabel 4.6 Hasil Penghitungan menggunakan Populasi 500 dan Generasi 100 Fitness
Fitness
Panjang jalur
Waktu
terbaik
rata-rata
terbaik (Km)
(detik)
0,03858
0,02078
25,92
No
1
Jalur terbaik
204,6904 1-3-4-6-8-12-11-19-2221-17-18-16-14-20-1015-13-7-9-5-2-1
2
0,038865 0,020514
25,73
207,185
1-2-3-5-9-7-8-19-22-2118-11-12-15-14-13-1020-17-16-4-6-1
3
0,035702 0,020516
28,01
204,1133 1-3-4-8-20-14-10-21-1713-12-11-15-22-16-1819-7-9-6-5-2-1
4
0,033434 0,020743
29,91
204,1437 1-5-6-4-11-12-3-8-9-719-13-14-15-10-22-1817-20-16-21-2-1
5
0,034483
0,02074
29
205,0101 1-2-5-8-16-19-18-17-1012-11-22-21-13-15-14-
101
4-9-6-7-20-3-1 6
0,03375
0,020801
29,63
205,4902 1-2-14-21-19-18-20-107-5-3-15-13-22-16-1711-12-6-4-9-8-1
7
0,033841 0,020599
29,55
217,1324 1-3-5-9-7-6-21-13-1816-20-22-19-17-12-118-14-15-10-4-2-1
8
0,033124 0,020642
30,19
217,2064 1-2-9-8-6-15-3-20-1912-11-13-14-17-18-1622-21-10-4-5-7-1
9
0,032798 0,020506
30,49
221,3337 1-3-11-12-13-14-15-2-65-20-21-16-17-4-7-8-910-19-18-22-1
10
0,03268
0,02071
30,6
224,266
1-7-14-15-11-12-13-9-816-10-21-20-19-22-1718-4-3-5-6-2-1
Dari Tabel 4.6 diperoleh hasil rata-rata panjang jalur terbaik adalah 28,903 Km, nilai fitness terbaik yang terbesar adalah 0,038865, panjang jalur terpendek adalah 25,73 Km dan waktu eksekusi adalah 207,185 detik dengan jalur terbaiknya adalah 1-2-3-5-9-7-8-19-22-21-18-11-12-15-14-13-10-20-17-16-4-6-1.
102
4.1.7.7 Perhitungan menggunakan masukan populasi 1000 dan generasi 100 Hasil setelah dilakukan perhitungan menggunakan populasi 1000, generasi 100, probabilitas mutasi 0.0863853 dan probabilitas crossover 0.640173 sebanyak 10 kali pada Tabel 4.7. Tabel 4.7 Hasil Penghitungan menggunakan Populasi 1000 dan Generasi 100 Panjang Fitness
Fitness
No
Waktu jalur terbaik
terbaik
rata-rata
Jalur terbaik (detik)
(Km) 1
0,032648 0,020608
30,63
424,4898
1-4-2-8-21-19-22-1718-16-11-12-20-15-1410-9-13-7-6-5-3-1
2
0,03375
0,020678
29,63
393,0661
1-2-3-8-21-20-22-7-54-13-15-17-16-19-1811-12-14-10-9-6-1
3
0,03488
0,020543
28,67
388,8935
1-2-11-12-7-22-21-1714-15-13-18-19-20-165-8-10-3-6-4-9-1
4
0,031949
0,020542
31,3
390,0017
1-3-4-7-12-19-20-6-521-17-16-18-22-8-1015-13-14-11-9-2-1
5
0,038256 0,020607
26,14
391,4639
1-9-13-14-19-22-21-
103
18-11-12-15-16-17-2010-6-4-3-7-8-5-2-1 6
0,03399
0,020685
29,42
391,2043
1-2-8-7-12-13-15-1617-18-19-20-22-11-2110-9-4-6-14-5-3-1
7
0,033047 0,020566
30,26
390,2064
1-6-2-10-20-14-13-1211-18-19-7-8-15-1622-21-17-5-9-3-4-1
8
0,032031
0,02054
31,22
405,1277
1-3-7-9-8-10-21-18-1112-20-19-14-13-17-156-5-22-16-4-2-1
9
0,03308
0,020549
30,23
408,1573
1-3-8-5-2-6-9-14-1315-22-20-11-12-10-721-17-18-19-16-4-1
10
0,035398 0,020656
28,25
410,5027
1-15-5-13-14-18-1920-17-16-22-21-8-3-912-11-10-7-6-4-2-1
Dari Tabel 4.7 diperoleh hasil rata-rata panjang jalur terbaik adalah 29,575 Km, nilai fitness terbaik yang terbesar adalah 0,038256, panjang jalur terpendek adalah 26,14 Km dan waktu eksekusi adalah 391,4639 detik dengan jalur terbaiknya adalah 1-9-13-14-19-22-21-18-11-12-15-16-17-20-10-6-4-3-7-8-5-2-1.
104
4.1.8 Analisis Penyelesaian Travelling Salesman Problem Menggunakan Aplikasi Algoritma Genetika dengan Teknik Kendali Logika Fuzzy dalam Pengiriman Surat dan Barang di PT. Pos Indonesia DC Tugu Semarang Dari hasil penelitian diperoleh bahwa solusi optimal permasalahan jaringan TSP dalam pengiriman surat dan Barang oleh PT. Pos ke rumah penerima barang di wilayah Kota Semarang, khususnya dalam penelitian ini mencangkup wilayah Kecamatan Ngaliyan dengan menggunakan variasi populasi dan generasi pada algoritma Genetika dengan Teknik Kendali Logika Fuzzy yang berbeda dapat dijelaskan pada Tabel 4.8.
Tabel 4.8 Tabel Hasil Panjang Jalur Terbaik Panjang Fitness No Populasi Generasi
Waktu jalur terbaik
terbaik
Jalur Terbaik (detik)
(Km) 1
100
100
0,0352
28,38
84,012
1-5-6-7-8-9-16-22-34-11-12-13-15-21-1714-18-19-20-10-2-1
2
100
200
0,036873
27,12
152,0769 1-2-5-8-10-15-14-137-4-3-12-11-19-20-2117-16-22-18-19-6-1
105
3
100
500
0,040404
24,75
358,1425 1-2-7-13-14-18-19-2221-20-17-16-15-1211-8-10-3-4-5-9-6-1
4
100
1000
0,044189
22,63
712,537
1-3-4-6-9-8-7-19-1816-17-20-21-22-1512-11-10-14-13-5-2-1
5
200
100
0,036483
27,41
103,0078 1-4-9-5-10-22-21-1716-8-7-20-19-18-1113-15-14-12-6-3-2-1
6
500
100
0,038865
25,73
207,185
1-2-3-5-9-7-8-19-2221-18-11-12-15-1413-10-20-17-16-4-6-1
7
1000
100
0,038256
26,14
391,4639 1-9-13-14-19-22-2118-11-12-15-16-1720-10-6-4-3-7-8-5-2-1
Dari ketujuh variasi populasi dan generasi pada algoritma genetika dengan teknik kendali logika fuzzy diperoleh bahwa dengan populasi 100 dan generasi 1000 mempunyai nilai fitness yang lebih tinggi serta panjang jalur yang lebih minimal dari yang lain. Nilai fitness yang diperoleh adalah 0,044189, panjang jalur terbaik adalah 22,63 Km, waktu eksekusi adalah 712,537 detik dengan jalur terbaiknya adalah 1-3-4-6-9-8-7-19-18-16-17-20-21-22-15-12-11-10-14-13-5-2-1.
106
Gambar 4.15 menunjukkan proses perhitungan dengan panjang jalur terbaik 22,63 Km.
Gambar 4.15 Proses Perhitungan dengan Panjang Jalur Terbaik 22.63 Km Kemudian untuk analisa probabilitas crossover dan probabilitas mutasi dapat dijelaskan pada Tabel 4.9. Tabel 4.9 Tabel Hasil Probabilitas Mutasi dan Probabilitas Crossover No Populasi
Generasi
Probabilitas Mutasi
Probabilitas Crossover
Panjang jalur terbaik (Km)
1
100
100
0,1952
0,71538
28,38
2
100
200
0,144121
0.793136
27,12
3
100
500
0.088359
0.863904
24,75
4
100
1000
0.0870227
0.86671
22,63
5
200
100
0.154458
0.672989
27,41
107
6
500
100
0.0878917
0.643237
25,73
7
1000
100
0.0863853
0.640173
26,14
Pada Tabel 4.9 dapat dilihat dari populasi 100 dan generasi 1000, bahwa pada probabilitas mutasi bisa dikatakan paling kecil dibanding dengan keenam variasi yang lain. Kemudian untuk nilai probabilitas crossover pada populasi 100 dan generasi 1000 mempunyai nilai yang paling tinggi dibanding dengan nilai probabilitas crossover yang lainnya.
4.2 Pembahasan Berdasarkan hasil penelitian yang telah dilakukan di PT. Pos Indonesia DC Tugu Semarang diperoleh hasil pencarian koordinat titik lokasi penelitian dengan bantuan situs Wikimapia.org yang sudah terintegrasi dengan Google Maps menghasilkan koordinat yang cukup akurat. Hal ini dibuktikan dengan selisih yang tidak berbeda jauh ketika dilakukan sampel pencarian jarak secara manual oleh peneliti di lapangan. Selain itu, penggunaan bantuan situs Wikimapia.org dan Google Maps bisa menghemat waktu dan biaya dalam pencarian jarak antar lokasi penelitian. Ini membuktikan bahwa situs Wikimapia.org dan Google Maps layak dipilih untuk dijadikan suatu alat pencarian jarak antar lokasi. Hasil pencarian solusi optimal dengan algoritma genetika dengan teknik kendali logika fuzzy dilakukan dengan menggunakan bantuan aplikasi software Matlab. Proses penghitungan dihentikan pada generasi ke 100, 200, 500, dan 1000 dengan populasi 100, 200, 500, dan 1000. Hal ini karena diharapkan pada generasi
108
dan populasi tersebut didapatkan nilai fitness terbaik dan juga panjang jalur yang paling minimal. Solusi optimal dari permasalahan jaringan TSP menggunakan algoritma genetika dengan teknik kendali logika fuzzy pada penelitian ini menghasilkan rute terbaik pengiriman barang PT. Pos Indonesia DC Tugu Semarang ke rumah supplier yang tersebar di wilayah Kota Semarang khususnya Kecamatan Ngaliyan yaitu: Kantor Pos DC Tugu Semarang - Drs Arif Rosyidi (bengkel mobil senior) (Ruko Taman Beringin 3A-5) - Silvya Birrotun N (Bella Vista Regency G 10 RT 11/1 Beringin Ngaliyan) - Agung Priyambada (JL Akasia D 3/5 RT 6/1 Beringin Ngaliyan) - Supriyantono (JL Mega Permai IV/89 RT 5/2, Beringin, Ngaliyan) Fran Ardiansyah (JL Mega Raya 339-340 RT 8/7 Beringin Ngaliyan) - Lia Rosita (JL Mega Raya IV/306 No 306 Beringin RT 2/7 Kel Beringin Kec Ngaliyan) Amin Suwarno (Bukit Beringin Asri III Blok A No 344 Perumnas BUK) - Ony S (JL Beringin Asri Tengah IV/440 RT 6/11) - Veronica Maryati (JL Karo Raya No 18 RT 1/X Perumahan Pondok Beringin Tambakaji) - Prijo Handoko (JL Bligo No 8 RT 7/10 Tambakaji) - Galih Suci Pratama (Perum Beringin Asri No 1036 RT 05/12 Wonosari) - Fitri Retnowati (Asrama Putri PGSD UNNES Beringin) Suyanta (Kp Tegalsari RT 5/11 Tambakaji Ngaliyan) - Agnes Saptawati Nugrahaningsih (Bukit Beringin Lestari VI/ B 200 RT 4/14 0754 BDI DR Cipto) Hery Kartono (Graha Beringin Mas Utara Dalam III) - Arif Lukman (Graha beringin mas SLT 1/8 RT 1 RW 11 semarang 50111) - Adi Sumartono (Beringin Putih Blok D I/10 RT 1/9 Ngaliyan) - Tuwadi (Perumnas Beringin Blok A 99 VI No 164 Ngaliyan) - D Wahyu Supriyadi (Bukit Beringin Lestari JL Bukit
109
Beringin Lestari Selatan GG 13 RT 10/11 Blok G/110 Gondoriyo) - Setyaningsih O (Cemara A1 No 19 Perumahan Beringin Indah 0711 BDI MT HARYONO) Jamaludin (Kapri Bawah 11 RT 9/10 Tambakaji) - Kantor Pos DC Tugu Semarang, dengan jarak yang ditempuh 22,63 Km. Berdasarkan hasil pencarian solusi optimal dari jaringan TSP dalam pengiriman barang PT. Pos Indonesia DC Tugu Semarang ke rumah supplier di wilayah Kecamatan Ngaliyan kota Semarang diperoleh solusi optimal menggunakan algoritma genetika dengan teknik kendali logika fuzzy dengan populasi 100 dan generasi 1000 menghasilkan solusi optimal yang paling baik dibandingkan dengan 6 variasi lain. Dengan demikian, maka penggunaan algoritma genetika dengan teknik kendali logika fuzzy dengan populasi 100 dan generasi 1000 dijadikan pilihan pada penyelesaian masalah optimasi terutama pada permasalahan TSP. Keunggulan dari aplikasi ini adalah solusi dapat diperoleh kapanpun karena solusi dihasilkan pada generasi ke berapapun, algoritma genetika dengan teknik kendali logika fuzzy tidak harus membutuhkan waktu yang lama karena tidak semua kemungkinan dicoba, tergantung pada kriteria berakhirnya, algoritma pencarian konvensional dilakukan apabila jumlah n kecil, tapi jika n nya banyak maka akan memakan banyak waktu untuk penyelesaian dibandingkan algoritma genetik dengan teknik kendali logika fuzzy. Untuk kelemahannya terletak pada sifatnya yang random sehingga untuk mengidentifikasi kapan hasil paling optimal muncul tidak diketahui pada masukan generasi dan populasi keberapa.
BAB 5 PENUTUP 5.1 Simpulan 1. Hasil pencarian jarak minimum berdasarkan analisis perhitungan masalah jaringan TSP pada pengiriman surat dan barang PT. Pos Indonesia DC Tugu Semarang menggunakan algoritma genetika melalui teknik kendali logika fuzzy menggunakan populasi 100 dan generasi 1000 menghasilkan solusi optimal yaitu 22,63 Km. Hasil tersebut lebih baik dari 6 variasi populasi dan generasi lain. 2. Hasil perhitungan masalah Solusi optimal dari permasalahan jaringan TSP menggunakan algoritma genetika dengan teknik kendali logika fuzzy pada penelitian ini menghasilkan rute terbaik pengiriman surat dan barang PT. Pos Indonesia DC Tugu Semarang ke rumah supplier yang tersebar di wilayah Kecamatan Ngaliyan Kota Semarang yaitu: “Kantor Pos DC Tugu Semarang - Drs Arif Rosyidi (Ruko Taman Beringin 3A-5) - Silvya Birrotun N (Bella Vista Regency G 10 RT 11/1 Beringin Ngaliyan) - Agung Priyambada (JL Akasia D 3/5 RT 6/1 Beringin Ngaliyan) - Supriyantono (JL Mega Permai IV/89 RT 5/2, Beringin, Ngaliyan) - Fran Ardiansyah (JL Mega Raya 339340 RT 8/7 Beringin Ngaliyan) - Lia Rosita (JL Mega Raya IV/306 No 306 Beringin RT 2/7 Kel Beringin Kec Ngaliyan) - Amin Suwarno (Bukit Beringin Asri III Blok A No 344 Perumnas BUK) - Ony S (JL Beringin Asri Tengah IV/440 RT 6/11) - Veronica Maryati (JL Karo Raya No 18 RT 1/X
110
111
Perumahan Pondok Beringin Tambakaji) - Prijo Handoko (JL Bligo No 8 RT 7/10 Tambakaji) - Galih Suci Pratama (Perum Beringin Asri No 1036 RT 05/12 Wonosari) - Fitri Retnowati (Asrama Putri PGSD UNNES Beringin) Suyanta (Kp Tegalsari RT 5/11 Tambakaji Ngaliyan) - Agnes Saptawati Nugrahaningsih (Bukit Beringin Lestari VI/ B 200 RT 4/14 0754 BDI DR Cipto) - Hery Kartono (Graha Beringin Mas Utara Dalam III) - Arif Lukman (Graha beringin mas SLT 1/8 RT 1 RW 11 semarang 50111) - Adi Sumartono (Beringin Putih Blok D I/10 RT 1/9 Ngaliyan) - Tuwadi (Perumnas Beringin Blok A 99 VI No 164 Ngaliyan) - D Wahyu Supriyadi (Bukit Beringin Lestari JL Bukit Beringin Lestari Selatan GG 13 RT 10/11 Blok G/110 Gondoriyo) - Setyaningsih O (Cemara A1 No 19 Perumahan Beringin Indah 0711 BDI MT HARYONO) - Jamaludin (Kapri Bawah 11 RT 9/10 Tambakaji) - Kantor Pos DC Tugu Semarang” dengan jarak yang ditempuh 22,63 Km.
5.2 Saran 1.
Diharapkan untuk PT. Pos Indonesia DC Tugu Semarang dapat memakai algoritma genetika dengan teknik kendali logika fuzzy supaya dapat mengoptimalkan jarak dan rute yang ditempuh.
2.
Diharapkan pada penelitian selanjutnya dapat mencoba algoritma dan software lain dalam penyelesaian permasalahan TSP, agar didapat perbandingan dalam mengatasi solusi yang lebih baik dan pencarian lebih cepat.
DAFTAR PUSTAKA Basuki, A, 2003a. Strategi Menggunakan Algoritma Genetika. Tersedia di http://lecturer.eepisits.edu/~basuki/lecture/StrategiAlgoritmaGenetika.pdf[diakses 21-032014]. Basuki, A. 2003b. Algoritma Genetika Suatu Alternatif Penyelesaian Permasalahan Searching, Optimasi dan Machine Learning. Tersedia di http://lecturer.eepis-its.edu/~basuki/lecture/AlgoritmaGenetika.pdf [diakses 21-03-2014]. Bindu & P. Tanwar. 2012. Fuzzy Inspired Hybrid Genetic Approach to Optimize Travelling Salesman Problem. International Journal of Computer Science & Communication Network, 2(3): 416-420.Tersedia di http://www.ijcscn.com/Documents/Volumes/ vol2issue3/ijcscn2012020322.pdf [diakses 21-3-2014]. Budayasa, I.K. 2007. Teori Graph dan Aplikasinya. Surabaya: Unesa University Press. Desiani, A. & Arhani, M. 2006 Konsep Kecerdasan Buatan. Yogyakarta: Andi Offset. Firmansyah, A. 2007. Dasar-dasar Pemograman MATLAB. IlmuKomputer.com. Kusumadewi, S. 2003. Artificial Intelligence: Teknik dan Aplikasinya. Yogyakarta: Graha Ilmu. Munir, R. 2005. Matematika Diskrit. Bandung: CV Informatika. Muzid, S. 2008. Pemanfaatan Algoritma Fuzzy Evolusi Untuk Penyelesaian Kasus Travelling Salesman Problem. Seminar Nasional Aplikasi Teknologi Informasi. Yogyakarta: Universitas Islam Indonesia. Online. Tersedia di http://journal.uii.ac.id/index.php/Snati/article/ view/556/480 [diakses 13-4- 2013]. Pandian, P. & G. Natarajan. 2010. A New Algorithm for Finding Optimal Solution for Fuzzy Transportation Problem. Applied Mathematical Science. 2: 79-90. Rosen, K.H. 2003. Discrete Mathematics and Its Applications. Fifth Edition. New York: McGraw-Hill.
112
Siang, J. J., 2002. Matematika Diskrit dan Aplikasinya pada Ilmu Komputer. Yogyakarta: ANDI. Wibowo, M.A. 2009. Aplikasi Algoritma Genetika Untuk Penjadwalan Mata Kuliah. Semarang: FMIPA UNDIP. Widodo, Prabowo. 2012. Penerapan Soft Computing Dengan MATLAB. Bandung: Rekayasa Sains. Zulfikar, N. 2008. Aplikasi Algoritma Genetika untuk Mencari Rute Terpendek NBuah Node. Skripsi. FTIK Unikom.
113
114
Lampiran 1
Nama, Alamat, dan Kode Lokasi Penerimaan Surat dan Barang dari PT. Pos Indonesia DC Tugu Semarang No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Nama Penerima Kantor Pos Kecamatan Tugu Jamaludin Drs Arif Rosyidi Silvya Birrotun N Setyaningsih O Agung Priyambada Lia Rosita Fran Ardiansyah Supriyantono Adi Sumartono Arif Lukman Hery Kartono D Wahyu Supriyadi Tuwadi Agnes Saptawati N Veronica Maryati Prijo Handoko Ony S Amin Suwarno Galih Suci Pratama Fitri Retnowati Suyanta
Alamat Kantor Pos Kecamatan Tugu Kapri Bawah 11 RT 9/10 Tambakaji Ruko Taman Beringin 3A-5 Ngaliyan Bella Vista Regency G 10 RT 11/1 Beringin Ngaliyan Cemara A1 No 19 Perumahan Beringin Indah 0711 BDI MT HARYONO Perumahan Beringin Indah JL Akasia D 3/5 RT 6/1 Beringin Ngaliyan JL Mega Raya IV/306 No 306 Beringin RT 2/7 Kel Beringin Kec Ngaliyan JL Mega Raya 339-340 RT 8/7 Beringin Ngaliyan JL Mega Permai IV/89 RT 5/2 Beringin Ngaliyan Beringin Putih Blok D I/10 RT 1/9 Ngaliyan Graha beringin mas SLT 1/8 RT 1 RW 11 semarang 50111 Graha Beringin Mas Utara Dalam III No 19 RT 7 RW 11 Ngaliyan JL Bukit Beringin Lestari Selatan GG 13 RT 10/11 Blok G/110 Gondoriyo Perumnas Beringin Blok A 99 VI No 164 Ngaliyan Bukit Beringin Lestari VI/ B 200 RT 4/14 0754 BDI DR Cipto JL Karo Raya No 18 RT 1/X Perumahan Pondok Beringin Tambakaji JL Bligo No 8 RT 7/10 Tambakaji JL Beringin Asri Tengah IV/440 RT 6/11 Bukit Beringin Asri III Blok A No 344 Perumnas BUK Perum Beringin Asri No 1036 RT 05/12 Wonosari Asrama Putri PGSD UNNES Beringin Kp Tegalsari RT 5/11 Tambakaji Ngaliyan
115
Kode Lokasi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Lampiran 2 Kode Lokasi, Koordinat X, Koordinat Y pada Alamat Penerima Surat dan Barang dari PT. Pos Indonesia DC Tugu Semarang Kode
Koordinat
No
Lokasi
Koordinat X
1
1
-6,9881626 110,3586517
2
2
-6,9961055 110,3445929
3
3
-6,9970559 110,3389910
4
4
-6,9985547 110,3374166
5
5
-6,9979265 110,3353017
6
6
-6,9984562 110,3352560
7
7
-6,9987837 110,3313119
8
8
-6,9982060 110,3322172
9
9
-6,9978492 110,3338560
10
10
-6,9963744 110,3275071
11
11
-6,9985308 110,3224486
12
12
-6,9975937 110,3227650
13
13
-6,9862258 110,3243850
14
14
-6,9868115 110,3265791
15
15
-6,9874824 110,3249323
16
16
-6,9860182 110,3310718
17
17
-6,9857519 110,3290950
18
18
-6,9841971 110,3235777
19
19
-6,9845645 110,3254123
20
20
-6,9874798 110,3278585
21
21
-6,9808693 110,3286766
22
22
-6,9802941 110,3308116
116
Y
Lampiran 3 Jarak Antartitik Koordinat Lokasi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
1 0 1,98 2,67 3,12 3,23 3,32 3,81 3,67 3,4 4,52 5,3 5,1 5,4 5,3 5,2 5,5 5,4 6 5,8 5,3 5,9 4,8
2 1,98 0 1,16 1,43 1,6 1,66 2,18 2,09 1,83 2,86 3,67 3,47 3,81 3,7 3,53 3,96 3,86 4,47 4,22 3,67 4,28 4,49
3 2,67 1,16 0 0,34 0,57 0,61 1,2 1,04 0,77 1,84 2,61 2,41 2,75 2,66 2,47 2,91 2,65 3,6 3,39 2,7 3,28 3,48
4 3,12 1,43 0,34 0 0,58 0,52 1,12 0,99 0,68 1,82 2,53 2,4 2,73 2,62 2,46 2,92 2,73 3,33 3,12 2,62 3,2 3,39
5 3,23 1,6 0,57 0,58 0 0,11 0,9 0,8 0,46 1,6 2,3 2,13 2,49 2,36 2,22 2,65 2,38 3,12 2,96 2,41 2,95 3,15
117
6 3,32 1,66 0,61 0,52 0,11 0 0,49 0,73 0,47 1,55 2,27 2,11 2,44 2,34 2,17 2,6 2,37 3,1 2,86 2,37 2,9 3,1
7 3,81 2,18 1,2 1,12 0,9 0,49 0 0,09 0,64 1,45 2,18 2 2,33 2,21 2,06 2,54 2,26 3,07 2,71 2,21 2,81 2,98
8 3,67 2,09 1,04 0,99 0,8 0,73 0,09 0 0,17 1,31 2,08 1,9 2,24 2,13 1,97 2,4 2,15 2,86 2,61 2,14 2,7 2,91
9 3,4 1,83 0,77 0,68 0,46 0,47 0,64 0,17 0 1,23 2,1 1,92 2,26 2,16 2 2,44 2,29 2,87 2,84 2,21 2,72 2,93
10 4,52 2,86 1,84 1,82 1,6 1,55 1,45 1,31 1,23 0 1,62 1,51 1,87 1,76 1,56 2,02 1,78 2,5 2,46 1,75 2,32 2,52
11 5,3 3,67 2,61 2,53 2,3 2,27 2,18 2,08 2,1 1,62 0 0,15 1,97 1,84 1,69 2,14 1,89 2,62 2,51 1,89 2,43 2,63
Lokasi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
12 5,1 3,47 2,41 2,4 2,13 2,11 2 1,9 1,92 1,51 0,15 0 1,56 1,68 1,52 1,98 1,73 2,46 2,35 1,73 2,27 2,47
13 5,4 3,81 2,75 2,73 2,49 2,44 2,33 2,24 2,26 1,87 1,97 1,56 0 0,22 0,38 1,61 1,36 2,12 2,03 1,32 1,95 2,17
14 5,3 3,7 2,66 2,62 2,36 2,34 2,21 2,13 2,16 1,76 1,84 1,68 0,22 0 0,17 1,49 1,25 1,98 1,88 1,2 1,8 2,05
15 5,2 3,53 2,47 2,46 2,22 2,17 2,06 1,97 2 1,56 1,69 1,52 0,38 0,17 0 1,1 1,09 1,82 1,72 1,04 1,64 1,89
16 5,5 3,96 2,91 2,92 2,65 2,6 2,54 2,4 2,44 2,02 2,14 1,98 1,61 1,49 1,1 0 0,19 0,74 0,69 0,7 0,53 0,78
118
17 5,4 3,86 2,65 2,73 2,38 2,37 2,26 2,15 2,29 1,78 1,89 1,73 1,36 1,25 1,09 0,19 0 0,7 0,87 0,42 0,78 1,03
18 6 4,47 3,6 3,33 3,12 3,1 3,07 2,86 2,87 2,5 2,62 2,46 2,12 1,98 1,82 0,74 0,7 0 0,13 1,2 1,06 1,29
19 5,8 4,22 3,39 3,12 2,96 2,86 2,71 2,61 2,84 2,46 2,51 2,35 2,03 1,88 1,72 0,69 0,87 0,13 0 0,26 0,97 1,2
20 5,3 3,67 2,7 2,62 2,41 2,37 2,21 2,14 2,21 1,75 1,89 1,73 1,32 1,2 1,04 0,7 0,42 1,2 0,26 0 0,66 1,19
21 5,9 4,28 3,28 3,2 2,95 2,9 2,81 2,7 2,72 2,32 2,43 2,27 1,95 1,8 1,64 0,53 0,78 1,06 0,97 0,66 0 0,29
22 4,8 4,49 3,48 3,39 3,15 3,1 2,98 2,91 2,93 2,52 2,63 2,47 2,17 2,05 1,89 0,78 1,03 1,29 1,2 1,19 0,29 0
Lampiran 4 Tampilan Simulasi Matlab 1. Tampilan Menu Utama
2. Tampilan Menu About
119
3. Tampilan Menu Help
4. Tampilan Menu TSP Fuzzy
120
Lampiran 5 Kode Program dengan Matlab Haldepan.m: function varargout = haldepan(varargin) % HALDEPAN M-file for haldepan.fig % HALDEPAN, by itself, creates a new HALDEPAN or raises the existing % singleton*. % % H = HALDEPAN returns the handle to a new HALDEPAN or the handle to % the existing singleton*. % % HALDEPAN('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in HALDEPAN.M with the given input arguments. % % HALDEPAN('Property','Value',...) creates a new HALDEPAN or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before haldepan_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to haldepan_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help haldepan % Last Modified by GUIDE v2.5 14-Jul-2014 21:36:23 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @haldepan_OpeningFcn, ... 'gui_OutputFcn', @haldepan_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
121
else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before haldepan is made visible. function haldepan_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to haldepan (see VARARGIN) axes(handles.ftunnes); image(imread('unnes1.png')); axis('off'); axes(handles.axes21); image(imread('kantorpos.jpg')); axis('off'); axes(handles.axes22); image(imread('kantorpos2.jpg')); axis('off'); % Choose default command line output for haldepan % Update handles structure guidata(hObject, handles); % UIWAIT makes haldepan wait for user response (see UIRESUME) % uiwait(handles.haldepan); % --- Outputs from this function are returned to the command line. function varargout = haldepan_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure
% ------------------------------------------------------------------function menu_file_Callback(hObject, eventdata, handles) % hObject handle to menu_file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
122
% ------------------------------------------------------------------function menu_file_TSP_Fuzzy_Callback(hObject, eventdata, handles) % hObject handle to menu_file_TSP_Fuzzy (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(handles.haldepan); TSPFuzzy % ------------------------------------------------------------------function file_menu_exit_Callback(hObject, eventdata, handles) % hObject handle to menu_file_exit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pos_size=get(handles.haldepan,'position'); user_response=tanya_keluar_utama('Exit','Konfirmasi Mengakhiri Program'); switch user_response case {'No'} case 'Yes' delete(handles.haldepan); close end % ------------------------------------------------------------------function menu_help_Callback(hObject, eventdata, handles) % hObject handle to menu_help (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(handles.haldepan); menuhelp % --- Executes during object creation, after setting all properties. function ftunnes_CreateFcn(hObject, eventdata, handles) % hObject handle to ftunnes (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate ftunnes
% ------------------------------------------------------------------function Untitled_2_Callback(hObject, eventdata, handles)
123
% hObject % eventdata MATLAB % handles
handle to menu_help (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% ------------------------------------------------------------------function menu_about_Callback(hObject, eventdata, handles) % hObject handle to menu_about (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(handles.haldepan); menuabout % --- Executes on mouse press over axes background. function ftunnes_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to ftunnes (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
FisEvolusi.m b=newfis('evolusi'); b.input(1).name='populasi'; b.input(2).name='generasi'; b.output(1).name='probcrossover'; b.output(2).name='probmutasi'; b.input(1).range=[0 1000]; b.input(2).range=[0 1000]; b.output(1).range=[0.6 0.9]; b.output(2).range=[0 0.25]; b.input(1).mf(1).name='small'; b.input(1).mf(1).type='zmf'; b.input(1).mf(1).params=[50 250]; b.input(1).mf(2).name='medium'; b.input(1).mf(2).type='gaussmf'; b.input(1).mf(2).params=[80 275]; b.input(1).mf(3).name='large'; b.input(1).mf(3).type='smf'; b.input(1).mf(3).params=[350 500]; b.input(2).mf(1).name='short'; b.input(2).mf(1).type='zmf'; b.input(2).mf(1).params=[50 200]; b.input(2).mf(2).name='medium'; b.input(2).mf(2).type='gaussmf'; b.input(2).mf(2).params=[80 275]; b.input(2).mf(3).name='long'; b.input(2).mf(3).type='smf'; b.input(2).mf(3).params=[350 500]; b.output(1).mf(1).name='small'; b.output(1).mf(1).type='zmf';
124
b.output(1).mf(1).params=[0.625 0.7]; b.output(1).mf(2).name='medium'; b.output(1).mf(2).type='trapmf'; b.output(1).mf(2).params=[0.63 0.7 0.72 0.78]; b.output(1).mf(3).name='large'; b.output(1).mf(3).type='trapmf'; b.output(1).mf(3).params=[0.72 0.78 0.8 0.87]; b.output(1).mf(4).name='verylarge'; b.output(1).mf(4).type='smf'; b.output(1).mf(4).params=[0.8 0.875]; b.output(2).mf(1).name='verysmall'; b.output(2).mf(1).type='zmf'; b.output(2).mf(1).params=[0.025 0.1]; b.output(2).mf(2).name='small'; b.output(2).mf(2).type='trapmf'; b.output(2).mf(2).params=[0.047 0.083 0.1 0.14]; b.output(2).mf(3).name='medium'; b.output(2).mf(3).type='trapmf'; b.output(2).mf(3).params=[0.1 0.14 0.167 0.2]; b.output(2).mf(4).name='large'; b.output(2).mf(4).type='smf'; b.output(2).mf(4).params=[0.15 0.225]; b.rule(1).antecedent=[1 1]; b.rule(1).connection=1; b.rule(1).consequent=[2 4]; b.rule(1).connection=1; b.rule(1).weight=1; b.rule(2).antecedent=[2 1]; b.rule(2).connection=1; b.rule(2).consequent=[1 3]; b.rule(2).connection=1; b.rule(2).weight=1; b.rule(3).antecedent=[3 1]; b.rule(3).connection=1; b.rule(3).consequent=[1 2]; b.rule(3).connection=1; b.rule(3).weight=1; b.rule(4).antecedent=[1 2]; b.rule(4).connection=1; b.rule(4).consequent=[3 3]; b.rule(4).connection=1; b.rule(4).weight=1; b.rule(5).antecedent=[2 2]; b.rule(5).connection=1; b.rule(5).consequent=[3 2]; b.rule(5).connection=1; b.rule(5).weight=1; b.rule(6).antecedent=[3 2]; b.rule(6).connection=1; b.rule(6).consequent=[2 1];
125
b.rule(6).connection=1; b.rule(6).weight=1; b.rule(7).antecedent=[1 3]; b.rule(7).connection=1; b.rule(7).consequent=[4 2]; b.rule(7).connection=1; b.rule(7).weight=1; b.rule(8).antecedent=[2 3]; b.rule(8).connection=1; b.rule(8).consequent=[4 1]; b.rule(8).connection=1; b.rule(8).weight=1; b.rule(9).antecedent=[3 3]; b.rule(9).connection=1; b.rule(9).consequent=[3 1]; b.rule(9).connection=1; b.rule(9).weight=1; evalfis([100 1000],b)
TSPInisialisasiPopulasi.m function Populasi = TSPInisiasiPopulasi(UkPop,JumGen) for ii=1:UkPop, [Xval,Ind] = sort(rand(1,JumGen)); Populasi(ii,:) = Ind; end
TSPEvaluasiIndividu.m function fitness = TSPEvaluasiIndividu(Kromosom,JumGen,XYkota) TB = 0; load jr for ii=1:JumGen-1 a=jr(Kromosom(ii),Kromosom(ii+1)); TB = TB + a; end; % jalur harus kembali ke kota asal TB = TB + jr(Kromosom(JumGen),Kromosom(1)); fitness = 1/TB;
LinierFitnessRanking.m function LFR = LinearFitnessRanking(UkPop,Fitness,MaxF,MinF) [SF,IndF] =sort(Fitness); for rr=1:UkPop LFR(IndF(UkPop-rr+1)) = MaxF-(MaxF-MinF)*((rr-1)/(UkPop-1)); End
126
Roulettewheel.m function Pindex = RouletteWheel(UkPop,LinearFitness) JumFitness=sum(LinearFitness); KumulatifFitness=0; RN =rand; ii=1; while ii <= UkPop KumulatifFitness = KumulatifFitness + LinearFitness(ii); if (KumulatifFitness/JumFitness) > RN Pindex = ii; break; end ii = ii+1; end
TSPPindahSilang.m function Anak = TSPPindahsilang(Bapak,Ibu,JumGen) cp1 = 1 + fix(rand*(JumGen-1)); cp2 = 1 + fix(rand*(JumGen-1)); while cp2==cp1, cp2 = 1 + fix(rand*(JumGen-1)); end if cp1 < cp2, cps = cp1; cpd = cp2; else cps = cp2; cpd = cp1; % else % cps = cp2; % cpd = cp1; end Anak(1,cps+1:cpd) = Ibu(cps+1:cpd); Anak(2,cps+1:cpd) = Bapak(cps+1:cpd); SisaGenbapak = []; SisaGenIbu = []; for ii=1:JumGen if ~ismember(Bapak(ii),Anak(1,:)) SisaGenbapak = [SisaGenbapak Bapak(ii)]; end if ~ismember(Ibu(ii),Anak(2,:)) SisaGenIbu = [SisaGenIbu Ibu(ii)]; end end Anak(1,cpd+1:JumGen) = SisaGenbapak(1:JumGen-cpd); Anak(1,1:cps)=SisaGenbapak(1+JumGen-cpd:length(SisaGenbapak)); Anak(2,cpd+1:JumGen) = SisaGenIbu(1:JumGen-cpd); Anak(2,1:cps) = SisaGenIbu(1+JumGen-cpd:length(SisaGenIbu));
127
TSPMutasi.m function MutKrom = TSPMutasi(Kromosom,JumGen,Pmutasi) MutKrom = Kromosom; for ii=1:JumGen, if rand
TSPFuzzy.m function varargout = TSPFuzzy(varargin) % TSPFUZZY M-file for TSPFuzzy.fig % TSPFUZZY, by itself, creates a new TSPFUZZY or raises the existing % singleton*. % % H = TSPFUZZY returns the handle to a new TSPFUZZY or the handle to % the existing singleton*. % % TSPFUZZY('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in TSPFUZZY.M with the given input arguments. % % TSPFUZZY('Property','Value',...) creates a new TSPFUZZY or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before TSPFuzzy_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to TSPFuzzy_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help TSPFuzzy % Last Modified by GUIDE v2.5 14-Jul-2014 21:43:17
128
% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @TSPFuzzy_OpeningFcn, ... 'gui_OutputFcn', @TSPFuzzy_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before TSPFuzzy is made visible. function TSPFuzzy_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to TSPFuzzy (see VARARGIN) % Choose default command line output for TSPFuzzy handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes TSPFuzzy wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = TSPFuzzy_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in tmbcari. function tmbcari_Callback(hObject, eventdata, handles) % hObject handle to tmbcari (see GCBO)
129
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tic axes(handles.axes1) cla reset global XYkota XYkota whos XYkota jr=xlsread('jaraktitik.xlsx',1,'B2:W23'); save jr jr clc; JumGen = length(XYkota(:,1)); UkPop = str2num(get(handles.UkPop,'string')); Psilang = str2num(get(handles.Psilang,'string')); Pmutasi = str2num(get(handles.Pmutasi,'string')); MaxG = str2num(get(handles.MaxG,'string')); Populasi = TSPInisialisasiPopulasi(UkPop,JumGen); MaxF= TSPEvaluasiIndividu(Populasi(1,:),JumGen,XYkota) panjangh=(1/MaxF)/2 Fthreshold = 1/panjangh; Bgraf = Fthreshold; hold on axis([1 MaxG+20 0 Bgraf]); hbestplot1 = plot(1:MaxG+20,zeros(1,MaxG+20),'r'); hbestplot2 = plot(1:MaxG+20,zeros(1,MaxG+20),'b'); htext1=text(0.6*MaxG,0.30*Bgraf,sprintf('Fitness terbaik: %7.6f',0.0)); htext2=text(0.6*MaxG,0.25*Bgraf,sprintf('Fitness rata-rata: %7.6f',0.0)); htext3=text(0.6*MaxG,0.20*Bgraf,sprintf('Panjang Jalur terbaik: %7.3f',0.0)); htext4=text(0.6*MaxG,0.15*Bgraf,sprintf('Probabilitas Mutasi: %4.3f',0.0)); htext5=text(0.6*MaxG,0.10*Bgraf,sprintf('Probabilitas Crossover: %4.3f',0.0)); htext6=text(0.6*MaxG,0.05*Bgraf,sprintf('Waktu Eksekusi: %4.3f',0.0)); xlabel('Generasi'); ylabel('Fitness'); hold off axes(handles.axes1) drawnow; Populasi = TSPInisialisasiPopulasi(UkPop,JumGen); for generasi=1:MaxG MaxF = TSPEvaluasiIndividu(Populasi(1,:),JumGen,XYkota) MinF=MaxF; IndeksIndividuTerbaik = 1; for ii=1:UkPop Fitness(ii) = TSPEvaluasiIndividu(Populasi(ii,:),JumGen,XYkota);
130
if (Fitness(ii) >MaxF), MaxF = Fitness(ii); IndeksIndividuTerbaik=ii; JalurTerbaik=Populasi(ii,:) end end axes(handles.axes1) FitnessRataRata=mean(Fitness); plotvector1=get(hbestplot1,'YData'); plotvector1(generasi)=MaxF; set(hbestplot1,'YData',plotvector1); plotvector2=get(hbestplot2,'YData'); plotvector2(generasi)=FitnessRataRata; set(hbestplot2,'YData',plotvector2); set(htext1,'string',sprintf('Fitness terbaik: %7.6f',MaxF)); set(htext2,'string',sprintf('Fitness rata-rata: %7.6f', FitnessRataRata)); set(htext3,'string',sprintf('Panjang jalur terbaik: %7.3f Km', 1/MaxF)); set(htext4,'String',sprintf('Probabilitas Mutasi: %4.3f',Pmutasi)); set(htext5,'String',sprintf('Probabilitas Crossover: %4.3f',Psilang));
legend('fitness terbaik','fitness rata-rata') drawnow if MaxF > Fthreshold, break; end TemPopulasi = Populasi; if mod(UkPop,2)==0, IterasiMulai=3; TemPopulasi(1,:)=Populasi(IndeksIndividuTerbaik,:); TempPopulasi(1,:)=Populasi(IndeksIndividuTerbaik,:); else IterasiMulai=2; TempPopulasi(1,:) = Populasi(IndeksIndividuTerbaik,:); end LinearFitness = LinearFitnessRanking(UkPop,Fitness,MaxF,MinF); for jj=IterasiMulai:2:UkPop IP1=RouletteWheel(UkPop,LinearFitness); IP2=RouletteWheel(UkPop,LinearFitness); if (rand
131
for kk=IterasiMulai:UkPop, TemPopulasi(kk,:)=(TSPMutasi(TemPopulasi(kk,:),JumGen,Pmutasi)); end Populasi=TemPopulasi; end %Tanpa tanda ';' berarti menampilkan nilai dari variabel 'JalurTerbaik' JalurTerbaik1=num2str(JalurTerbaik); waktu=toc; set(htext6,'String',sprintf('Waktu Eksekusi: %4.3f detik',waktu)); %simpan variabel 'JalurTerbaik' ke dalam file JalurTerbaik.mat save JalurTerbaik.mat JalurTerbaik set(handles.jater,'string',JalurTerbaik1); save XYkota XYkota load hasiluji hasiluji2=[ MaxF,FitnessRataRata,1/MaxF,waktu,JalurTerbaik] hasiluji=[hasiluji;hasiluji2]; save hasiluji hasiluji function XYkota_Callback(hObject, eventdata, handles) % hObject handle to XYkota (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of XYkota as text % str2double(get(hObject,'String')) returns contents of XYkota as a double % --- Executes during object creation, after setting all properties. function XYkota_CreateFcn(hObject, eventdata, handles) % hObject handle to XYkota (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function UkPop_Callback(hObject, eventdata, handles) % hObject handle to UkPop (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
132
% Hints: get(hObject,'String') returns contents of UkPop as text % str2double(get(hObject,'String')) returns contents of UkPop as a double % --- Executes during object creation, after setting all properties. function UkPop_CreateFcn(hObject, eventdata, handles) % hObject handle to UkPop (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function Psilang_Callback(hObject, eventdata, handles) % hObject handle to Psilang (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of Psilang as text % str2double(get(hObject,'String')) returns contents of Psilang as a double % --- Executes during object creation, after setting all properties. function Psilang_CreateFcn(hObject, eventdata, handles) % hObject handle to Psilang (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function Pmutasi_Callback(hObject, eventdata, handles) % hObject handle to Pmutasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
133
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Pmutasi as text % str2double(get(hObject,'String')) returns contents of Pmutasi as a double % --- Executes during object creation, after setting all properties. function Pmutasi_CreateFcn(hObject, eventdata, handles) % hObject handle to Pmutasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function MaxG_Callback(hObject, eventdata, handles) % hObject handle to MaxG (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of MaxG as text % str2double(get(hObject,'String')) returns contents of MaxG as a double % --- Executes during object creation, after setting all properties. function MaxG_CreateFcn(hObject, eventdata, handles) % hObject handle to MaxG (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function PanjJalHarp_Callback(hObject, eventdata, handles) % hObject handle to PanjJalHarp (see GCBO)
134
% eventdata MATLAB % handles
reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of PanjJalHarp as text % str2double(get(hObject,'String')) returns contents of PanjJalHarp as a double % --- Executes during object creation, after setting all properties. function PanjJalHarp_CreateFcn(hObject, eventdata, handles) % hObject handle to PanjJalHarp (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function Fthreshold_Callback(hObject, eventdata, handles) % hObject handle to Fthreshold (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of Fthreshold as text % str2double(get(hObject,'String')) returns contents of Fthreshold as a double % --- Executes during object creation, after setting all properties. function Fthreshold_CreateFcn(hObject, eventdata, handles) % hObject handle to Fthreshold (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
135
% --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.axes1,'plot','');
function jater_Callback(hObject, eventdata, handles) % hObject handle to jater (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of jater as text % str2double(get(hObject,'String')) returns contents of jater as a double % --- Executes during object creation, after setting all properties. function jater_CreateFcn(hObject, eventdata, handles) % hObject handle to jater (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in menu. function menu_Callback(hObject, eventdata, handles) % hObject handle to menu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pos_size=get(handles.figure1,'position'); user_response=tanya_kembali_utama('Menu','Konfirmasi Kembali ke Menu Utama'); switch user_response case ('No') case ('Yes') delete(handles.figure1); haldepan end
136
% --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pop=str2num(get(handles.UkPop,'string')); gen=str2num(get(handles.MaxG,'string')); b=readfis('evolusi2'); %sug_fis=mam2sug(b) ; hs=evalfis ([pop gen],b); set(handles.Psilang,'string',hs(:,1)); set(handles.Pmutasi,'string',hs(:,2)); % --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [nama_file1,nama_path1]=uigetfile({'*.xlsx';'*.xls'},'Buka File Excel'); if isequal(nama_file1,0) return; end global XYkota [num1, txt1] = xlsread(nama_file1, 1, 'A3:B1000'); XYkota =num1; whos XYkota % Tampilkan Nilai Training t = uitable(handles.uitable1); set(t,'Data',XYkota); load JalurTerbaik load XYkota figure(1) h=XYkota; urt=JalurTerbaik; x1=[] y2=[] for nn=urt ; p=h(nn,:) x=p(1,1) y=p(1,2) plot(x,y,'*r') hold on x1=[x1 x] y2=[y2 y] text(x,y,[' \leftarrow', num2str(nn)] ,'FontSize',9) end hold on
137
x1=[x1,x1(1)] y2=[y2,y2(1)] figure(1) %plot(x1,y2,'-r') xlabel('koordinat x') ylabel('koordinat y') title('PLOT KOORDINAT') % --- Executes on button press in pbjlr. function pbjlr_Callback(hObject, eventdata, handles) % hObject handle to pbjlr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load JalurTerbaik load XYkota figure(1) h=XYkota; urt=JalurTerbaik; x1=[] y2=[] for nn=urt ; p=h(nn,:) x=p(1,1) y=p(1,2) plot(x,y,'*r') hold on pause(0.2) x1=[x1 x] y2=[y2 y] text(x,y,[' \leftarrow', num2str(nn)] ,'FontSize',9) end hold on x1=[x1,x1(1)] y2=[y2,y2(1)] figure(1) plot(x1,y2,'-r') xlabel('koordinat x') ylabel('koordinat y') title('PLOT KOORDINAT') % --- Executes on button press in pushbutton10. function pushbutton10_Callback(hObject, eventdata, handles) % hObject handle to pushbutton10 (see GCBO)
138
% eventdata MATLAB % handles hasil_uji
reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties. function figure1_CreateFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes on mouse press over axes background. function ftunnes_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to ftunnes (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function ftunnes_CreateFcn(hObject, eventdata, handles) % hObject handle to ftunnes (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate ftunnes % --- Executes when user attempts to close figure1. function figure1_CloseRequestFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: delete(hObject) closes the figure delete(hObject);
139
Lampiran 6
Tampilan dan Hasil Uji (Excel) dengan Pengujian 10 kali
Populasi 100 dan Generasi 100
140
Populasi 100 dan Generasi 200
Populasi 100 dan Generasi 500
141
Populasi 100 dan Generasi 1000
142
Populasi 200 dan Generasi 100
143
Populasi 500 dan Generasi 100
144
Populasi 1000 dan Generasi 100
145
Lampiran 7
Tampilan Graf Rute Terbaik Pengiriman Surat dan Barang PT. Pos Indonesia DC Tugu Semarang
146
Lampiran 8 TABEL POPULASI AWAL Ukpop: 100 Pc: 1.0 MaxGen: 100 Panjang Kromosom:
N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
22
Bentuk Kromosom 18 16 11 17 19 14 12 21 5 2 20 13 4 8 10 22 19 6 14 2 13 7 10 20 15 16 8 17 1 5 17 21 10 5 22 15 14 6 3 11 9 8 4 12 13 15 5 3 14 12 1 18 7 17 20 21 6 2 13 9 6 15 13 16 18 22 8 3 4 12 7 11 17 2 14 15 9 10 11 21 12 16 18 22 7 6 2 17 20 4 1 11 4 3 6 13 19 8 5 17 14 7 22 15 21 7 22 4 15 6 3 11 19 12 18 20 13 21 8 17 20 14 2 5 18 8 6 22 12 3 21 4 13 1 19 10 11 4 21 1 2 12 20 15 3 6 13 19 5 22 20 3 5 22 15 21 4 6 17 2 7 9 11 8 13 10 6 18 22 19 15 3 8 12 13 11 17 21 7 1 11 9 3 21 5 7 10 1 15 14 12 2 19 16 17 20 2 1 13 18 19 8 10 4 5 16 15 3 14 22 12 10 11 22 21 9 15 13 14 1 7 5 3 17 2 15 2 12 17 14 11 20 7 22 18 6 10 3 4 13 4 8 18 7 21 5 17 12 14 6 10 3 22 1 2 18 19 20 10 4 11 16 12 1 22 7 17 9 21 13 13 4 3 1 20 18 2 21 17 6 9 15 8 19 10 17 7 18 22 5 20 1 16 14 4 8 9 6 10 3 3 13 6 9 21 11 12 8 10 15 5 20 7 22 18 16 20 10 11 12 13 8 4 3 7 5 15 14 6 18 15 8 21 7 22 5 11 10 12 19 6 20 13 4 17 17 14 4 20 15 21 9 2 19 16 10 11 18 6 1 18 16 14 21 4 11 8 20 12 15 147 10 22 17 2 7 131
9 1 3 15 7 22 6 18 9 11 12 21 3 4 2 20 18 19 1 7 16 4 16 8 22 11 10 19 10 21 1 20 19 5 9 19 1 5 14 8 13 3 20 12 10 16 9 18 2 2 10 1 16 9 14 5 7 11 17 9 16 15 10 9 14 7 8 17 16 18 18 16 19 1 10 12 14 5 20 14 4 16 2 9 18 13 22 4 8 6 20 6 9 7 12 11 17 21 4 6 16 18 19 20 8 8 19 1 21 9 16 5 16 13 19 15 9 11 20 3 15 14 2 5 8 6 5 14 11 22 7 12 16 13 21 2 19 11 15 12 19 16 1 4 2 14 17 19 1 21 2 17 22 9 14 3 16 18 2 9 1 7 12 13 3 22 5 8 9 1 6 5 13 19 3
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
22 8 6 13 12 2 17 20 5 7 4 19 1 9 16 1 12 17 18 8 14 11 20 4 19 10 3 15 2 9 2 3 22 4 10 11 8 18 13 16 12 14 7 9 1 8 22 18 16 10 7 13 20 19 1 6 2 11 15 21 22 2 13 3 15 16 21 5 20 1 8 11 18 6 12 12 5 11 21 17 9 19 10 20 22 6 13 2 3 16 12 17 1 20 10 2 11 5 6 21 16 4 3 22 9 1 7 9 14 19 18 12 22 8 5 3 21 20 15 17 6 22 18 5 21 13 7 8 3 4 12 20 1 9 19 12 15 8 3 2 21 22 17 19 20 6 16 10 18 4 1 13 5 12 10 21 19 18 9 8 17 3 15 16 11 17 7 16 19 12 10 21 15 18 6 3 14 9 4 13 18 12 9 3 11 7 5 14 8 16 2 17 10 15 13 18 11 16 13 8 6 5 1 7 4 21 12 3 2 19 6 7 3 5 4 19 20 17 10 11 22 8 2 18 14 8 18 17 19 13 11 1 16 15 7 5 4 6 2 22 1 5 21 19 15 20 9 14 10 6 12 22 13 11 7 4 16 3 14 8 1 10 7 9 15 18 21 17 11 5 9 1 16 20 7 22 2 13 19 17 6 21 11 5 10 10 19 14 22 13 6 20 11 2 21 3 17 16 18 2 17 5 7 19 3 14 9 15 12 11 21 8 20 22 1 4 21 5 18 16 10 14 8 12 11 13 22 15 1 20 8 6 14 9 17 7 22 18 3 13 4 20 10 11 1 15 14 8 3 20 17 7 10 1 9 5 16 2 6 13 7 22 20 11 15 8 10 4 6 16 1 9 21 19 5 19 22 13 11 1 7 21 12 5 17 18 2 6 14 4
148
11 21 10 14 18 15 3 6 5 16 13 7 22 21 19 17 15 5 21 6 20 12 4 14 3 9 17 5 9 10 19 4 17 14 7 4 18 14 1 8 15 7 15 18 8 14 7 13 19 6 2 13 10 16 11 4 16 2 17 15 14 11 10 11 7 14 13 1 5 9 14 7 22 20 6 2 4 20 1 22 2 8 5 11 1 21 20 22 19 6 4 20 14 9 22 17 10 15 21 16 1 9 13 12 15 9 20 3 21 14 12 10 8 17 4 16 2 3 18 13 6 20 22 2 12 19 14 12 15 4 3 8 18 4 15 8 1 7 9 5 4 10 6 2 13 16 18 9 2 7 3 17 19 6 2 16 21 12 5 15 19 4 12 11 21 22 18 19 13 14 17 2 18 12 3 10 15 20 16 3 8 9
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
7 9 11 4 20 14 8 21 15 19 18 6 5 16 22 3 7 10 9 11 12 15 16 21 6 5 17 13 14 18 7 2 21 3 9 1 10 4 6 5 18 19 20 17 8 1 9 17 10 4 19 2 18 13 16 12 14 5 21 22 21 5 2 11 13 22 8 16 12 3 4 6 17 7 20 6 19 3 16 17 8 13 18 11 4 20 2 10 12 1 9 20 3 16 5 7 15 14 17 22 6 1 8 18 21 17 1 13 19 12 20 22 16 4 18 7 9 10 14 3 19 17 15 5 10 3 21 20 18 13 7 4 22 8 2 19 14 11 2 13 1 6 10 8 16 12 7 9 3 22 18 21 2 4 9 14 22 5 8 16 19 1 13 10 20 18 5 10 15 1 17 8 9 7 19 2 16 3 22 4 19 12 9 13 14 18 21 2 11 16 1 3 10 20 6 3 7 17 16 22 19 14 2 8 15 9 20 12 4 10 13 19 11 9 6 1 22 16 5 2 8 4 7 10 17 12 11 18 7 13 5 21 4 19 10 9 16 17 6 20 4 1 15 14 16 21 20 11 2 12 3 17 7 6 19 8 4 19 22 12 17 3 10 18 14 13 21 9 6 2 5 6 18 1 22 21 15 11 9 20 8 2 12 4 19 19 13 3 16 5 12 8 17 10 22 14 9 18 1 21 21 20 1 11 22 12 8 10 2 3 18 14 7 13 15 8 10 15 18 17 12 16 19 13 22 5 21 11 2 4 1 22 13 6 17 3 12 9 21 20 14 5 16 18 8 8 13 5 9 19 20 1 21 3 12 2 10 15 18 17 14 20 6 7 1 10 19 17 11 5 8 16 22 21 12 7 20 9 17 5 14 6 1 13 10 15 18 12 8 21
149
10 2 13 17 3 12 1 4 2 20 8 22 1 19 16 14 11 12 22 13 15 6 15 3 7 11 8 20 1 10 15 14 19 9 18 15 22 9 14 21 5 7 19 10 11 2 4 12 13 6 11 21 8 15 2 5 1 16 9 6 11 12 14 20 21 18 4 5 15 17 3 15 7 6 17 12 11 6 21 20 14 13 12 11 8 15 17 7 4 5 22 11 13 5 1 21 6 18 20 18 14 12 21 15 3 1 3 14 15 8 2 22 5 13 10 8 22 9 18 20 16 15 11 5 1 7 16 13 10 7 14 3 17 4 7 11 15 20 6 2 5 9 6 17 19 4 16 6 1 14 7 9 20 3 10 4 7 11 15 19 2 11 4 22 7 14 16 6 15 9 2 3 18 13 4 2 19 11 16 22 4 3
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
16 2 11 22 7 1 9 10 18 5 13 3 14 20 8 9 12 15 14 17 18 21 19 20 11 1 6 7 16 22 3 1 2 20 6 18 11 12 4 14 22 21 13 17 19 14 7 19 16 17 5 18 13 6 1 15 22 9 20 21 14 12 22 21 1 8 6 18 15 7 3 9 16 19 11 13 5 7 9 14 1 17 3 16 2 12 15 21 10 6 1 20 11 4 15 12 10 16 8 13 2 18 22 6 9 6 1 20 9 15 3 16 10 2 11 18 22 4 21 12 2 5 10 21 15 22 12 16 18 8 13 17 3 4 11 16 2 17 7 19 13 10 8 14 5 20 1 12 6 15 13 3 16 2 20 22 19 10 21 18 15 9 12 5 4 22 13 2 10 17 3 4 15 6 21 14 18 20 19 8 10 17 3 22 20 11 16 2 21 5 15 12 4 19 1 12 4 21 16 10 14 13 2 7 17 6 18 8 19 9 9 17 8 18 3 22 13 7 15 1 4 10 12 2 5 1 5 22 4 17 11 6 14 15 16 9 10 18 12 21 17 7 22 3 2 5 4 15 21 18 20 11 14 6 12 20 9 11 18 19 2 15 3 13 5 10 16 7 22 6 21 5 4 8 11 1 19 6 20 9 10 17 16 3 15 21 2 19 15 9 18 5 22 13 8 3 16 7 4 12 21 10 20 2 8 15 22 14 5 18 11 1 9 3 6 13 17 5 9 19 12 11 14 7 8 3 1 6 2 15 13 17 1 4 7 14 16 19 3 12 10 2 18 8 21
150
19 2 8 3 17 19 3 13 9 21 1 16 6 1 19 3 1 21 18 10 16 10 5
15 12 21 6 4 17 13 4 8 10 5 3 7 5 16 9 10 15 8 10 12 4 11 2 10 13 2 20 5 4 8 4 18 22 20 11 7 21 14 17 5 19 14 5 7 8 19 17 19 14 7 6 1 20 11 4 3 9 18 22 8 14 7 17 6 11 1 7 9 12 5 11 8 18 14 7 9 13 22 5 20 11 15 3 21 11 20 14 16 6 13 8 7 2 19 20 9 8 13 10 19 16 8 12 14 4 1 17 13 14 7 2 12 22 6 11 20 14 17 1 7 4 12 17 13 19 4 21 20 16 18 22 6 11 20 15 22 9
Lampiran 9 NILAI FITNESS DALAM SUATU POPULASI fitness [1] 0.029976 fitness [37] 0.020525 fitness [2] 0.023441 fitness [38] 0.019372 fitness [3] 0.020198 fitness [39] 0.022267 fitness [4] 0.02263 fitness [40] 0.021191 fitness [5] 0.018567 fitness [41] 0.021478 fitness [6] 0.020991 fitness [42] 0.022346 fitness [7] 0.018695 fitness [43] 0.019623 fitness [8] 0.020991 fitness [44] 0.020521 fitness [9] 0.020846 fitness [45] 0.019976 fitness [10] 0.023164 fitness [46] 0.023031 fitness [11] 0.019309 fitness [47] 0.017587 fitness [12] 0.019482 fitness [48] 0.020296 fitness [13] 0.021381 fitness [49] 0.023596 fitness [14] 0.021492 fitness [50] 0.019139 fitness [15] 0.021395 fitness [51] 0.020912 fitness [16] 0.021473 fitness [52] 0.021622 fitness [17] 0.018232 fitness [53] 0.018769 fitness [18] 0.020178 fitness [54] 0.020542 fitness [19] 0.019055 fitness [55] 0.021191 fitness [20] 0.018979 fitness [56] 0.023164 fitness [21] 0.020462 fitness [57] 0.020951 fitness [22] 0.020235 fitness [58] 0.020387 fitness [23] 0.019558 fitness [59] 0.02348 fitness [24] 0.020329 fitness [60] 0.022589 fitness [25] 0.02 fitness [61] 0.019309 fitness [26] 0.01947 fitness [62] 0.018426 fitness [27] 0.021791 fitness [63] 0.022952 fitness [28] 0.022316 fitness [64] 0.022836 fitness [29] 0.02103 fitness [65] 0.021944 fitness [30] 0.020799 fitness [66] 0.021964 fitness [31] 0.019869 fitness [67] 0.01846 fitness [32] 0.020367 fitness [68] 0.018868 fitness [33] 0.023305 fitness [69] 0.018783 fitness [34] 0.021115 fitness [70] 0.01857 fitness [35] 0.021782 fitness [71] 0.022292 fitness [36] 0.023964 fitness [72] 0.023207
151
fitness [73] 0.022119 fitness [74] 0.017596 fitness [75] 0.018653 fitness [76] 0.022017 fitness [77] 0.020803 fitness [78] 0.020894 fitness [79] 0.020076 fitness [80] 0.020794 fitness [81] 0.021066 fitness [82] 0.017886 fitness [83] 0.020572 fitness [84] 0.022153 fitness [85] 0.022406 fitness [86] 0.022326 fitness [87] 0.020068 fitness [88] 0.018993 fitness [89] 0.018215 fitness [90] 0.019436 fitness [91] 0.018549 fitness [92] 0.020429 fitness [93] 0.019153 fitness [94] 0.0181 fitness [95] 0.021589 fitness [96] 0.021834 fitness [97] 0.019249 fitness [98] 0.021182 fitness [99] 0.022311 fitness [100] 0.020606
152
Lampiran 10 PROBABILITAS FITNESS DAN NILAI KUMULATIF DARI PROBABILITASNYA probabilistik fitness 1 0.014425 0.014425 2 0.01128 0.025705 3 0.0097194 0.035424 4 0.010889 0.046314 5 0.0089344 0.055248 6 0.010101 0.065349 7 0.0089962 0.074345 8 0.010101 0.084446 9 0.010031 0.094477 10 0.011147 0.10562 11 0.0092915 0.11492 12 0.0093748 0.12429 13 0.010289 0.13458 14 0.010342 0.14492 15 0.010295 0.15522 16 0.010333 0.16555 17 0.0087731 0.17432 18 0.0097096 0.18403 19 0.0091693 0.1932 20 0.0091328 0.20233 21 0.0098467 0.21218 22 0.0097371 0.22192 23 0.0094114 0.23133 24 0.0097826 0.24111 25 0.0096241 0.25074 26 0.0093693 0.26011 27 0.010486 0.27059 28 0.010739 0.28133 29 0.01012 0.29145 30 0.010008 0.30146 31 0.009561 0.31102 32 0.0098005 0.32082 33 0.011214 0.33203
34 0.010161 0.3422 35 0.010482 0.35268 36 0.011531 0.36421 37 0.009877 0.37409 38 0.0093221 0.38341 39 0.010715 0.39412 40 0.010197 0.40432 41 0.010335 0.41465 42 0.010753 0.42541 43 0.0094428 0.43485 44 0.009875 0.44473 45 0.0096126 0.45434 46 0.011083 0.46542 47 0.008463 0.47388 48 0.0097667 0.48365 49 0.011355 0.49501 50 0.0092097 0.50421 51 0.010063 0.51428 52 0.010404 0.52468 53 0.0090317 0.53371 54 0.0098851 0.5436 55 0.010197 0.5538 56 0.011147 0.56494 57 0.010082 0.57502 58 0.0098105 0.58484 59 0.011299 0.59613 60 0.01087 0.607 61 0.0092915 0.6163 62 0.0088669 0.62516 63 0.011044 0.63621 64 0.010989 0.6472 65 0.01056 0.65776 66 0.010569 0.66832 67 0.0088833 0.67721
153
68 0.0090794 0.68629 69 0.0090384 0.69533 70 0.0089361 0.70426 71 0.010727 0.71499 72 0.011167 0.72616 73 0.010644 0.7368 74 0.0084675 0.74527 75 0.0089761 0.75424 76 0.010595 0.76484 77 0.010011 0.77485 78 0.010054 0.7849 79 0.0096608 0.79456 80 0.010006 0.80457 81 0.010137 0.81471 82 0.0086068 0.82331 83 0.0098993 0.83321 84 0.01066 0.84387 85 0.010782 0.85466 86 0.010744 0.8654 87 0.009657 0.87506 88 0.0091397 0.8842 89 0.0087651 0.89296 90 0.0093529 0.90231 91 0.0089261 0.91124 92 0.0098306 0.92107 93 0.0092167 0.93029 94 0.0087096 0.939 95 0.010389 0.94939 96 0.010507 0.95989 97 0.0092629 0.96916 98 0.010193 0.97935 99 0.010736 0.99008 100 0.0099156 1
154
Lampiran 11 Hasil Seleksi Roulette Wheel N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
19 6 10 18 16 4 17 22 14 17 9 18 2 22 14 3 8 9 5 15 1 7
8 8 7 1 20 14 1 14 6 21 12 9 5 11 19 19 22 5 15 8 8 22
3 18 6 9 9 21 10 9 20 10 2 11 4 9 4 12 9 8 14 7 13 4
7 5 12 4 2 5 9 4 8 2 14 14 21 6 13 4 20 15 1 12 9 9
6 20 8 11 17 19 13 11 5 5 5 6 7 13 12 2 12 17 18 5 19 20
5 17 9 13 15 10 20 13 19 22 3 22 13 3 20 17 19 16 7 2 6 2
22 4 17 2 8 3 5 2 17 9 17 15 15 19 3 21 4 22 3 4 21 6
13 19 20 14 6 7 16 16 4 13 13 19 1 16 2 8 10 7 10 16 15 16
1 10 3 7 22 1 2 7 11 18 1 5 16 2 7 15 3 3 17 17 17 5
Hasil Seleksi 2 4 15 9 14 21 11 3 14 4 11 13 17 12 8 16 12 7 14 13 22 6 17 13 15 19 21 6 8 18 19 3 12 1 21 3 16 8 20 1 11 15 22 8 16 3 20 4 3 22 8 19 10 4 7 12 10 18 11 8 9 16 22 7 18 2 7 17 18 4 19 13 20 6 16 22 10 22 18 1 16 3 11 2 13 12 14 18 155
21 7 2 20 1 9 7 21 7 14 18 8 11 5 15 14 21 12 12 9 18 1
18 15 1 15 5 2 3 6 15 11 19 21 9 1 17 1 5 6 21 11 12 11
20 16 19 22 19 11 14 12 22 7 16 2 6 18 1 10 16 10 9 20 14 19
11 2 18 6 10 12 12 1 2 6 7 13 18 17 21 20 1 20 4 13 10 3
12 1 22 21 3 16 11 17 13 3 6 17 17 21 5 13 13 21 8 6 7 15
10 22 21 19 4 15 18 20 16 12 20 1 14 20 9 5 11 2 13 3 4 17
14 9 16 3 11 8 4 5 10 4 10 12 12 14 16 18 15 14 11 14 22 21
17 12 5 5 21 18 8 15 9 15 4 7 20 15 22 11 6 1 2 21 5 8
16 13 15 10 18 20 22 10 18 19 21 10 10 8 6 6 14 11 19 19 20 10
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
13 1 16 22 11 12 4 20 7 14 22 7 8 15 12 12 6 10 6 9 20 11 6 12 19 10
3 13 8 21 1 7 12 7 22 20 17 2 22 9 5 8 8 8 12 15 11 20 15 22 5 9
7 16 5 20 6 14 20 18 3 22 5 13 7 17 13 22 19 4 22 4 15 12 21 21 1 16
6 7 10 14 9 16 3 6 19 16 13 4 4 3 17 20 5 22 3 21 5 18 1 1 6 8
5 11 3 17 19 4 14 5 10 8 1 17 12 19 11 16 20 18 15 13 1 17 13 5 2 12
22 22 2 1 15 19 2 19 17 10 4 20 21 4 14 2 17 21 14 11 7 2 19 14 11 5
8 4 15 4 21 13 15 12 18 13 6 9 18 5 9 7 13 3 1 16 8 13 18 6 14 15
1 9 4 6 14 9 22 17 1 17 14 22 16 18 4 21 4 11 10 8 18 21 17 20 12 6
2 18 11 8 16 10 16 8 4 3 9 8 14 7 8 5 10 5 18 3 19 9 2 18 22 7
18 6 22 7 13 8 10 11 13 5 18 5 1 8 16 19 14 17 4 14 3 14 8 16 8 1
9 12 7 15 2 21 5 16 21 9 19 14 15 6 10 17 21 12 13 17 16 8 4 8 18 4
156
21 8 18 5 10 2 17 1 5 18 3 11 3 22 7 4 18 14 17 19 6 1 16 10 10 22
4 20 19 9 17 18 19 14 15 7 21 16 9 2 3 9 3 20 20 22 12 19 7 4 21 2
20 21 1 19 5 15 11 2 6 21 16 19 6 11 19 15 7 1 7 18 21 10 10 11 7 20
11 10 20 18 4 20 9 9 12 1 11 6 17 10 1 1 15 16 2 10 17 3 3 13 4 13
16 14 6 3 7 5 21 10 20 2 15 21 5 14 22 18 16 19 21 1 9 7 11 19 17 21
10 5 12 11 22 17 6 15 16 4 10 1 11 12 21 14 2 6 16 7 2 4 5 2 16 11
14 19 17 12 18 6 7 4 11 11 20 3 19 1 20 13 1 15 19 12 13 22 12 3 20 19
17 15 13 16 20 11 1 3 9 12 12 10 10 16 18 3 22 7 9 2 10 16 22 9 9 18
12 3 9 13 8 22 8 22 14 19 8 15 13 20 15 11 9 2 11 6 4 5 9 15 3 17
15 17 14 2 12 1 18 21 2 15 2 12 20 13 2 6 12 13 5 5 22 15 14 7 13 3
19 2 21 10 3 3 13 13 8 6 7 18 2 21 6 10 11 9 8 20 14 6 20 17 15 14
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
12 20 20 9 12 4 6 4 9 6 2 16 1 1 7 13 20 4 22 13 2 14 5 16 21 19
14 7 18 20 13 7 8 16 22 9 1 20 5 13 19 14 8 8 17 21 4 17 14 4 15 3
20 3 5 8 5 10 5 3 14 15 13 3 16 11 4 3 5 10 3 12 6 2 18 14 13 12
8 14 3 21 15 6 18 2 5 12 16 10 15 14 18 15 4 2 1 7 10 9 21 22 11 13
7 17 11 11 17 16 20 21 1 20 7 5 14 5 6 19 6 19 4 3 14 12 11 5 1 22
10 12 12 7 19 14 17 7 20 21 11 14 21 12 3 16 19 16 8 1 21 19 4 3 18 20
11 21 19 6 22 13 2 10 13 10 17 8 6 16 22 21 14 12 12 22 3 22 3 1 17 10
13 10 4 19 8 12 19 1 2 13 8 2 20 17 1 1 3 1 14 8 19 21 12 18 14 4
17 22 2 1 4 19 10 8 7 16 4 11 2 4 21 11 7 7 13 10 22 8 22 21 3 2
16 8 9 5 1 11 14 11 10 17 12 17 22 19 5 6 21 5 6 17 17 10 7 10 4 15
15 16 16 17 6 2 21 14 18 5 18 6 3 6 10 9 18 14 11 9 8 4 8 9 16 21
157
6 9 22 10 10 22 22 22 11 2 22 1 4 10 14 10 16 21 7 19 16 15 17 17 10 11
21 2 7 4 18 9 16 20 8 7 6 7 7 3 16 4 12 22 9 18 7 3 6 2 22 18
4 4 21 3 21 3 7 13 19 4 9 18 9 7 12 2 17 13 16 14 12 5 19 20 20 9
18 15 17 16 20 15 15 15 3 1 20 13 17 15 11 8 10 15 15 15 5 1 2 12 8 8
3 6 15 12 9 21 1 6 21 14 21 4 8 20 13 7 11 11 2 16 15 11 13 6 9 5
19 11 6 15 3 8 4 9 12 8 10 22 19 8 9 18 22 9 10 20 20 13 16 7 7 16
22 19 10 14 2 18 3 18 16 11 14 12 13 21 17 12 2 18 18 11 11 20 20 8 6 7
5 5 1 22 11 1 13 19 4 22 5 19 12 22 2 22 9 20 21 6 1 18 1 19 2 14
1 13 13 13 16 17 9 5 17 18 19 9 18 9 15 17 13 3 20 2 18 16 9 13 5 1
9 1 14 18 7 20 12 12 15 3 15 21 10 2 20 5 1 6 19 5 13 6 15 15 12 6
2 18 8 2 14 5 11 17 6 19 3 15 11 18 8 20 15 17 5 4 9 7 10 11 19 17
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
4 1 18 4 15 14 10 10 2 3 16 8 4 18 4 13 10 8 10 22 1 2 3 8 3 2
22 7 8 19 1 22 3 3 21 12 22 2 19 13 19 15 20 2 22 20 5 3 12 17 7 13
20 21 7 14 3 7 14 18 15 1 4 18 8 10 6 22 2 21 19 17 21 20 4 12 2 11
5 16 17 21 10 19 16 16 3 14 18 11 3 22 9 7 6 15 3 16 2 13 6 21 21 16
17 13 13 11 12 21 7 7 8 4 3 9 12 11 5 6 12 7 21 12 15 9 8 16 20 7
8 18 20 7 2 8 12 12 12 16 9 20 16 7 16 14 14 20 1 8 4 1 19 11 19 1
2 17 6 16 8 6 21 21 6 21 17 12 21 6 20 1 7 10 18 1 8 22 21 4 1 17
18 2 9 2 18 16 20 22 11 22 1 6 10 17 18 2 19 14 11 13 18 7 20 1 11 8
19 6 1 22 11 15 17 13 10 7 13 22 22 19 7 4 8 16 15 6 9 10 13 3 5 4
11 15 5 12 6 20 4 4 5 20 7 14 5 2 15 16 16 6 6 14 14 19 18 9 8 22
15 5 19 13 17 10 22 17 13 6 15 4 1 8 1 21 15 9 4 9 16 12 14 13 6 18
158
16 8 11 20 21 5 6 20 4 10 14 7 9 3 10 20 4 22 16 18 10 14 1 10 12 12
12 19 22 6 19 9 2 2 1 15 8 3 2 16 11 19 21 13 17 19 20 8 11 6 22 6
6 11 4 9 14 13 15 15 18 17 19 21 15 21 22 17 5 18 8 3 3 11 10 20 4 9
21 3 15 1 4 2 11 11 19 13 2 17 17 5 13 5 3 12 13 11 11 4 22 18 15 20
9 4 16 3 13 11 18 5 14 8 12 16 14 9 2 12 22 5 7 4 12 6 15 14 17 14
14 22 2 10 22 17 9 9 22 2 20 1 20 12 21 3 13 4 20 7 13 21 17 7 18 10
13 9 10 5 20 18 1 1 9 11 10 5 13 15 14 8 9 19 5 2 22 5 7 22 10 21
1 12 3 15 7 1 8 14 16 5 5 10 18 4 8 11 17 1 2 5 7 18 9 2 9 5
10 10 14 8 9 4 5 8 20 9 6 19 11 20 3 10 1 3 12 10 6 15 5 5 16 19
3 20 21 18 5 12 13 19 17 18 11 15 7 1 17 18 18 17 9 15 19 17 16 19 13 15
7 14 12 17 16 3 19 6 7 19 21 13 6 14 12 9 11 11 14 21 17 16 2 15 14 3
Lampiran 12
Semesta Pembicaraan, Domain, Fungsi Keanggotaan dan Aturan Fuzzy 1. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Populasi
Semesta pembicaraan: [0, 1000] Domain SMALL: [50, 250] Fungsi Keanggotaan:
Domain MEDIUM: [80, 275] Fungsi Keanggotaan:
159
Domain LARGE: [350, 500] Fungsi Keanggotaan:
2. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Generasi
Semesta pembicaraan: [0, 1000] Domain SHORT: [50, 200] Fungsi Keanggotaan:
160
Domain MEDIUM: [80, 275] Fungsi Keanggotaan:
Domain LONG: [350, 500] Fungsi Keanggotaan:
3. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Crossover
161
Semesta pembicaraan: [0.6, 0.9] Domain SMALL: [0.625, 0.7] Fungsi Keanggotaan:
Domain MEDIUM: [0.63, 0.7, 0.72, 0.78] Fungsi Keanggotaan:
Domain LARGE: [0.72, 0.78, 0.8, 0.87] Fungsi Keanggotaan:
Domain VERY LARGE: [0.8, 0.875] Fungsi Keanggotaan:
162
4. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Mutasi
Semesta pembicaraan: [0, 0.25] Domain VERY SMALL: [0.025, 0.1] Fungsi Keanggotaan:
Domain SMALL: [0.047, 0.083, 0.1, 0.14] Fungsi Keanggotaan:
163
Domain MEDIUM: [0.1, 0.14, 0.167, 0.2] Fungsi Keanggotaan:
Domain LARGE: [0.15, 0.225] Fungsi Keanggotaan:
5. Aturan Fuzzy
IF (Populasi is SMALL) AND (Generasi is SHORT) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is LARGE).
IF (Populasi is MEDIUM) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is MEDIUM).
IF (Populasi is LARGE) AND (Generasi is SHORT) THEN (ProbCrossover is SMALL) AND (ProbMutasi is SMALL).
IF (Populasi is SMALL) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is MEDIUM).
IF (Populasi is MEDIUM) AND (Generasi is MEDIUM) THEN (ProbCrossover is LARGE) AND (ProbMutasi is SMALL).
164
IF (Populasi is LARGE) AND (Generasi is MEDIUM) THEN (ProbCrossover is MEDIUM) AND (ProbMutasi is VERYSMALL).
IF (Populasi is SMALL) AND (Generasi is LONG) THEN (ProbCrossover is VERYLARGE) AND (ProbMutasi is SMALL).
IF (Populasi is MEDIUM) AND (Generasi is LONG) THEN (ProbCrossover is VERYLARGE) AND (ProbMutasi is VERYSMALL).
IF (Populasi is LARGE) AND (Generasi is LONG) THEN (ProbCrossover is LARGE) AND (ProbMutasi is VERYSMALL).
165
166
167