implementasi algoritma genetika dengan teknik
TRANSCRIPT
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-11-
10-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….….….….….….…....…....
3.4.1.3 Analisis Kebutuhan Keluaran (Output) .…..…..….…....
3.4.2 Perancangan Perangkat Lunak….….….…..….….….…………
3.5 Penarikan Kesimpulan………………………………………………..
BAB 4 HASIL PENELITIAN DAN PEMBAHASAN…..…………………….
55
55
56
59
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
……………………………………………………………………………
88
xi
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………..…….…….……..…………………... 8
2.2 Gambar Graf berdasarkan orientasi arah (a) graf berarah dan (b) graf
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 Diagram Konsep umum kronologi proses...…….……………………. 42
3.1 Gambar Halaman depan wikimapia...……… ……………………....... 51
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
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
xiii
4.15 Proses Perhitungan dengan panjang jalur terbaik 22,63……………… 90
DAFTAR TABEL
Tabel Halaman
4.1 Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi
100….………………………………………………………………....
74
4.2 Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi
200….………………………………………………………………....
76
4.3 Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi
500….………………………………………………………………....
78
4.4 Tabel Hasil Perhitungan mengunakan Populasi 100 dan Generasi
1000….………………………………………………………………..
80
4.5 Tabel Hasil Perhitungan mengunakan Populasi 200 dan Generasi
100….………………………………………………………………..
82
4.6 Tabel Hasil Perhitungan mengunakan Populasi 500 dan Generasi
100….………………………………………………………………....
84
4.7 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
xiv
DAFTAR LAMPIRAN
Lampiran 1 Nama, Alamat, dan Kode Lokasi Penerimaan Surat dan Barang
dari PT Pos Indonesia DC Tugu Semarang…………………….
99
Lampiran 2 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
Lampiran 7
Tampilan dan Hasil Uji (Excel) dengan Pengujian 10 kali …....
Tampilan Graf Rute Terbaik Pengiriman Surat Dan Barang PT.
Pos Indonesia DC Tugu…...………………................................
124
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
xv
Halaman
xvi
1
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
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.
7
BAB 2
LANDASAN TEORI
2.1 Teori Graf
2.1.1 Definisi Graf
Sebuah graf berisikan dua himpunan yaitu himpunan berhingga tak
kosong dari objek-objek yang disebut titik dan himpunan berhingga
(mungkin kosong) yang elemen-elemennya disebut sisi sedemikian hingga
setiap elemen dalam merupakan pasangan tak berurutan dari titik-titik di
Himpunan disebut himpunan titik dan himpunan disebut
himpunan sisi . Misalkan dan adalah dua titik di dan (sering
ditulis adalah sebuah sisi . Titik dan titik berhubungan langsung
(adjacent) di ; sisi menghubungkan (joining) titik dan titik di ; dan
titik-titik akhir sisi ; sisi terkait (incident) dengan titik dan titik (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)
8
Contoh 2.1:
Sebuah graf dengan dan
. ; ; ; ;
;
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).
e1
e2
e4
e5
v1
v2
v3
v4
e3
e6
9
(a) (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 adalah sebuah
barisan berhingga (tak kosong) yang suku-
sukunya bergantian sedemikian hingga dan adalah titik-titik akhir sisi
untuk . Dikatakan adalah sebuah jalan dari titik ke titik , atau
jalan- . Titik dan titik berturut-turut disebut titik awal dan titik akhir
. Sedangkan titik-titik disebut titik internal ; dan disebut
panjang jalan dengan panjang positif disebut tertutup, jika titik awal dan akhir
dari identik (sama) (Budayasa, 2007: 6)
e1
e2
e4
e5
v1
v1
v2
v2
v3
v3
v4
v4
e3
v1
v2
v3
v4
10
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).
Gambar 2.4 Jejak pada Graf 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,
e1
e2 e4
e6
e5
v1 v2
v3 v4
e7
v5 e3
e1
e2 e4
e6
e5
v1 v2
v3 v4
e7
v5 e3
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.
Gambar 2.5 Lintasan pada graf 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).
e1
e2 e4
e6
e5
v1 v2
v3 v4
e7
v5 e3
12
Gambar 2.6 Sirkuit pada graf misalnya .
2.1.7 Graf Euler dan Graf Semi-Euler
Sebuah sirkuit di graf yang memuat semua sisi disebut sirkuit Euler.
Jika graf memuat sirkuit Euler, maka graf disebut graf Euler. Sebuah jejak
buka yang memuat semua sisi graf disebut jejak Euler. Graf disebut graf semi-
Euler jika memuat jejak Euler (Budayasa, 2007: 113)
1
(a) (b)
Gambar 2.7 Eulerian pada graf
Keterangan gambar:
(a) Graf memiliki Jejak Euler misal
(b) Graf memiliki Sirkuit Euler misalnya
.
e1
e2 e4
e6
e5
v1 v2
v3 v4
e7
v5 e3
5
2
6
3
7
4
1
2
3
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).
(a) (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.
1
2
4
3
1 2
4 3
1
3 4
2
14
Sebaliknya graf adalah sebuah graf bagian terhubung maksimal (titik dan sisi)
dari (Budayasa, 2007: 8). Graf dikatakan graf bagian terhubung maksimal
dari graf 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.
(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
e1
e2
e4
e5
v1
v2
v3
v4
e3
e1
e2
e4
e5
v1
v2
v3
v4
e3
15
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
14 15
15
1
8
17
16
14
1
6
18 12
11 13
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 dan . jarak
dari ke , dinotasikan dengan atau didefinisikan sebagai
panjanglintasan terpendek antara titik dan titik 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-1-
2. 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 3-
2-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:5-
6).
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%
Individu 2 : fitness = 25%
Individu 3 : fitness = 40%
Individu 4 : fitness = 15%
Individu 5 : fitness = 10%
Gambar 2.11 Ilustrasi Seleksi dengan Mesin Roullete
Dibangkitkan bilangan random antara
1-100 sebanyak 5 kali
Jatah untuk individu 1 : 1-10
Jatah untuk individu 2 : 11-35
Jatah untuk individu 3 : 36-75
Jatah untuk individu 4 : 76-90
Jatah untuk individu 5 : 91-100
Individu Terpilih
Random 30 individu 2
Random 88 individu 4
Random 64 individu 3
Random 18 individu 2
Random 44 individu 3
25
8
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. Individu-
individu 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
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:
Anak 1: 123 4 5
Anak 2: 12 4 5
b. 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
Anak 1: 67,5 1,9 2,1
Anak 2: 23,1 8,2 19,5
c. 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 :
Anak 1: 67,5 14,5 19,5
Anak 2: 23,1 22,9 7,9
d. 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 2)
e. 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
Kromosom sebelum mutasi :1 0 0 1 0 1 1 1
Kromosom sesudah mutasi :1 0 0 1 0 0 1 1
b. 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
Kromosom sebelum mutasi : 1 2 3 4 5 6 7 8 9
Kromosom sesudah mutasi : 1 2 7 4 6 5 8 3 9
c. 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.
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
d. 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.
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)
/ X
5 y
+ +
X -
_
_
y 5
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 perubahan-
perubahan, 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 adalah bilangan real
dan anggota fungsi , didefinisikan:
(Pandian dan Natarjan, 2010: 81).
Gambar 2.18. Keanggotaan bilangan fuzzy (Kusumadewi dkk, 2006: 41)
(5) Bilangan fuzzy Yang dinotasikan dengan adalah
suatu himpunan fuzzy yang memiliki fungsi keanggotaan sebagai
berikut.
Dengan sebagai rentang kiri dan kanan. bersifat monoton
naik ke 1, sedangkan bersifat monoton turun dari 1.
40
nilai keanggotaan tertinggi
adalah 1 yang terjadi pada saat (Kusumadewi dkk, 2006: 42)
Gambar 2.19. Bilangan Fuzzy (Kusumadewi dkk, 2006: 42)
Jika bilangan fuzzy memiliki merupakan bilangan
fuzzy trapesium, dengan adalah lebar sisi kiri dan β adalah lebar sisi
kanan. Jika 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 metode sugeno adalah sebagai
berikut(Widodo,2012:125)
1. Pembentukan himpunan Fuzzy
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
Gambar 2.21 Flow Chart Rancangan Sistem
Mulai
Input: Data Lokasi, Jumlah
Populasi, dan Batass Generasi
Fuzzy
Output:
Probabilitas Mutasi dan
Probabilitas Crossover
Populasi
Awal
Evaluasi Fitness
Roulette
Wheel Mutasi
Crossover
Seleksi
Kriteria
berhenti
terpenuhi
Hasil
Selesai
Ya
Tidak
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
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]
9 7
6
4
7
A
B
C D
E
9
8
5
2
3
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]<Qk[k] maka kromosom ke-k sebagai induk, selain itu pilih kromosom ke-k
sebagai induk dengan syarat Qk[k-1] < R[k] < Qk[k]. Kita putar roulette-wheel
sebanyak jumlah kromosom yaitu 6 kali (membangkitkan bilangan acak R).
Bila bilangan random R i] yang dihasilkan sbb :
R[1] = 0,314
R[2] = 0,111,
R[3] = 0,392,
R[4] = 0,743
R[5] = 0,521,
R[6] = 0,561
Induk yang dipilih dengan Q[k-1] < R[k] < Q[k] menghasilkan : C[2], C[1], C[3],
C[5], C[3], C[4].
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 is
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
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 is VERYLARGE) AND (ProbMutasi is
VERYSMALL).
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 toolbox-
toolbox 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
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
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 langkah-
langkahnya 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
sugeno
- Peluang Mutasi ( ) = dihitung menggunakan fuzzy
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. Proses penyeleksian jalur terpendek.
3.4.1.3. 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. Masing-
masing 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 ke alamat 1.
4. 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.
76
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
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.
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 ke-
pada 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
function Populasi =
TSPInisiasiPopulasi(UkPop,JumGen)
for ii=1:UkPop,
[Xval,Ind] = sort(rand(1,JumGen));
Populasi(ii,:) = Ind;
end
79
input (‘Masukkan Ukuran Populasi: ‘). JumGen menyatakan
jumlah gen dalam kromosom, dimana gen ini merepresentasikan jumlah alamat
yang ada. Nilai dari JumGen dimasukkan melalui perintah input
(‘Masukkan Jumlah Gen : ‘).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 di
mana 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.
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
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));
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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,0343 0,021 29,13 82,428 1-9-5-8-6-17-16-20-11-
12-13-14-10-22-15-21-
18-19-7-3-4-2-1
2 0,0308 0,0206 32,5 78,981 1-10-6-7-8-3-5-4-13-12-
11-18-15-14-16-17-9-19-
22-21-20-2-1
3 0,0321 0,0212 31,18 82,644 1-3-20-17-15-21-22-16-
18-19-9-5-13-14-11-12-
2-4-6-8-10-7-1
4 0,0304 0,0207 32,93 80,883 1-3-2-7-9-21-22-17-15-
13-10-16-19-18-20-11-8-
4-6-12-14-5-1
5 0,0324 0,0206 30,9 85,007 1-2-5-6-15-21-18-17-14-
13-22-10-9-4-3-11-20-
19-16-12-8-7-1
6 0,0317 0,0208 31,55 81,764 1-6-5-3-2-4-7-20-22-16-
15-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-16-
17-14-13-10-11-12-18-
19-22-21-15-2-1
8 0,0326 0,0206 30,69 82,224 1-3-5-18-17-16-10-21-
22-20-14-11-12-8-9-4-6-
7-15-13-19-2-1
9 0,0352 0,0212 28,38 84,012 1-5-6-7-8-9-16-22-3-4-
11-12-13-15-21-17-14-
18-19-20-10-2-1
10 0,0311 0,0208 32,14 68,894 1-6-10-5-20-16-17-11-
22-21-13-14-12-9-7-8-
15-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,033557 0,021032 29,8 144,6498 1-2-5-6-16-13-14-11-
12-10-7-3-9-15-21-19-
18-22-17-20-4-8-1
2 0,032248 0,02065 31,01 142,8627 1-2-4-3-18-16-17-7-8-
10-11-6-15-14-22-21-
20-19-13-12-5-9-1
3 0,032041 0,02093 31,21 142,726 1-2-12-20-17-13-8-6-5-
3-4-9-10-11-7-21-19-
18-22-16-15-14-1
4 0,035002 0,021089 28,57 149,936 1-4-3-15-14-12-19-18-
13-22-16-17-21-20-11-
6-5-9-7-8-10-2-1
5 0,034282 0,020981 29,17 155,2665 1-2-15-8-7-10-22-17-
16-18-20-11-12-13-14-
19-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-17-
16-22-18-9-6-1
7 0,034614 0,020563 28,89 152,686 1-2-10-14-16-5-8-7-9-
15-13-19-20-17-18-21-
22-11-3-6-4-1
8 0,030826 0,020979 32,44 154,926 1-3-9-2-4-12-11-16-15-
13-21-22-8-5-6-7-17-
14-20-18-19-10-1
9 0,03639 0,020603 27,48 155,2225 1-2-4-8-7-9-5-16-21-
19-18-17-14-13-12-15-
22-20-11-10-3-6-1
10 0,034037 0,021053 29,38 152,3815 1-2-5-9-3-7-6-8-16-21-
18-14-17-15-13-19-22-
20-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,03686 0,021092 27,13 362,0199 1-3-4-6-5-15-14-13-10-
9-7-8-2-12-11-19-20-
21-22-16-18-17-1
2 0,03537 0,020912 28,27 353,1231 1-2-4-12-11-14-10-16-
8-7-9-5-6-3-13-15-19-
20-17-18-21-22-1
3 0,033356 0,021082 29,98 355,9253 1-8-13-14-15-19-21-
22-10-11-12-7-2-3-4-5-
6-9-20-17-18-16-1
4 0,033478 0,021248 29,87 361,8065 1-6-8-7-10-14-18-16-
19-20-11-12-22-21-9-
3-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-20-
13-3-6-7-8-10-2-1
6 0,037608 0,021252 26,59 381,3105 1-9-8-6-5-20-22-21-19-
18-16-17-13-7-3-4-10-
15-14-12-11-2-1
7 0,03701 0,020978 27,02 362,2903 1-3-13-20-22-14-15-
10-7-8-19-18-17-16-
21-12-11-6-9-5-4-2-1
8 0,036443 0,02118 27,44 372,6351 1-3-7-8-11-17-21-18-
19-16-22-13-14-20-15-
10-9-12-4-5-6-2-1
9 0,040404 0,021187 24,75 358,1425 1-2-7-13-14-18-19-22-
21-20-17-16-15-12-11-
8-10-3-4-5-9-6-1
10 0,034916 0,020846 28,64 361,9673 1-2-9-7-10-21-20-4-3-
5-8-12-11-13-14-15-
17-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,036657 0,020571 27,28 850,1732 1-19-18-20-15-8-4-10-
16-21-22-17-13-14-12-
11-9-7-6-5-3-2-1
2 0,037893 0,021056 26,39 845,424 1-6-10-13-21-22-20-17-
18-19-16-11-12-14-15-
2-3-4-5-9-8-7-1
3 0,039793 0,020735 25,13 766,3086 1-2-4-5-6-7-10-13-12-
14-15-16-11-17-20-19-
18-21-22-8-9-3-1
4 0,04029 0,021016 24,82 726,3575 1-2-3-6-9-4-7-8-16-18-
19-20-17-11-12-5-10-
15-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-21-
22-16-17-4-2-1
6 0,040833 0,021017 24,49 714,8976 1-2-4-7-8-9-22-12-11-
13-14-15-16-21-18-20-
19-17-10-5-6-3-1
7 0,037161 0,020851 26,91 752,0383 1-22-18-19-20-21-16-
17-8-7-4-11-12-3-5-10-
15-13-14-9-6-2-1
8 0,044189 0,021233 22,63 712,537 1-3-4-6-9-8-7-19-18-16-
17-20-21-22-15-12-11-
10-14-13-5-2-1
9 0,037147 0,020607 26,92 701,0468 1-4-13-14-9-17-15-20-
21-22-16-18-19-11-12-
10-3-5-6-8-7-2-1
10 0,039573 0,021569 25,27 1240,433 1-2-6-5-7-13-14-19-20-
15-17-11-12-16-21-22-
18-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,034892 0,020604 28,66 107,7242 1-6-8-7-9-5-14-17-18-19-
16-20-22-21-11-10-3-12-
13-15-4-2-1
2 0,03358 0,020664 29,78 103,2903 1-13-15-9-8-17-16-22-18-
14-20-19-21-12-11-10-4-
7-6-5-2-3-1
3 0,034977 0,020761 28,59 103,6012 1-4-5-9-7-6-8-18-17-11-
19-20-10-14-13-15-21-22-
16-12-3-2-1
4 0,033807 0,020844 29,58 103,3392 1-3-8-15-12-11-7-9-5-4-2-
21-22-19-18-14-13-16-17-
20-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-8-
16-15-14-2-1
6 0,032927 0,020659 30,37 103,2522 1-2-7-11-8-5-14-13-18-
22-17-19-16-21-20-12-15-
10-3-4-6-9-1
7 0,036483 0,020505 27,41 103,0078 1-4-9-5-10-22-21-17-16-
8-7-20-19-18-11-13-15-
14-12-6-3-2-1
8 0,031496 0,020767 31,75 103,2374 1-5-3-2-15-20-19-17-18-
14-13-12-11-16-8-7-10-
22-21-4-6-9-1
9 0,032531 0,020535 30,74 109,64 1-2-14-18-20-19-22-17-
10-12-11-4-3-6-8-13-15-
16-21-9-7-5-1
10 0,031716 0,020581 31,53 116,1593 1-16-18-11-9-8-7-10-21-
17-22-20-12-19-14-13-15-
6-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang jalur
terbaik (Km)
Waktu
(detik)
Jalur terbaik
1 0,03858 0,02078 25,92 204,6904 1-3-4-6-8-12-11-19-22-
21-17-18-16-14-20-10-
15-13-7-9-5-2-1
2 0,038865 0,020514 25,73 207,185 1-2-3-5-9-7-8-19-22-21-
18-11-12-15-14-13-10-
20-17-16-4-6-1
3 0,035702 0,020516 28,01 204,1133 1-3-4-8-20-14-10-21-17-
13-12-11-15-22-16-18-
19-7-9-6-5-2-1
4 0,033434 0,020743 29,91 204,1437 1-5-6-4-11-12-3-8-9-7-
19-13-14-15-10-22-18-
17-20-16-21-2-1
5 0,034483 0,02074 29 205,0101 1-2-5-8-16-19-18-17-10-
12-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-10-
7-5-3-15-13-22-16-17-
11-12-6-4-9-8-1
7 0,033841 0,020599 29,55 217,1324 1-3-5-9-7-6-21-13-18-
16-20-22-19-17-12-11-
8-14-15-10-4-2-1
8 0,033124 0,020642 30,19 217,2064 1-2-9-8-6-15-3-20-19-
12-11-13-14-17-18-16-
22-21-10-4-5-7-1
9 0,032798 0,020506 30,49 221,3337 1-3-11-12-13-14-15-2-6-
5-20-21-16-17-4-7-8-9-
10-19-18-22-1
10 0,03268 0,02071 30,6 224,266 1-7-14-15-11-12-13-9-8-
16-10-21-20-19-22-17-
18-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
No
Fitness
terbaik
Fitness
rata-rata
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur terbaik
1 0,032648 0,020608 30,63 424,4898 1-4-2-8-21-19-22-17-
18-16-11-12-20-15-14-
10-9-13-7-6-5-3-1
2 0,03375 0,020678 29,63 393,0661 1-2-3-8-21-20-22-7-5-
4-13-15-17-16-19-18-
11-12-14-10-9-6-1
3 0,03488 0,020543 28,67 388,8935 1-2-11-12-7-22-21-17-
14-15-13-18-19-20-16-
5-8-10-3-6-4-9-1
4 0,031949 0,020542 31,3 390,0017 1-3-4-7-12-19-20-6-5-
21-17-16-18-22-8-10-
15-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-20-
10-6-4-3-7-8-5-2-1
6 0,03399 0,020685 29,42 391,2043 1-2-8-7-12-13-15-16-
17-18-19-20-22-11-21-
10-9-4-6-14-5-3-1
7 0,033047 0,020566 30,26 390,2064 1-6-2-10-20-14-13-12-
11-18-19-7-8-15-16-
22-21-17-5-9-3-4-1
8 0,032031 0,02054 31,22 405,1277 1-3-7-9-8-10-21-18-11-
12-20-19-14-13-17-15-
6-5-22-16-4-2-1
9 0,03308 0,020549 30,23 408,1573 1-3-8-5-2-6-9-14-13-
15-22-20-11-12-10-7-
21-17-18-19-16-4-1
10 0,035398 0,020656 28,25 410,5027 1-15-5-13-14-18-19-
20-17-16-22-21-8-3-9-
12-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
No Populasi Generasi
Fitness
terbaik
Panjang
jalur terbaik
(Km)
Waktu
(detik)
Jalur Terbaik
1 100 100 0,0352 28,38 84,012 1-5-6-7-8-9-16-22-3-
4-11-12-13-15-21-17-
14-18-19-20-10-2-1
2 100 200 0,036873 27,12 152,0769 1-2-5-8-10-15-14-13-
7-4-3-12-11-19-20-21-
17-16-22-18-19-6-1
105
3 100 500 0,040404 24,75 358,1425 1-2-7-13-14-18-19-22-
21-20-17-16-15-12-
11-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-18-
16-17-20-21-22-15-
12-11-10-14-13-5-2-1
5 200 100 0,036483 27,41 103,0078 1-4-9-5-10-22-21-17-
16-8-7-20-19-18-11-
13-15-14-12-6-3-2-1
6 500 100 0,038865 25,73 207,185 1-2-3-5-9-7-8-19-22-
21-18-11-12-15-14-
13-10-20-17-16-4-6-1
7 1000 100 0,038256 26,14 391,4639 1-9-13-14-19-22-21-
18-11-12-15-16-17-
20-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.
110
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 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
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.
112
DAFTAR PUSTAKA
Basuki, A, 2003a. Strategi Menggunakan Algoritma Genetika. Tersedia di
http://lecturer.eepis-
its.edu/~basuki/lecture/StrategiAlgoritmaGenetika.pdf[diakses 21-03-
2014].
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.
113
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 N-
Buah Node. Skripsi. FTIK Unikom.
114
115
Lampiran 1
Nama, Alamat, dan Kode Lokasi Penerimaan Surat dan Barang dari PT. Pos Indonesia DC Tugu Semarang
No Nama Penerima Alamat Kode
Lokasi
1 Kantor Pos
Kecamatan Tugu Kantor Pos Kecamatan Tugu 1
2 Jamaludin Kapri Bawah 11 RT 9/10 Tambakaji 2
3 Drs Arif Rosyidi Ruko Taman Beringin 3A-5 Ngaliyan 3
4 Silvya Birrotun N Bella Vista Regency G 10 RT 11/1 Beringin Ngaliyan 4
5 Setyaningsih O Cemara A1 No 19 Perumahan Beringin Indah 0711 BDI MT HARYONO 5
6 Agung Priyambada Perumahan Beringin Indah JL Akasia D 3/5 RT 6/1 Beringin Ngaliyan 6
7 Lia Rosita JL Mega Raya IV/306 No 306 Beringin RT 2/7 Kel Beringin Kec Ngaliyan 7
8 Fran Ardiansyah JL Mega Raya 339-340 RT 8/7 Beringin Ngaliyan 8
9 Supriyantono JL Mega Permai IV/89 RT 5/2 Beringin Ngaliyan 9
10 Adi Sumartono Beringin Putih Blok D I/10 RT 1/9 Ngaliyan 10
11 Arif Lukman Graha beringin mas SLT 1/8 RT 1 RW 11 semarang 50111 11
12 Hery Kartono Graha Beringin Mas Utara Dalam III No 19 RT 7 RW 11 Ngaliyan 12
13 D Wahyu Supriyadi JL Bukit Beringin Lestari Selatan GG 13 RT 10/11 Blok G/110 Gondoriyo 13
14 Tuwadi Perumnas Beringin Blok A 99 VI No 164 Ngaliyan 14
15 Agnes Saptawati N Bukit Beringin Lestari VI/ B 200 RT 4/14 0754 BDI DR Cipto 15
16 Veronica Maryati JL Karo Raya No 18 RT 1/X Perumahan Pondok Beringin Tambakaji 16
17 Prijo Handoko JL Bligo No 8 RT 7/10 Tambakaji 17
18 Ony S JL Beringin Asri Tengah IV/440 RT 6/11 18
19 Amin Suwarno Bukit Beringin Asri III Blok A No 344 Perumnas BUK 19
20 Galih Suci Pratama Perum Beringin Asri No 1036 RT 05/12 Wonosari 20
21 Fitri Retnowati Asrama Putri PGSD UNNES Beringin 21
22 Suyanta Kp Tegalsari RT 5/11 Tambakaji Ngaliyan 22
116
Lampiran 2
Kode Lokasi, Koordinat X, Koordinat Y pada Alamat Penerima
Surat dan Barang dari PT. Pos Indonesia DC Tugu Semarang
No
Kode
Lokasi Koordinat X
Koordinat
Y
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
117
Lampiran 3
Jarak Antartitik Koordinat
Lokasi 1 2 3 4 5 6 7 8 9 10 11
1 0 1,98 2,67 3,12 3,23 3,32 3,81 3,67 3,4 4,52 5,3
2 1,98 0 1,16 1,43 1,6 1,66 2,18 2,09 1,83 2,86 3,67
3 2,67 1,16 0 0,34 0,57 0,61 1,2 1,04 0,77 1,84 2,61
4 3,12 1,43 0,34 0 0,58 0,52 1,12 0,99 0,68 1,82 2,53
5 3,23 1,6 0,57 0,58 0 0,11 0,9 0,8 0,46 1,6 2,3
6 3,32 1,66 0,61 0,52 0,11 0 0,49 0,73 0,47 1,55 2,27
7 3,81 2,18 1,2 1,12 0,9 0,49 0 0,09 0,64 1,45 2,18
8 3,67 2,09 1,04 0,99 0,8 0,73 0,09 0 0,17 1,31 2,08
9 3,4 1,83 0,77 0,68 0,46 0,47 0,64 0,17 0 1,23 2,1
10 4,52 2,86 1,84 1,82 1,6 1,55 1,45 1,31 1,23 0 1,62
11 5,3 3,67 2,61 2,53 2,3 2,27 2,18 2,08 2,1 1,62 0
12 5,1 3,47 2,41 2,4 2,13 2,11 2 1,9 1,92 1,51 0,15
13 5,4 3,81 2,75 2,73 2,49 2,44 2,33 2,24 2,26 1,87 1,97
14 5,3 3,7 2,66 2,62 2,36 2,34 2,21 2,13 2,16 1,76 1,84
15 5,2 3,53 2,47 2,46 2,22 2,17 2,06 1,97 2 1,56 1,69
16 5,5 3,96 2,91 2,92 2,65 2,6 2,54 2,4 2,44 2,02 2,14
17 5,4 3,86 2,65 2,73 2,38 2,37 2,26 2,15 2,29 1,78 1,89
18 6 4,47 3,6 3,33 3,12 3,1 3,07 2,86 2,87 2,5 2,62
19 5,8 4,22 3,39 3,12 2,96 2,86 2,71 2,61 2,84 2,46 2,51
20 5,3 3,67 2,7 2,62 2,41 2,37 2,21 2,14 2,21 1,75 1,89
21 5,9 4,28 3,28 3,2 2,95 2,9 2,81 2,7 2,72 2,32 2,43
22 4,8 4,49 3,48 3,39 3,15 3,1 2,98 2,91 2,93 2,52 2,63
118
Lokasi 12 13 14 15 16 17 18 19 20 21 22
1 5,1 5,4 5,3 5,2 5,5 5,4 6 5,8 5,3 5,9 4,8
2 3,47 3,81 3,7 3,53 3,96 3,86 4,47 4,22 3,67 4,28 4,49
3 2,41 2,75 2,66 2,47 2,91 2,65 3,6 3,39 2,7 3,28 3,48
4 2,4 2,73 2,62 2,46 2,92 2,73 3,33 3,12 2,62 3,2 3,39
5 2,13 2,49 2,36 2,22 2,65 2,38 3,12 2,96 2,41 2,95 3,15
6 2,11 2,44 2,34 2,17 2,6 2,37 3,1 2,86 2,37 2,9 3,1
7 2 2,33 2,21 2,06 2,54 2,26 3,07 2,71 2,21 2,81 2,98
8 1,9 2,24 2,13 1,97 2,4 2,15 2,86 2,61 2,14 2,7 2,91
9 1,92 2,26 2,16 2 2,44 2,29 2,87 2,84 2,21 2,72 2,93
10 1,51 1,87 1,76 1,56 2,02 1,78 2,5 2,46 1,75 2,32 2,52
11 0,15 1,97 1,84 1,69 2,14 1,89 2,62 2,51 1,89 2,43 2,63
12 0 1,56 1,68 1,52 1,98 1,73 2,46 2,35 1,73 2,27 2,47
13 1,56 0 0,22 0,38 1,61 1,36 2,12 2,03 1,32 1,95 2,17
14 1,68 0,22 0 0,17 1,49 1,25 1,98 1,88 1,2 1,8 2,05
15 1,52 0,38 0,17 0 1,1 1,09 1,82 1,72 1,04 1,64 1,89
16 1,98 1,61 1,49 1,1 0 0,19 0,74 0,69 0,7 0,53 0,78
17 1,73 1,36 1,25 1,09 0,19 0 0,7 0,87 0,42 0,78 1,03
18 2,46 2,12 1,98 1,82 0,74 0,7 0 0,13 1,2 1,06 1,29
19 2,35 2,03 1,88 1,72 0,69 0,87 0,13 0 0,26 0,97 1,2
20 1,73 1,32 1,2 1,04 0,7 0,42 1,2 0,26 0 0,66 1,19
21 2,27 1,95 1,8 1,64 0,53 0,78 1,06 0,97 0,66 0 0,29
22 2,47 2,17 2,05 1,89 0,78 1,03 1,29 1,2 1,19 0,29 0
119
Lampiran 4
Tampilan Simulasi Matlab
1. Tampilan Menu Utama
2. Tampilan Menu About
120
3. Tampilan Menu Help
4. Tampilan Menu TSP Fuzzy
121
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{:});
122
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)
123
% ----------------------------------------------------------------
----
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)
124
% 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)
% ----------------------------------------------------------------
----
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';
125
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];
126
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
127
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));
128
TSPMutasi.m
function MutKrom = TSPMutasi(Kromosom,JumGen,Pmutasi)
MutKrom = Kromosom;
for ii=1:JumGen,
if rand<Pmutasi,
TM2 = 1+ fix(rand*JumGen);
while TM2==ii,
TM2=1+fix(rand*JumGen);
end
temp = MutKrom(ii);
MutKrom(ii) = MutKrom(TM2);
MutKrom(TM2)=temp;
end
end
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
129
% 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)
130
% 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);
131
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<Psilang)
Anak =
TSPPindahsilang(Populasi(IP1,:),Populasi(IP2,:),JumGen);
TemPopulasi(jj,:) = Anak(1,:);
TemPopulasi(jj+1,:)=Anak(2,:);
else
TemPopulasi(jj,:)=Populasi(IP1,:);
TemPopulasi(jj+1,:)=Populasi(IP2,:);
end
end
132
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)
133
% 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
134
% 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)
135
% 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 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
136
% --- 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
137
% --- 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
138
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)
139
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
hasil_uji
% --- 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);
140
Lampiran 6
Tampilan dan Hasil Uji (Excel) dengan Pengujian 10 kali
Populasi 100 dan Generasi 100
141
Populasi 100 dan Generasi 200
Populasi 100 dan Generasi 500
142
Populasi 100 dan Generasi 1000
143
Populasi 200 dan Generasi 100
144
Populasi 500 dan Generasi 100
145
Populasi 1000 dan Generasi 100
146
Lampiran 7
Tampilan Graf Rute Terbaik Pengiriman Surat dan Barang PT.
Pos Indonesia DC Tugu Semarang
147
N Bentuk Kromosom
1 18 16 11 17 19 14 12 21 5 2 20 13 4 8 10 9 1 3 15 7 22 6 2 22 19 6 14 2 13 7 10 20 15 16 8 17 1 5 18 9 11 12 21 3 4 3 17 21 10 5 22 15 14 6 3 11 9 8 4 12 13 2 20 18 19 1 7 16 4 15 5 3 14 12 1 18 7 17 20 21 6 2 13 9 4 16 8 22 11 10 19 5 6 15 13 16 18 22 8 3 4 12 7 11 17 2 14 10 21 1 20 19 5 9 6 15 9 10 11 21 12 16 18 22 7 6 2 17 20 4 19 1 5 14 8 13 3 7 1 11 4 3 6 13 19 8 5 17 14 7 22 15 21 20 12 10 16 9 18 2
8 7 22 4 15 6 3 11 19 12 18 20 13 21 8 17 2 10 1 16 9 14 5 9 20 14 2 5 18 8 6 22 12 3 21 4 13 1 19 7 11 17 9 16 15 10
10 10 11 4 21 1 2 12 20 15 3 6 13 19 5 22 9 14 7 8 17 16 18 11 20 3 5 22 15 21 4 6 17 2 7 9 11 8 13 18 16 19 1 10 12 14 12 10 6 18 22 19 15 3 8 12 13 11 17 21 7 1 5 20 14 4 16 2 9 13 11 9 3 21 5 7 10 1 15 14 12 2 19 16 17 18 13 22 4 8 6 20 14 20 2 1 13 18 19 8 10 4 5 16 15 3 14 22 6 9 7 12 11 17 21
15 12 10 11 22 21 9 15 13 14 1 7 5 3 17 2 4 6 16 18 19 20 8 16 15 2 12 17 14 11 20 7 22 18 6 10 3 4 13 8 19 1 21 9 16 5 17 4 8 18 7 21 5 17 12 14 6 10 3 22 1 2 16 13 19 15 9 11 20 18 18 19 20 10 4 11 16 12 1 22 7 17 9 21 13 3 15 14 2 5 8 6 19 13 4 3 1 20 18 2 21 17 6 9 15 8 19 10 5 14 11 22 7 12 16 20 17 7 18 22 5 20 1 16 14 4 8 9 6 10 3 13 21 2 19 11 15 12 21 3 13 6 9 21 11 12 8 10 15 5 20 7 22 18 19 16 1 4 2 14 17 22 16 20 10 11 12 13 8 4 3 7 5 15 14 6 18 19 1 21 2 17 22 9
23 15 8 21 7 22 5 11 10 12 19 6 20 13 4 17 14 3 16 18 2 9 1 24 17 14 4 20 15 21 9 2 19 16 10 11 18 6 1 7 12 13 3 22 5 8 25 18 16 14 21 4 11 8 20 12 15 10 22 17 2 7 9 1 6 5 13 19 3
Lampiran 8
TABEL POPULASI AWAL Ukpop: 100
Pc: 1.0
MaxGen: 100
Panjang Kromosom: 22
131
148
26 22 8 6 13 12 2 17 20 5 7 4 19 1 9 16 11 21 10 14 18 15 3 27 1 12 17 18 8 14 11 20 4 19 10 3 15 2 9 6 5 16 13 7 22 21 28 2 3 22 4 10 11 8 18 13 16 12 14 7 9 1 19 17 15 5 21 6 20
29 8 22 18 16 10 7 13 20 19 1 6 2 11 15 21 12 4 14 3 9 17 5 30 22 2 13 3 15 16 21 5 20 1 8 11 18 6 12 9 10 19 4 17 14 7 31 12 5 11 21 17 9 19 10 20 22 6 13 2 3 16 4 18 14 1 8 15 7 32 12 17 1 20 10 2 11 5 6 21 16 4 3 22 9 15 18 8 14 7 13 19 33 1 7 9 14 19 18 12 22 8 5 3 21 20 15 17 6 2 13 10 16 11 4 34 6 22 18 5 21 13 7 8 3 4 12 20 1 9 19 16 2 17 15 14 11 10 35 12 15 8 3 2 21 22 17 19 20 6 16 10 18 4 11 7 14 13 1 5 9 36 1 13 5 12 10 21 19 18 9 8 17 3 15 16 11 14 7 22 20 6 2 4
37 17 7 16 19 12 10 21 15 18 6 3 14 9 4 13 20 1 22 2 8 5 11 38 18 12 9 3 11 7 5 14 8 16 2 17 10 15 13 1 21 20 22 19 6 4 39 18 11 16 13 8 6 5 1 7 4 21 12 3 2 19 20 14 9 22 17 10 15 40 6 7 3 5 4 19 20 17 10 11 22 8 2 18 14 21 16 1 9 13 12 15 41 8 18 17 19 13 11 1 16 15 7 5 4 6 2 22 9 20 3 21 14 12 10 42 1 5 21 19 15 20 9 14 10 6 12 22 13 11 7 8 17 4 16 2 3 18 43 4 16 3 14 8 1 10 7 9 15 18 21 17 11 5 13 6 20 22 2 12 19
44 9 1 16 20 7 22 2 13 19 17 6 21 11 5 10 14 12 15 4 3 8 18 45 10 19 14 22 13 6 20 11 2 21 3 17 16 18 2 4 15 8 1 7 9 5 46 17 5 7 19 3 14 9 15 12 11 21 8 20 22 1 4 10 6 2 13 16 18 47 4 21 5 18 16 10 14 8 12 11 13 22 15 1 20 9 2 7 3 17 19 6 48 8 6 14 9 17 7 22 18 3 13 4 20 10 11 1 2 16 21 12 5 15 19 49 15 14 8 3 20 17 7 10 1 9 5 16 2 6 13 4 12 11 21 22 18 19 50 7 22 20 11 15 8 10 4 6 16 1 9 21 19 5 13 14 17 2 18 12 3 51 19 22 13 11 1 7 21 12 5 17 18 2 6 14 4 10 15 20 16 3 8 9
149
52 7 9 11 4 20 14 8 21 15 19 18 6 5 16 22 10 2 13 17 3 12 1 53 3 7 10 9 11 12 15 16 21 6 5 17 13 14 18 4 2 20 8 22 1 19 54 7 2 21 3 9 1 10 4 6 5 18 19 20 17 8 16 14 11 12 22 13 15
55 1 9 17 10 4 19 2 18 13 16 12 14 5 21 22 6 15 3 7 11 8 20 56 21 5 2 11 13 22 8 16 12 3 4 6 17 7 20 1 10 15 14 19 9 18 57 6 19 3 16 17 8 13 18 11 4 20 2 10 12 1 15 22 9 14 21 5 7 58 9 20 3 16 5 7 15 14 17 22 6 1 8 18 21 19 10 11 2 4 12 13 59 17 1 13 19 12 20 22 16 4 18 7 9 10 14 3 6 11 21 8 15 2 5 60 19 17 15 5 10 3 21 20 18 13 7 4 22 8 2 1 16 9 6 11 12 14 61 19 14 11 2 13 1 6 10 8 16 12 7 9 3 22 20 21 18 4 5 15 17 62 18 21 2 4 9 14 22 5 8 16 19 1 13 10 20 3 15 7 6 17 12 11
63 18 5 10 15 1 17 8 9 7 19 2 16 3 22 4 6 21 20 14 13 12 11 64 19 12 9 13 14 18 21 2 11 16 1 3 10 20 6 8 15 17 7 4 5 22 65 3 7 17 16 22 19 14 2 8 15 9 20 12 4 10 11 13 5 1 21 6 18 66 13 19 11 9 6 1 22 16 5 2 8 4 7 10 17 20 18 14 12 21 15 3 67 12 11 18 7 13 5 21 4 19 10 9 16 17 6 20 1 3 14 15 8 2 22 68 4 1 15 14 16 21 20 11 2 12 3 17 7 6 19 5 13 10 8 22 9 18 69 8 4 19 22 12 17 3 10 18 14 13 21 9 6 2 20 16 15 11 5 1 7
70 5 6 18 1 22 21 15 11 9 20 8 2 12 4 19 16 13 10 7 14 3 17 71 19 13 3 16 5 12 8 17 10 22 14 9 18 1 21 4 7 11 15 20 6 2 72 21 20 1 11 22 12 8 10 2 3 18 14 7 13 15 5 9 6 17 19 4 16 73 8 10 15 18 17 12 16 19 13 22 5 21 11 2 4 6 1 14 7 9 20 3 74 1 22 13 6 17 3 12 9 21 20 14 5 16 18 8 10 4 7 11 15 19 2 75 8 13 5 9 19 20 1 21 3 12 2 10 15 18 17 11 4 22 7 14 16 6 76 14 20 6 7 1 10 19 17 11 5 8 16 22 21 12 15 9 2 3 18 13 4 77 7 20 9 17 5 14 6 1 13 10 15 18 12 8 21 2 19 11 16 22 4 3
150
78 16 2 11 22 7 1 9 10 18 5 13 3 14 20 8 19 15 12 21 6 4 17 79 9 12 15 14 17 18 21 19 20 11 1 6 7 16 22 2 13 4 8 10 5 3 80 3 1 2 20 6 18 11 12 4 14 22 21 13 17 19 8 7 5 16 9 10 15
81 14 7 19 16 17 5 18 13 6 1 15 22 9 20 21 3 8 10 12 4 11 2 82 14 12 22 21 1 8 6 18 15 7 3 9 16 19 11 17 10 13 2 20 5 4 83 13 5 7 9 14 1 17 3 16 2 12 15 21 10 6 19 8 4 18 22 20 11 84 1 20 11 4 15 12 10 16 8 13 2 18 22 6 9 3 7 21 14 17 5 19 85 6 1 20 9 15 3 16 10 2 11 18 22 4 21 12 13 14 5 7 8 19 17 86 2 5 10 21 15 22 12 16 18 8 13 17 3 4 11 9 19 14 7 6 1 20 87 16 2 17 7 19 13 10 8 14 5 20 1 12 6 15 21 11 4 3 9 18 22 88 13 3 16 2 20 22 19 10 21 18 15 9 12 5 4 1 8 14 7 17 6 11
89 22 13 2 10 17 3 4 15 6 21 14 18 20 19 8 16 1 7 9 12 5 11 90 10 17 3 22 20 11 16 2 21 5 15 12 4 19 1 6 8 18 14 7 9 13 91 12 4 21 16 10 14 13 2 7 17 6 18 8 19 9 1 22 5 20 11 15 3 92 9 17 8 18 3 22 13 7 15 1 4 10 12 2 5 19 21 11 20 14 16 6 93 1 5 22 4 17 11 6 14 15 16 9 10 18 12 21 3 13 8 7 2 19 20 94 17 7 22 3 2 5 4 15 21 18 20 11 14 6 12 1 9 8 13 10 19 16 95 20 9 11 18 19 2 15 3 13 5 10 16 7 22 6 21 8 12 14 4 1 17
96 21 5 4 8 11 1 19 6 20 9 10 17 16 3 15 18 13 14 7 2 12 22 97 21 2 19 15 9 18 5 22 13 8 3 16 7 4 12 10 6 11 20 14 17 1 98 21 10 20 2 8 15 22 14 5 18 11 1 9 3 6 16 7 4 12 17 13 19 99 13 17 5 9 19 12 11 14 7 8 3 1 6 2 15 10 4 21 20 16 18 22
100 13 17 1 4 7 14 16 19 3 12 10 2 18 8 21 5 6 11 20 15 22 9
151
Lampiran 9
NILAI FITNESS DALAM SUATU POPULASI
fitness [1] 0.029976
fitness [2] 0.023441
fitness [3] 0.020198
fitness [4] 0.02263
fitness [5] 0.018567
fitness [6] 0.020991
fitness [7] 0.018695
fitness [8] 0.020991
fitness [9] 0.020846
fitness [10] 0.023164
fitness [11] 0.019309
fitness [12] 0.019482
fitness [13] 0.021381
fitness [14] 0.021492
fitness [15] 0.021395
fitness [16] 0.021473
fitness [17] 0.018232
fitness [18] 0.020178
fitness [19] 0.019055
fitness [20] 0.018979
fitness [21] 0.020462
fitness [22] 0.020235
fitness [23] 0.019558
fitness [24] 0.020329
fitness [25] 0.02
fitness [26] 0.01947
fitness [27] 0.021791
fitness [28] 0.022316
fitness [29] 0.02103
fitness [30] 0.020799
fitness [31] 0.019869
fitness [32] 0.020367
fitness [33] 0.023305
fitness [34] 0.021115
fitness [35] 0.021782
fitness [36] 0.023964
fitness [37] 0.020525
fitness [38] 0.019372
fitness [39] 0.022267
fitness [40] 0.021191
fitness [41] 0.021478
fitness [42] 0.022346
fitness [43] 0.019623
fitness [44] 0.020521
fitness [45] 0.019976
fitness [46] 0.023031
fitness [47] 0.017587
fitness [48] 0.020296
fitness [49] 0.023596
fitness [50] 0.019139
fitness [51] 0.020912
fitness [52] 0.021622
fitness [53] 0.018769
fitness [54] 0.020542
fitness [55] 0.021191
fitness [56] 0.023164
fitness [57] 0.020951
fitness [58] 0.020387
fitness [59] 0.02348
fitness [60] 0.022589
fitness [61] 0.019309
fitness [62] 0.018426
fitness [63] 0.022952
fitness [64] 0.022836
fitness [65] 0.021944
fitness [66] 0.021964
fitness [67] 0.01846
fitness [68] 0.018868
fitness [69] 0.018783
fitness [70] 0.01857
fitness [71] 0.022292
fitness [72] 0.023207
152
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
153
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
154
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
155
Lampiran 11
Hasil Seleksi Roulette Wheel N Hasil Seleksi
1 19 8 3 7 6 5 22 13 1 2 4 15 9 21 18 20 11 12 10 14 17 16 2 6 8 18 5 20 17 4 19 10 14 21 11 3 7 15 16 2 1 22 9 12 13 3 10 7 6 12 8 9 17 20 3 14 4 11 13 2 1 19 18 22 21 16 5 15
4 18 1 9 4 11 13 2 14 7 17 12 8 16 20 15 22 6 21 19 3 5 10 5 16 20 9 2 17 15 8 6 22 12 7 14 13 1 5 19 10 3 4 11 21 18
6 4 14 21 5 19 10 3 7 1 22 6 17 13 9 2 11 12 16 15 8 18 20
7 17 1 10 9 13 20 5 16 2 15 19 21 6 7 3 14 12 11 18 4 8 22 8 22 14 9 4 11 13 2 16 7 8 18 19 3 21 6 12 1 17 20 5 15 10
9 14 6 20 8 5 19 17 4 11 12 1 21 3 7 15 22 2 13 16 10 9 18 10 17 21 10 2 5 22 9 13 18 16 8 20 1 14 11 7 6 3 12 4 15 19
11 9 12 2 14 5 3 17 13 1 11 15 22 8 18 19 16 7 6 20 10 4 21 12 18 9 11 14 6 22 15 19 5 16 3 20 4 8 21 2 13 17 1 12 7 10
13 2 5 4 21 7 13 15 1 16 3 22 8 19 11 9 6 18 17 14 12 20 10 14 22 11 9 6 13 3 19 16 2 10 4 7 12 5 1 18 17 21 20 14 15 8
15 14 19 4 13 12 20 3 2 7 10 18 11 8 15 17 1 21 5 9 16 22 6
16 3 19 12 4 2 17 21 8 15 9 16 22 7 14 1 10 20 13 5 18 11 6 17 8 22 9 20 12 19 4 10 3 18 2 7 17 21 5 16 1 13 11 15 6 14
18 9 5 8 15 17 16 22 7 3 18 4 19 13 12 6 10 20 21 2 14 1 11 19 5 15 14 1 18 7 3 10 17 20 6 16 22 12 21 9 4 8 13 11 2 19 20 15 8 7 12 5 2 4 16 17 10 22 18 1 9 11 20 13 6 3 14 21 19
21 1 8 13 9 19 6 21 15 17 16 3 11 2 18 12 14 10 7 4 22 5 20 22 7 22 4 9 20 2 6 16 5 13 12 14 18 1 11 19 3 15 17 21 8 10
156
23 13 3 7 6 5 22 8 1 2 18 9 21 4 20 11 16 10 14 17 12 15 19
24 1 13 16 7 11 22 4 9 18 6 12 8 20 21 10 14 5 19 15 3 17 2 25 16 8 5 10 3 2 15 4 11 22 7 18 19 1 20 6 12 17 13 9 14 21
26 22 21 20 14 17 1 4 6 8 7 15 5 9 19 18 3 11 12 16 13 2 10 27 11 1 6 9 19 15 21 14 16 13 2 10 17 5 4 7 22 18 20 8 12 3 28 12 7 14 16 4 19 13 9 10 8 21 2 18 15 20 5 17 6 11 22 1 3
29 4 12 20 3 14 2 15 22 16 10 5 17 19 11 9 21 6 7 1 8 18 13 30 20 7 18 6 5 19 12 17 8 11 16 1 14 2 9 10 15 4 3 22 21 13
31 7 22 3 19 10 17 18 1 4 13 21 5 15 6 12 20 16 11 9 14 2 8 32 14 20 22 16 8 10 13 17 3 5 9 18 7 21 1 2 4 11 12 19 15 6
33 22 17 5 13 1 4 6 14 9 18 19 3 21 16 11 15 10 20 12 8 2 7 34 7 2 13 4 17 20 9 22 8 5 14 11 16 19 6 21 1 3 10 15 12 18 35 8 22 7 4 12 21 18 16 14 1 15 3 9 6 17 5 11 19 10 13 20 2
36 15 9 17 3 19 4 5 18 7 8 6 22 2 11 10 14 12 1 16 20 13 21 37 12 5 13 17 11 14 9 4 8 16 10 7 3 19 1 22 21 20 18 15 2 6
38 12 8 22 20 16 2 7 21 5 19 17 4 9 15 1 18 14 13 3 11 6 10 39 6 8 19 5 20 17 13 4 10 14 21 18 3 7 15 16 2 1 22 9 12 11 40 10 8 4 22 18 21 3 11 5 17 12 14 20 1 16 19 6 15 7 2 13 9
41 6 12 22 3 15 14 1 10 18 4 13 17 20 7 2 21 16 19 9 11 5 8 42 9 15 4 21 13 11 16 8 3 14 17 19 22 18 10 1 7 12 2 6 5 20
43 20 11 15 5 1 7 8 18 19 3 16 6 12 21 17 9 2 13 10 4 22 14 44 11 20 12 18 17 2 13 21 9 14 8 1 19 10 3 7 4 22 16 5 15 6
45 6 15 21 1 13 19 18 17 2 8 4 16 7 10 3 11 5 12 22 9 14 20 46 12 22 21 1 5 14 6 20 18 16 8 10 4 11 13 19 2 3 9 15 7 17 47 19 5 1 6 2 11 14 12 22 8 18 10 21 7 4 17 16 20 9 3 13 15 48 10 9 16 8 12 5 15 6 7 1 4 22 2 20 13 21 11 19 18 17 3 14
157
49 12 14 20 8 7 10 11 13 17 16 15 6 21 4 18 3 19 22 5 1 9 2
50 20 7 3 14 17 12 21 10 22 8 16 9 2 4 15 6 11 19 5 13 1 18 51 20 18 5 3 11 12 19 4 2 9 16 22 7 21 17 15 6 10 1 13 14 8
52 9 20 8 21 11 7 6 19 1 5 17 10 4 3 16 12 15 14 22 13 18 2 53 12 13 5 15 17 19 22 8 4 1 6 10 18 21 20 9 3 2 11 16 7 14 54 4 7 10 6 16 14 13 12 19 11 2 22 9 3 15 21 8 18 1 17 20 5
55 6 8 5 18 20 17 2 19 10 14 21 22 16 7 15 1 4 3 13 9 12 11 56 4 16 3 2 21 7 10 1 8 11 14 22 20 13 15 6 9 18 19 5 12 17
57 9 22 14 5 1 20 13 2 7 10 18 11 8 19 3 21 12 16 4 17 15 6 58 6 9 15 12 20 21 10 13 16 17 5 2 7 4 1 14 8 11 22 18 3 19
59 2 1 13 16 7 11 17 8 4 12 18 22 6 9 20 21 10 14 5 19 15 3 60 16 20 3 10 5 14 8 2 11 17 6 1 7 18 13 4 22 12 19 9 21 15 61 1 5 16 15 14 21 6 20 2 22 3 4 7 9 17 8 19 13 12 18 10 11
62 1 13 11 14 5 12 16 17 4 19 6 10 3 7 15 20 8 21 22 9 2 18 63 7 19 4 18 6 3 22 1 21 5 10 14 16 12 11 13 9 17 2 15 20 8
64 13 14 3 15 19 16 21 1 11 6 9 10 4 2 8 7 18 12 22 17 5 20 65 20 8 5 4 6 19 14 3 7 21 18 16 12 17 10 11 22 2 9 13 1 15 66 4 8 10 2 19 16 12 1 7 5 14 21 22 13 15 11 9 18 20 3 6 17
67 22 17 3 1 4 8 12 14 13 6 11 7 9 16 15 2 10 18 21 20 19 5 68 13 21 12 7 3 1 22 8 10 17 9 19 18 14 15 16 20 11 6 2 5 4
69 2 4 6 10 14 21 3 19 22 17 8 16 7 12 5 15 20 11 1 18 13 9 70 14 17 2 9 12 19 22 21 8 10 4 15 3 5 1 11 13 20 18 16 6 7
71 5 14 18 21 11 4 3 12 22 7 8 17 6 19 2 13 16 20 1 9 15 10 72 16 4 14 22 5 3 1 18 21 10 9 17 2 20 12 6 7 8 19 13 15 11 73 21 15 13 11 1 18 17 14 3 4 16 10 22 20 8 9 7 6 2 5 12 19 74 19 3 12 13 22 20 10 4 2 15 21 11 18 9 8 5 16 7 14 1 6 17
158
75 4 22 20 5 17 8 2 18 19 11 15 16 12 6 21 9 14 13 1 10 3 7
76 1 7 21 16 13 18 17 2 6 15 5 8 19 11 3 4 22 9 12 10 20 14 77 18 8 7 17 13 20 6 9 1 5 19 11 22 4 15 16 2 10 3 14 21 12
78 4 19 14 21 11 7 16 2 22 12 13 20 6 9 1 3 10 5 15 8 18 17 79 15 1 3 10 12 2 8 18 11 6 17 21 19 14 4 13 22 20 7 9 5 16 80 14 22 7 19 21 8 6 16 15 20 10 5 9 13 2 11 17 18 1 4 12 3
81 10 3 14 16 7 12 21 20 17 4 22 6 2 15 11 18 9 1 8 5 13 19 82 10 3 18 16 7 12 21 22 13 4 17 20 2 15 11 5 9 1 14 8 19 6
83 2 21 15 3 8 12 6 11 10 5 13 4 1 18 19 14 22 9 16 20 17 7 84 3 12 1 14 4 16 21 22 7 20 6 10 15 17 13 8 2 11 5 9 18 19
85 16 22 4 18 3 9 17 1 13 7 15 14 8 19 2 12 20 10 5 6 11 21 86 8 2 18 11 9 20 12 6 22 14 4 7 3 21 17 16 1 5 10 19 15 13 87 4 19 8 3 12 16 21 10 22 5 1 9 2 15 17 14 20 13 18 11 7 6
88 18 13 10 22 11 7 6 17 19 2 8 3 16 21 5 9 12 15 4 20 1 14 89 4 19 6 9 5 16 20 18 7 15 1 10 11 22 13 2 21 14 8 3 17 12
90 13 15 22 7 6 14 1 2 4 16 21 20 19 17 5 12 3 8 11 10 18 9 91 10 20 2 6 12 14 7 19 8 16 15 4 21 5 3 22 13 9 17 1 18 11 92 8 2 21 15 7 20 10 14 16 6 9 22 13 18 12 5 4 19 1 3 17 11
93 10 22 19 3 21 1 18 11 15 6 4 16 17 8 13 7 20 5 2 12 9 14 94 22 20 17 16 12 8 1 13 6 14 9 18 19 3 11 4 7 2 5 10 15 21
95 1 5 21 2 15 4 8 18 9 14 16 10 20 3 11 12 13 22 7 6 19 17 96 2 3 20 13 9 1 22 7 10 19 12 14 8 11 4 6 21 5 18 15 17 16
97 3 12 4 6 8 19 21 20 13 18 14 1 11 10 22 15 17 7 9 5 16 2 98 8 17 12 21 16 11 4 1 3 9 13 10 6 20 18 14 7 22 2 5 19 15 99 3 7 2 21 20 19 1 11 5 8 6 12 22 4 15 17 18 10 9 16 13 14
100 2 13 11 16 7 1 17 8 4 22 18 12 6 9 20 14 10 21 5 19 15 3
159
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:
160
Domain LARGE: [350, 500]
Fungsi Keanggotaan:
2. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Generasi
Semesta pembicaraan: [0, 1000]
Domain SHORT: [50, 200]
Fungsi Keanggotaan:
161
Domain MEDIUM: [80, 275]
Fungsi Keanggotaan:
Domain LONG: [350, 500]
Fungsi Keanggotaan:
3. Semesta Pembicaraan, Domain dan Fungsi Keanggotaan Crossover
162
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:
163
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:
164
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).
165
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).
166
167