KAJIAN ALGORITMA GENETIKA PADA TRAVELLING
SALESMAN PROBLEM
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains
WIRA SEPTI ELISYAH TANJUNG
070823003
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
ALAM
UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : KAJIAN ALGORITMA GENETIKA PADA TRAVELLING SALESMAN PROBLEM
Kategori : SKRIPSI
Nama : WIRA SEPTI ELISYAH TANJUNG
Nomor Induk Mahasiswa : 070823003
Program Studi : SARJANA (S1) MATEMATIKA
Departemen : MATEMATIKA
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA)
UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, Juli 2010
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Drs. Marwan Harahap, M.Eng Drs. Sawaludin, M.IT NIP. 19461225 197403 1 001 NIP.19591231 199802 1 001
Diketahui/Disetujui oleh
Departemen Matematika FMIPA USU Ketua.
Dr. Saib Suwilo, M.Sc
PERNYATAAN
KAJIAN ALGORITMA GENETIKA PADA TRAVELLING SALESMAN PROBLEM
SKRIPSI
Saya mengaku bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing – masing disebutkan sumbernya.
Medan, Juli 2010
PENGHARGAAN
Puji dan Syukur penulis panjatkan kehadirat Allah SWT yang Maha Pemurah dan Maha Penyayang, karena atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini dalam waktu yang ditetapkan.
Ucapan terima kasih penulis sampaikan kepada Bapak Drs. Sawaluddin, M.IT dan Bapak Drs. Marwan Harahap, M.Eng, selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan bimbingan kepada saya untuk menyempurnakan skripsi ini. Terima kasih untuk Bapak Drs. Marihat Situmorang, M.Kom dan Bapak Drs. Suwarno Ariswoyo, M.Si yang telah memberikan kritik dan saran yang juga sangat membantu dalam penulisan skripsi ini. Ucapan terima kasih juga ditujukan kepada Ketua dan sekretaris Departemen Dr. Saib Suwilo, M.Sc dan Henry Rani Sitepu, M.Si, Dekan dan Pembantu Dekan serta Dosen dan Pegawai Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, dan teman seangkatan 2007 yang turut memberikan dukungan.
Tidak lupa ucapan terima kasih yang sebesar-besarnya kepada Wirdansyah Tanjung (Papa), Dora Nst (Mama), Wira Febriansyah Tanjung ( Abang) selama ini telah memberikan dukungan baik materi dan juga do’a yang sangat bemanfaat bagi penulis. Spesial terima kasih buat Abrar Nazira yang juga telah memberikan support dan mendukung penulis dalam menyelesaikan skripsi ini.
Juga kepada sohib-sohibku yang berada di Padepokan FMIPA tercinta yaitu Uci (adkku cynk),Verdi_Fauzi_Maulina (cece)_ayu (iyou kawai)_imel yang bocor abiz, Desni, Arlia, Dini, Debby, B’Ghaly, Rossy yang baik hati, Ade. M_Ihsan_Ega_Erika_hendrik(dogok)_k’valen mereka makhluk Tuhan yang super gokil, dan seluruh teman2 yang namanya tidak dapat disebutkan di Skripsi saya yang bagus ini saya ucapkan terima kasih, Semoga Allah SWT membalas segala budi baik yang sudah kalian berikan. Amin……..
Medan, 18 Juli 2010
Penulis,
ABSTRAK
ABSTRACT
DAFTAR ISI
Halaman
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK iv
ABSTRACT v
DAFTAR ISI vi
DAFTAR GAMBAR viii
Bab 1 PENDAHULUAN 1
1.1 Latar Belakang 1
1.2 Perumusan Masalah 3
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 4
1.5 Kontribusi Penelitian 4
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Bab 2 LANDASAN TEORI 6
2.1 Algoritma Genetika 6
2.1.1 Teknik Encoding 7
2.1.2 Proses Seleksi 8
2.1.3 Proses Rekombinasi 8
2.1.4 Proses Mutasi 10
2.1.5 Kawin Silang 12
2.2 Mekanisme Algoritma Genetika 13
2.3 Travelling Salesman Problem (TSP) 14
Bab 3 PEMBAHASAN 17 3.1 Algoritma Genetika 17
3.2 Rancangan Sistem 26
Bab 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 31
4.1 Implementasi 31
4.1.1 Tampilan Menu Utama 31
4.1.2 Tampilan TSP 32
4.1.3 Tampilan About 32
4.1.4 Tampilan Help 33
4.2 Pengujian Sistem 34
Bab 5 KESIMPULAN DAN SARAN 38
5.1 Kesimpulan 38
5.2 Saran 39
Daftar Pustaka 40
DAFTAR GAMBAR
Halaman
Gambar 2.1 Mekanisme Algoritma Genetika 13
Gambar 3.1 Graf Jarak Antar Kota 17
Gambar 3.2 Flowchart Rancangan Sistem 27
Gambar 3.3 Rancangan Menu Utama 28
Gambar 3.4 Rancangan Sistem TSP 29
Gambar 3.5 Rancangan Help 30
Gambar 3.6 Rancangan About 30
Gambar 4.1 Tampilan Menu Utama 31
Gambar 4.2 Tampilan TSP 32
Gambar 4.3 Tampilan About 33
Gambar 4.4 Tampilan Help 33
ABSTRAK
ABSTRACT
BAB 1
PENDAHULUAN
1.1Latar Belakang
Traveling Salesman Problem (TSP) merupakan sebuah permasalahan optimasi yang dapat diterapkan pada berbagai kegiatan seperti routing (Samuel, dkk 2005). Masalah optimasi TSP terkenal dan telah menjadi standar untuk mencoba algoritma yang komputational. Pokok permasalahan dari TSP adalah seorang salesman harus mengunjungi sejumlah kota yang diketahui jaraknya satu dengan yang lainnya. Semua kota yang ada harus dikunjungi oleh salesman tersebut dan kota tersebut hanya boleh dikunjungi tepat satu kali. Permasalahannya adalah bagaimana salesman
tersebut dapat mengatur rute perjalanannya sehingga jarak yang ditempuhnya merupakan rute yang optimum yaitu jarak minimum terbaik. (Samuel, dkk 2005).
Banyak metode yang dapat dipakai untuk menyelesaikan TSP yaitu Hill Climbing Method, Ant Colony System dan Dynamic Programming. (Samuel, dkk 2005). Metode lain yang dapat dipakai untuk menyelesaikan TSP adalah algoritma genetik. Algoritma genetik merupakan sebuah algoritma yang meniru cara kerja proses genetika pada makhluk hidup, dimana terdapat proses seleksi, rekombinasi dan mutasi untuk mendapatkan kromosom terbaik pada suatu generasi. Pada TSP ini digunakan metode order crossover sebagai teknik rekombinasi dan metode insertion mutation sebagai teknik mutasi yang digunakan pada algoritma genetik. (Samuel, dkk 2005).
Untuk mengetahui bagaimana penerapan algoritma genetika dalam menyelesaikan traveling salesman problem, dibuatkan sebuah program simulasi sederhana dengan menggunakan piranti lunak Microsoft Visual Basic 6.0. Dalam program simulasi tersebut, traveling salesman problem yang akan digunakan adalah
Algoritma genetika adalah sebuah teknik optimasi yang berdasarkan pada proses evolusi alam. Kromosom yang terbaik akan bertahan hidup sehingga generasi berikutnya akan lebih baik karena kromosom pada generasi tersebut diturunkan dari orang tua yang baik pula. Konsep yang sama dikembangkan untuk penyelesaian masalah dengan cara mencari himpunan solusi terbaik yang bertahan hidup dan melakukan rekombinasi solusi yang kurang baik untuk mendapatkan kromosom lain yang lebih baik pada generasi berikutnya.
Proses algoritma genetika terdiri dari beberapa langkah, yaitu pengkodean (encoding), seleksi (selection), persilangan (crossover), mutasi (mutation) dan
decoding. Pertama-tama, proses encoding adalah suatu proses kodifikasi atas solusi dari permasalahannya. Hasil encoding adalah berbentuk string yang merupakan representasi dari suatu kromosom. Proses selection menentukan kromosom mana yang tetap tinggal pada generasi berikutnya. Proses crossover akan menghasilkan kromosom baru yang merupakan pengganti dari kromosom yang hilang sehinga total kromosom pada satu generasi berjumlah tetap. Proses mutasi memungkinkan terjadinya kromosom baru secara unpredictable. Proses terakhir adalah decoding
yaitu mengambil makna dari hasil kromosom terbaik untuk menjawab permasalahannya. (Samuel, dkk 2005).
Algoritma Genetika sebagai cabang dari Algoritma Evolusi didasarkan pada proses genetik yang ada dalam makhluk hidup; yaitu perkembangan generasi dalam sebuah populasi yang alami, secara lambat laun mengikuti prinsip seleksi alam atau "siapa yang kuat, dia yang bertahan (survive)". Peletak prinsip dasar sekaligus pencipta algoritma genetika adalah John Holland. (Fariza, dkk 2006). Algoritma genetika menggunakan analogi secara langsung dari kebiasaan yang alami yaitu seleksi alam. Algoritma ini bekerja dengan sebuah populasi yang terdiri dari individu-individu, yang masing-masing individu mempresentasikan sebuah solusi yang mungkin bagi persoalan yang ada. Dalam kaitan ini, individu dilambangkan dengan sebuah nilai fitness yang akan digunakan untuk mencari solusi terbaik dari persoalan yang ada. (Fariza, dkk 2006).
diselidiki. Dengan cara ini, jumlah waktu komputasi yang diperlukan meningkat seiring dengan bertambahnya ukuran dari persoalan, yaitu jumlah kota. (Fariza, dkk 2006).
Teknologi AI juga mampu mengakomodasi adanya ketidakpastian dan ketidak tepatan dari data input. Dengan didasari pada teori himpunan, maka pada tahun 1965 muncul logika Fuzzy. Kemudian pada tahun 1975 John Holland mengatakan bahwa setiap problem berbentuk adaptasi (alami maupun buatan) secara umum dapat diformulasikan dalam terminologi genetika. Algoritma genetika ini merupakan simulasi proses evolusi Darwin dan operasi genetika atas kromosom. (Kusumadewi, 2003).
Berdasarkan hal yang telah diuraikan diatas maka tugas akhir ini diberi judul “Kajian Algoritma Genetika Pada Travelling Salesman Problem”.
1.2 Perumusan Masalah
Permasalahan yang dibahas adalah algoritma genetika untuk menyelesaikan
Travelling Salesman Problem yaitu mencari rute dengan jarak terpendek dengan hasil yang akurat dan menghasilkan rute terbaik yang optimal dan mengkaji hubungan algoritma genetika dengan TSP dalam menentukan rute dengan jarak terpendek yang optimal.
1.3Batasan Masalah
Agar pembahasan tidak menyimpang, maka perlu dibuat suatu batasan masalah sebagai berikut :
1. Masalah yang dibahas adalah masalah TSP (travelling salesman problem). 2. Hanya menentukan rute yang optimal berdasarkan jarak (single objective). 3. Algoritma yang digunakan adalah genetika.
1.4Tujuan Penelitian
Adapun tujuan dari tugas akhir ini adalah untuk menentukan rute terpendek yang optimal bagi seorang salesman dalam mengunjungi kota-kota dengan menggunakan algoritma genetika.
1.5Kontribusi Penelitian
Dengan adanya penelitian ini dapat menambah wawasan dan pemahaman kepada penulis mengenai algoritma genetika dalam menyelesaikan travelling salesman problem (TSP).
1.6 Metode Penelitian
Metode yang digunakan pada penelitian ini adalah melakukan studi literatur dengan cara mengumpulkan data-data mengenai teori-teori travelling salesman problem
(TSP) dan algoritma genetika.
Langkah-langkah yang dilakukan dalam penelitian ini adalah:
a. Menjelaskan tentang travelling salesman problem dan algoritma genetika. b. Menjelaskan penggunaan dan pengembangan algoritma genetika dalam
menentukan jalur terpendek dari beberapa kota pada masalah travelling salesman problem dengan terlebih dahulu menentukan jaraknya.
c. Mengerjakan secara bertahap dengan algoritma genetika dimulai dari pengkodean kromosom, menginisialisasi populasinya, menentukan nilai fitness, melakukan proses seleksi, perkawinan silang dan mutasi.
1.7 Sistematika Penulisan
Penulisan tugas akhir ini akan mengikuti sistematika sebagai berikut: BAB 1 : PENDAHULUAN
Bab ini menjelaskan tentang latar belakang, perumusan masalah, batasan masalah, tujuan penelitian, kontribusi penelitian, metodologi penelitian yang digunakan dalam penelitian, serta sistematika dalam penulisan tugas akhir ini.
BAB 2 : LANDASAN TEORI
Bab ini menjelaskan mengenai teori tentang algoritma genetika, mekanisme algoritma genetika dan persoalan travelling salesman problem.
BAB 3 : ANALISA DAN PERANCANGAN
Bab ini menguraikan tentang analisis rancangan sistem pencarian jarak terdekat pada permasalahan travelling salesman problem dengan menggunakan algoritma genetika serta perancangan antar muka pemakai (user interface).
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Berisi tentang implementasi aplikasi yang sudah jadi serta pengujian sistem.
BAB 5 : KESIMPULAN DAN SARAN
BAB 2
LANDASAN TEORI
2.1 Algoritma Genetika
Algoritma genetika merupakan metode pencarian yang disesuaikan dengan proses genetika dari organisme-organisme biologi yang berdasarkan pada teori evolusi Charles Darwin. (Kusumadewi, 2003). Algoritma genetika pertama kali ditemukan oleh John Holland, itu dapat dilihat dalam bukunya yang berjudul Adaption in Natural and Artificial Systems pada tahun 1960-an dan kemudian dikembangkan bersama murid dan rekan kerjanya di Universitas Michigan pada tahun 1960-an sampai 1970-an. Tujuan Holland mengembangkan Algoritma Genetika saat itu bukan untuk mendesain suatu algoritma yang dapat memecahkan suatu masalah, namun lebih mengarah ke studi mengenai fenomena adaptasi di alam dan mencoba menerapkan mekanisme adaptasi alam tersebut ke dalam sistem komputer. (Fariza, dkk 2006).
Algoritma Genetika yang dibuat Holland merupakan sebuah metode untuk memisahkan satu populasi kromosom (terdiri dari bit-bit 1 dan 0) ke populasi baru dengan menggunakan “seleksi alam” dan operator genetik seperti crossover,
mutation, invertion. Crossover menukar bagian kecil dari dua kromosom, mutation
mengganti secara acak nilai gen di beberapa lokasi pada kromosom, invertion
membalikkan urutan beberapa gen yang berurutan dalam kromosom. Dasar teori inilah yang menjadi dasar kebanyakan program yang menggunakan algoritma genetika pada saat ini. (Fariza, dkk 2006).
Hal-hal yang harus dilakukan dalam menggunakan algoritma genetika adalah:
1. Mendefinisikan individu, dimana individu menyatakan salah satu solusi (penyelesaian) yang mungkin dari permasalahan yang diangkat.
2. Mendefinisikan nilai fitness, yang merupakan ukuran baik-tidaknya sebuah individu atau baik-tidaknya solusi yang didapatkan.
4. Menentukan proses seleksi yang akan digunakan. 5. Menentukan proses perkawinan silang (cross-over). 6. Mutasi gen yang akan digunakan.
2.1.1 Teknik Encoding
Proses encoding adalah salah satu proses yang sulit dalam algoritma genetika. Hal ini disebabkan karena proses encoding untuk setiap permasalahan berbeda karena tidak semua teknik encoding cocok untuk setiap permasalahan. Proses encoding
menghasilkan string yang kemudian disebut kromosom. String terdiri dari sekumpulan bit yang dikenal sebagai gen. Jadi satu kromosom terdiri dari sejumlah gen.
Ada bermacam-macam teknik encoding yang dapat dilakukan dalam algoritma genetika. Beberapa teknik encoding itu antara lain adalah binary encoding,
permutation encoding, value encoding serta tree encoding. Teknik encoding yang digunakan pada Traveling Salesman Problem adalah permutation encoding. Selain digunakan pada Traveling Salesman Problem, teknik ini juga dapat digunakan pada
Task Ordering Problem. Pada permutation encoding, kromosom-kromosom adalah kumpulan angka yang mewakili posisi dalam sebuah rangkaian. Dalam permutation
encoding, setiap kromosom adalah sebuah string dari nomor-nomor seperti dibawah ini.
Kromosom (Rute Kota) A B C D E F G H I Gen (Jarak) 1 5 3 2 6 4 7 9 8
2.1.2 Proses Seleksi
Proses seleksi adalah proses yang memegang peranan penting dalam algoritma genetika. Proses seleksi ini digunakan agar hanya kromosom-kromosom yang berkualitas yang dapat melanjutkan peranannya dalam proses algoritma genetika berikutnya. Ada bermacam-macam teknik untuk melakukan proses seleksi pada suatu permasalahan. Teknik seleksi yang akan digunakan tergantung pada permasalahan yang akan diselesaikan. Ada bermacam-macam teknik seleksi, diantaranya adalah Roulette Wheel Selection, Rank Base Selection, dan Steady State Selection.
Proses penseleksian ini menggunakan teknik peringkat atau Rank Base Selection. Pada proses penseleksian digunakan suatu parameter yang disebut kesesuaian atau fitness. Fitness digunakan untuk menentukan seberapa baik kromosom akan bertahan hidup. Makin tinggi nilai 0 ≤ fitness≤ 1, suatu kromosom maka makin baik kromosom itu akan bertahan hidup. Nilai fitness tertinggi merepresentasikan jawab terbaik atas persoalan itu sendiri. Penentuan berapa besar nilai fitness suatu kromosom berdasarkan fungsi fitness yang didefinisikan tersendiri. Pada Rank Base Selection, hanya kromosom yang mempunyai nilai fitness yang tinggilah yang dapat bertahan pada generasi berikutnya, sebaliknya yang mempunyai nilai fitness rendah akan hilang pada generasi berikutnya. Untuk mempertahankan jumlah kromosom tetap pada satu generasi maka perlu dibangkitkan kromosom baru yang merupakan hasil penyilangan dari kromosom yang hidup. Untuk itu dilakukan proses rekombinasi. (Samuel, dkk 2005).
2.1.3 Proses Rekombinasi
kromosom akan mengalami crossover (Samuel, dkk 2005).
Teknik rekombinasi yang digunakan adalah teknik order crossover. Order crossover (OX) diperkenalkan oleh Davis. (Samuel, dkk 2005). Teknik ini diawali dengan membangkitkan dua bilangan acak. Kemudian gen yang berada diantara kedua bilangan acak akan disalin ke offspring dengan posisi yang sama. Langkah berikutnya untuk mendapatkan offspring pertama adalah mengurutkan gen yang berada pada parent kedua dengan urutan gen yang berada pada posisi setelah bilangan acak kedua diikuti dengan gen yang berada pada posisi sebelum bilangan acak pertama dan diakhiri dengan gen yang berada pada posisi diantara kedua bilangan acak. Kemudian gen yang telah diurutkan tersebut dibandingkan dengan
offspring pertama. Apabila gen tersebut ada pada offspring kedua maka abaikan gen tersebut dari urutan itu. Kemudian masukkan urutan yang baru saja didapat pada
offspring dengan cara memasukkan urutan gen pada posisi setelah bilangan acak kedua terlebih dahulu dan sisanya dimasukkan pada posisi sebelum bilangan acak pertama. Begitu juga untuk menghasikan offspring kedua. Contoh order crossover
adalah sebagai berikut:
p1 = (1 2 3 | 4 5 6 7 |8 9) p2 = (4 5 2 | 1 8 7 6 |9 3) => copy segmen yang dipilih o1 = (x x x | 4 5 6 7 |x x) o2 = (x x x | 1 8 7 6 |x x) =>
p2 : 9-3-4-5-2-1-8-7-6
pindahkan4, 5, 6, 7 dan letakkan dio1 : 9-3-2-1-8 o1 = (x x x | 4 5 6 7 |x x) = (2 1 8 | 4 5 6 7| 9 3) dengan jalan yang sama buat o2 sehingga o2 = (3 4 5 | 1 8 7 6 |9 2)
Keterangan: p1 = parent 1 p2 = parent 2
2.1.4 Proses Mutasi
Proses mutasi ini dilakukan setelah proses rekombinasi dengan cara memilih kromosom yang akan dimutasi secara acak, dan kemudian menentukan titik mutasi pada kromosom tersebut secara acak pula. Banyaknya kromosom yang akan mengalami mutasi dihitung berdasarkan probabilitas mutasi yang telah ditentukan terlebih dahulu. Apabila probabilitas mutasi adalah 100% maka semua kromosom yang ada pada populasi tersebut akan mengalami mutasi. Sebaliknya, jika probabilitas mutasi yang digunakan adalah 0% maka tidak ada kromosom yang mengalami mutasi pada populasi tersebut.
Ada bermacam-macam teknik mutasi yang dapat digunakan untuk menyelesaikan suatu masalah dengan algoritma genetika. Seperti pada teknik rekombinasi, teknik mutasi juga dirancang untuk digunakan pada suatu masalah yang spesifik sehingga tidak setiap teknik mutasi dapat diterapkan pada suatu masalah yang akan diselesaikan. Selain itu, teknik mutasi yang digunakan juga harus sesuai dengan teknik encoding yang digunakan untuk menyelesaikan permasalahan tersebut. Beberapa teknik mutasi yang dapat digunakan dalam penyelesaian
Traveling Salesman Problem adalah inversion mutation, insertion mutation, dan
reciprocal mutation. (Samuel, dkk 2005).
Teknik mutasi yang digunakan dalam makalah adalah teknik insertion mutation. Teknik ini diawali dengan memilih dua bilangan acak kemudian gen yang berada pada posisi bilangan acak pertama ditukar dengan gen yang berada pada bilangan acak kedua. (Samuel, dkk 2005).
Beberapa teknik mutasi adalah:
a. Bit inversion – pemilihan bit-bit yang di-inversi
11001001 => 10001001
Penambahan sebuah nomor kecil untuk pemilihan angka adalah dengan penambahan atau pengambilan sebuah nomor yang terkecil.
(1.29 5.68 2.86 4.11 5.55) => (1.29 5.68 2.73 4.22 5.55).
Algoritma genetika memiliki beberapa karakteristik yang perlu diketahui sehingga dapat terbedakan dari prosedur pencarian atau optimasi yang lainnya Adapun karakteristik dari algoritma genetika adalah:
1. Bekerja dengan pengkodean dari himpunan solusi permasalahan berdasarkan parameter yang telah ditetapkan dan bukan parameter itu sendiri.
2. Melakukan pencarian pada sebuah populasi dari sejumlah individu-individu yang merupakan solusi pemasalahan bukan hanya dari sebuah individu.
3. Merupakan informasi fungsi objektif (fitness) sebagai cara untuk mengevaluasi individu yang mempunyai solusi terbaik, bukan turunan dari suatu fungsi.
4. Merupakan aturan peluang dan bukan aturan deterministik. Kelebihan algoritma genetika adalah sebagai berikut:
a. Algoritma genetika tidak terlalu banyak memerlukan persyaratan matematika dalam penyelesaian proses optimasi dan dapat diaplikasikan pada beberapa jenis fungsi objektif dengan beberapa fungsi pembatas baik berbentuk liner maupun non liner.
b. Operasi evolusi dari algoritma genetika sangat efektif untuk mengobservasi posisi global secara acak.
c. Algoritma genetika mempunyai fleksibilitas untuk diimplementasikan secara efisien pada problematika tertentu.
Dalam proses pengerjaan Algoritma Genetika menggunakan 5 tahapan sebagai berikut:
2.1.5 Kawin Silang
Single point crossover – pemilihan satu titik crossover, string binary dari awal chromosome untuk titik crossover adalah di-copy dari orang tua pertama dan sisanya di-copy dari orang tua kedua.
11001011 + 11011111 = 11001111
Two point crossover – pemilihan dua titik crossover, string binary dari awal dari
chromosome untuk titik pertama crossover di-copy dari orang tua pertama, bagian dari the first untuk titik crossover yang kedua di-copy dari orang tua kedua dan sisanya di-copy dari orang tua pertama.
11001011 + 11011111 = 11011111
Uniform crossover – bit-bit secara acak di-copy dari orang tua pertama atau kedua.
11001011 + 11011101 =
11011111
Arithmetic crossover - beberapa operasi arithmetic adalah ditampilkan untuk membuat offspring yang baru.
Hal yang dapat dilihat dari perpindahan bilangan biner di atas adalah kawin silang (crossover) dapat dilakukan dengan empat cara yaitu single point crossover, two point crossover, uniform crossover dan arithmetic crossover. Dari keempat cara tersebut didapat bahwa arithmetic crossover merupakan cara yang lebih cepat untuk menyelesaikan perkawinan silang (crossover).
2.2 Meknisme Algoritma Genetika
Algoritma genetika dimulai dengan pembentukan sejumlah solusi yang dilakukan secara acak. Sebuah solusi yang dibangkitkan dalam algoritma genetika disebut sebagai kromosom, sedangkan kumpulan kromosom tersebut disebut sebagai populasi. Sebuah kromosom dibentuk dari komponen penyusun disebut dengan gen dan nilainya dapat berupa bilangan numerik, biner, simbol ataupun karakter tergantung dari permasalahan yang ingin diselesaikan.
Secara umum blok diagram dari mekanisme kerja algoritma genetika adalah seperti pada gambar 2.1.
Gambar 2.1 Meknisme Algoritma Genetika
Bangkitkan populasi awal
Evaluasi fungsi tujuan
Kriteria optimasi tercapai
Individu-individu terbaik
Selesai Mulai
Seleksi
Persilangan
Mutasi Bangkitkan
Populasi awal
Ya
2.3 Travelling Salesman Problem (TSP)
Masalah optimasi TSP terkenal dan telah menjadi standar untuk mencoba algoritma yang komputational. Pokok permasalahan dari TSP adalah seorang salesman harus mengunjungi sejumlah kota yang diketahui jaraknya satu dengan yang lainnya. Semua kota yang ada harus dikunjungi oleh salesman tersebut dengan memilih rute yang terpendek dan kota tersebut hanya boleh dikunjungi tepat satu kali sehingga jarak yang ditempuhnya merupakan jarak minimum.
Algoritma genetik merupakan sebuah algoritma yang meniru cara kerja proses genetika pada makhluk hidup, dimana terdapat proses seleksi, rekombinasi dan mutasi untuk mendapatkan kromosom terbaik pada suatu generasi.
Pada tulisan ini membahas bagaimana algoritma genetik menyelesaikan TSP dengan menggunakan metode order crossover sebagai teknik rekombinasi dan metode insertion mutation sebagai teknik mutasi yang digunakan pada algoritma genetik. Untuk mengetahui bagaimana penerapan algoritma genetika dalam menyelesaikan traveling salesman problem, dibuatkan sebuah program simulasi sederhana dengan menggunakan piranti lunak Microsoft Visual Basic 6.0. Dalam program simulasi tersebut, traveling salesman problem yang akan digunakan adalah
Symmetric Traveling Salesman Problem dimana jarak kota A ke kota B adalah sama dengan jarak kota B ke kota A.
Masalah penilaian metode yang terbaik sulit untuk dilakukan karena metode-metode yang sangat berkaitan erat satu sama lain tidak dapat dinilai hanya melalui perbandingan yang sederhana. Sepertinya perlu dilakukan pertimbangan ulang untuk menentukan kriteria perbandingan antar metode tersebut.
Agar ide perbandingan metode-metode di atas dapat diaplikasikan maka dapat menganalisis metode penyelesaian yang diberikan untuk dapat memberikan jaminan bahwa setiap n akan memakan waktu sejumlah f(n) untuk berapapun n-kota TSP, dimana f(n) ialah sebuah fungsi yang menghasilkan waktu yang dibutuhkan untuk menyelesaikan persoalan TSP n-kota. Sekarang untuk membandingkan dua buah metode penyelesaian, membandingkan fungsi mana yang menghasilkan hasil yang terbaik yang diberikan di antara dua buah solusi penyelesaian tersebut. Hal ini tentu saja menghasilkan hasil perhitungan yang salah karena sebuah metode penyelesaian yang benar-benar baik namun dianalisis dengan buruk akan terlihat buruk jika dibandingkan dengan metode penyelesaian lain yang dianalisis dengan baik. Pada beberapa persoalan komputasi, bagaimanapun juga studi mengenai algoritma dan fungsi telah memberikan hasil yang baik yang penting bagi pengembangan untuk penyelesaian persoalan praktis. Hal ini telah menjadi subjek studi utama di dalam bidang ilmu komputer.
Dalam metode penyelesaian persoalan TSP, mudah untuk mengembangkan metode penyelesaian yang memiliki fungsi yang memiliki f(n) = 1)! = 1) x (n-2) x (n-3) … x 3 x 2 x 1 dan jumlah jalur perjalanan antar kota yang mungkin terjadi ialah (n-1)!/2. Hasil yang lebih telah dikembangkan pada tahun 1962 oleh Michael Held dan Richard Karp, yang menemukan algoritma yang menghasilkan f(n) yang memiliki proporsi n22n, yaitu n x n x 2 x 2 x 2 x … x 2, dimana ada sebanyak n perkalian 2. Untuk setiap n yang bernilai besar, fungsi f(n) Held-Karp akan selalu lebih kecil jika dibandingkan dengan (n-1). Bagi setiap orang yang tertarik untuk menyelesaikan persoalan TSP yang besar, ada sebuah kabar buruk bahwa selama 45 tahun sejak Held dan Karp menemukan fungsi f(n) = n22n ternyata tidak ditemukan fungsi f(n) yang lebih baik. Hal ini tentu saja mengecewakan karena dengan n = 30 fungsi f(n) Held-Karp menghasilkan nilai yang sangat besar. Dan untuk n = 100, adalah suatu hal yang mustahil untuk menyelesaikan persoalan ini dengan kemampuan yang dimiliki komputer yang ada saat ini.
itu, n x n x n x … x n dimana n muncul sebanyak c kali. Diskusi mengenai teknis permasalahan ini dapat dilihat pada tulisan Stephen Cook’s dan Institut Matematika Clay menawarkan hadiah sebesar satu juta US dolar bagi siapa pun yang dapat menemukan metode yang lebih baik.
BAB 3
PEMBAHASAN
3.1 Algoritma Genetika
Pada algoritma genetika proses encoding menghasilkan string yang kemudian disebut kromosom yang terdiri dari sekumpulan bit-bit. Bit-bit ini dikenal sebagai gen penyusun sebuah kromosom. Jadi satu kromosom terdiri dari sejumlah gen-gen. Teknik encoding yang digunakan pada Traveling Salesman Problem (TSP) adalah
permutation encoding.
Pada TSP kromosom mewakili urutan kota yang dikunjungi salesman. Jadi apabila satu kromosom berbentuk sebagai berikut P1 = (X1,X2,X3,..,Xn) berarti
salesmen bergerak dari kota bernomor X1 ke X2 dan seterusnya hingga ke kota ke
Xn.
Berikut ini contoh persoalan TSP terdapat 5 (lima) kota yang akan dilalui oleh seorang pedangang keliling, misalnya kota A,B,C,D,E. Perjalanan dimulai dari kota A dan berakhir di kota A. Jarak antar kota diperlihatkan pada graf gambar 3.1 di bawah ini:
Kriteria berhenti ditentukan terlebih dahulu yaitu apabila setelah dalam beberapa generasi berturut-turut diperoleh nilai fitness yang terendah tidah berubah, maka pemilihan nilai fitness yang terendah sebagai syarat karena nilai tersebut yang merepresentasikan jarak terdekat yang dicari pada persoalan TSP ini.
Pada gambar 3.1 terdapat 4 kota yang akan menjadi gen dalam kromosom yaitu kota-kota selain kota asal (A). Proses yang dilakukan adalah:
a. Poses Inisialisasi
Proses Inisialisasi dengan menggunakan 6 buah populasi dalam satu generasi yaitu:
Kromosom[1] = [B D E C] 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]
b. Evaluasi Kromosom
Pada proses Evaluasi kromosom dihitung nilai fitness dari tiap kromosom yang telah dibangkitkan dengan hasil sebagai berikut:
Kromosom[1]: Fitness[1] = AB+BD+DE+EC+CA = 7 + 2 + 6 + 3 + 5 = 23 Kromosom[2]: Fitness[2] = AD+DB+BE+EC+CA = 9 + 2 + 8 + 3 + 5 = 27 Kromosom[3]: Fitness[3] = AC+CB+BD+DE+EA = 5 + 7 + 2 + 6 + 9 = 29 Kromosom[4]: Fitness[4] = AE+EB+BC+CD+DA = 9 + 8 + 7 + 4 + 9 = 37 Kromosom[5]: Fitness[5] = AE+EC+CB+BD+DA = 9 + 3 + 7 + 2 + 9 = 30 Kromosom[6]: Fitness[6] = AC+CD+DE+EB+BA = 5 + 4 + 6 + 8 + 7 = 30
c. Seleksi Kromosom
Maka diperoleh nilai inverse setiap Kromosom yaitu: a. Kromosom [1] yaitu Q[1] = 1/23 = 0,043 b. Kromosom [2] yaitu Q[2] = 1/27 = 0,037 c. Kromosom [3] yaitu Q[3] = 1/29 = 0,034 d. Kromosom [4] yaitu Q[4] = 1/37 = 0,027 e. Kromosom [5] yaitu Q[5] = 1/30 = 0,033 f. Kromosom [6] yaitu Q[6] = 1/30 = 0,033
Total Nilai Inverse Kromosom adalah 0,043 + 0,037 + 0,034 + 0,027 + 0,033 + 0,033 = 0,207. Untuk mencari probabilitas kita menggunakan rumus berikut :
P[i] = Q[i]/Total Inverse ... (2)
a. Kromosom [1] yaitu P[1] = 0,043/0,207 = 0,208 b. Kromosom [2] yaitu P[2] = 0,037/0,207 = 0,179 c. Kromosom [3] yaitu P[3] = 0,034/0,207 = 0,164 d. Kromosom [4] yaitu P[4] = 0,027/0,207 = 0,130 e. Kromosom [5] yaitu P[5] = 0,033/0,207 = 0,159 f. Kromosom [6] yaitu P[6] = 0,033/0,207 = 0,159
Dari probabilitas di atas, dapat dilihat bahwa kromosom ke-1 mempunyai nilai
fitness yang paling kecil, jadi mempunyai probabilitas lebih besar untuk terpilih pada generasi selanjutnya dari pada kromoson lain.
Untuk proses seleksi menggunakan roulete-wheel (pemilhan secara acak), untuk itu terlebih dahulu mencari nilai kumulatif (C) dari probabilitasnya.
Kromosom [1] adalah C[1] = 0,208
Jadi Nilai Komulatif Probabiliti Kromosom (C) adalah 0,999.
Proses roulete-wheel adalah untuk membangkitkan nilai acak (R) antara 0-1. Jika Nilai Acak R untuk kromosom < Nilai Komulatif Probabiliti Kromosom (C) maka kromosom ke-k sebagai induk (R[k]<C[k], selain itu pilih kromosom ke-k sebagai induk dengan syarat C[k-1] < R[k] < C[k]. Lakukan pemutaran roulete-wheel
sebanyak jumlah kromosom yaitu 6 kali untuk membangkitkan bilangan acak R. Sebagai contoh nilai acak R yang diperoleh adalah:
Nilai Acak Kromosom [1] adalah R[1] = 0,314 Nilai Acak Kromosom [2] adalah R[2] = 0,111 Nilai Acak Kromosom [3] adalah R[3] = 0,342 Nilai Acak Kromosom [4] adalah R[4] = 0,743 Nilai Acak Kromosom [5] adalah R[5] = 0,521 Nilai Acak Kromosom [6] adalah R[6] = 0,411
Dengan menggunakan urutan dari nilai acak setiap kromosom, dapat diperoleh populasi baru yang terbentuk yaitu mulai dari urutan yang mempunyai nilai acak terkecil sampai terbesar:
Kromosom [1] = Nilai Acak Kromosom [2] = [D B E C] Kromosom [2] = Nilai Acak Kromosom [1] = [B D E C] Kromosom [3] = Nilai Acak Kromosom [3] = [C B D E] Kromosom [4] = Nilai Acak Kromosom [6] = [C D E B] Kromosom [5] = Nilai Acak Kromosom [5] = [E C B D] Kromosom [6] = Nilai Acak Kromosom [4] = [E B C D] d. Crossover (pindah silang)
Pindah silang pada TSP dapat diimplementasikan dengan skema order crossover. Pada skema ini, satu bagian kromosom dipertukarkan dengan tetap menjaga urutan kota yang bukan bagian dari kromosom tersebut. Kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang di-crossover
dipengaruhi oleh parameter crossover probability (ρc). Misal kita tentukan ρc = 25%, maka diharapkan dalam 1 generasi ada 50% (3 kromosom) dari populasi mengalami
Pertama kita bangkitkan bilangan acak R sebanyak jumlah populasi yaitu 6 kali. Sebagai contoh nilai acak (R) yang diperoleh adalah:
Untuk Kromosom [1] yaitu: R[1] = 0,451 Untuk Kromosom [2] yaitu: R[2] = 0,211 Untuk Kromosom [3] yaitu: R[3] = 0,222 Untuk Kromosom [4] yaitu: R[4] = 0,877 Untuk Kromosom [5] yaitu: R[5] = 0,771 Untuk Kromosom [6] yaitu: 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]. Setelah melakukan pemilihan induk, proses selanjutnya adalah menentukan posisi crossover. Hal tersebut dilakukan dengan membangkitkan bilangan acak antara 1 sampai dengan panjang Kromosom-1. Dalam kasus TSP ini bilangan acaknya adalah antara 1-3 karena ada 3 kromosom sebagai induk. Misal diperoleh bilangan acaknya 1, maka gen yang ke-1 pada kromosom induk pertama diambil kemudian ditukar dengan gen pada kromosom induk kedua yang belum ada pada induk pertama dengan tetap memperhatikan urutannya. Bilangan acak untuk 3 kromosom induk yang akan di-crossover adalah:
C[2] = 2 C[3] = 1 C[6] = 2 Proses crossover :
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] >< [C D E B]
= [C D E B]
Kromosom[6] = Kromosom[6] >< Kromosom[2] = [C D E B] >< [B D E C]
Populasi sebelum di-crossover :
Kromosom [1] = Kromosom [2] = [D B E C] Kromosom [2] = Kromosom [1] = [B D E C] * Kromosom [3] = Kromosom [3] = [C B D E] * Kromosom [4] = Kromosom [6] = [C D E B] Kromosom [5] = Kromosom [5] = [E C B D] Kromosom [6] = Kromosom [4] = [E B C D] *
Keterangan * adalah kromosom yang akan di-crossover.
Populasi setelah di-crossover : Kromosom[1] = [D B E C]
8 3 2
Kromosom[2] = [B D C E]
2 3
4
Kromosom[3] = [C D E B]
Kromosom[4] = [E C B D]
2
3 7
E B
D C
E B
D C
E B
D C
E B
Kromosom[5] = [E B C D] 8
7 4 Kromosom[6] = [C D B E]
8 2
4 e. Mutasi
Pada kasus TSP ini skema mutasi yang digunakan adalah swapping mutation
yaitu jumlah kromosom yang mengalami mutasi dalam satu populasi ditentukan oleh parameter mutation rate (ρm). Proses mutasi dilakukan dengan cara menukar gen yang dipilih secara acak dengan gen sesudahnya. Jika gen tersebut berada di akhir kromosom, maka ditukar dengan gen yang pertama.
Pertama kita hitung dulu panjang total gen yang ada pada satu populasi: Panjang total gen = jumlah gen dalam 1 Kromosom * jumlah Kromosom
= 4 * 6 = 24
Untuk memilih posisi gen yang mengalami mutasi dilakukan dengan membangkitkan bilangan acak antara 1 sampai panjang total gen yaitu 1-24. Misal kita tentukan ρm = 20 %.
Maka jumlah gen yang akan dimutasi adalah = 0,2 * 24 = 4,8 = 5
Jadi ada 5 posisi gen yang akan dimutasi, setelah diacak adalah posisi 3, 7, 10, 20, 24. Susunan gen pada Kromosom sebelum mutasi adalah sebagai berikut:
Kromosom[1] = [D B E C] Æ gen nomor 3 Kromosom[2] = [B D C E] Æ gen nomor 7 Kromosom[3] = [C D E B] Æ gen nomor 10 Kromosom[4] = [E C B D]
Kromosom[5] = [E B C D] Æ gen nomor 20 Kromosom[6] = [C D B E] Æ gen nomor 24
E B
D
C
E B
Susunan gen pada Kromosom sesudah mutasi adalah sebagai berikut: Kromosom[1] = [D B C E]
8 3 2
Kromosom[2] = [B D E C] 3 6 2
Kromosom[3] = [C E D B] 3
6 2
Kromosom[4] = [E C B D] 2 3 7
Kromosom[5] = [D B C E]
2
3 7
Kromosom[6] = [E D B C]
6 2 7
Sampai disini, proses algoritma genetik untuk 1 generasi telah selesai. Maka nilai
E B
D C
E B
D C
E B
D C
E B
D C
E B
D C
E B
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+ED+DB+BA
= 5 + 3 + 6 + 2 + 7 = 23 Fitness[4] = AE+EC+CB+BD+DA
= 9 + 3 + 7 + 2 + 9 = 30 Fitness[5] = AD+DB+BC+CE+EA
= 9 + 2 + 7 + 3 + 9 = 30 Fitness[6] = AE+ED+DB+BC+CA
= 9 + 6 + 2 + 7 + 5 = 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 dimana solusi yang mendekati optimal telah didapatkan.
Dari proses algoritma genetika di atas maka dapat diperoleh hasil akhir yang merupakan rute dengan jarak terpendek yang optimal yaitu: A, B, D, E, C, A.
E B
D C
3.2 Rancangan Sistem
Pada sistem ini, kromosom terdiri dari sejumlah gen dimana masing-masing gen tersebut merepresentasikan setiap kota yang dilewati salesman. Jumlah gen yang ada pada suatu kromosom merupakan jumlah kota ditambah satu dimana kota terakhir yang dilalui salesman sama dengan kota awal yang dilalui salesman sehingga dapat dikatakan bahwa kromosom merupakan rute yang mungkin dilalui oleh salesman.
Mulai
Input Banyak Kota
Kriteria Optimasi Tercapai Ambil jarak antar kota
Ya
Tidak Seleksi
Simpan Jarak Kota Input Batas Generasi
Selesai
Gambar 3.2 Flow Chart Rancangan Sistem Input jumlah Individu
Input Variabel
Persilangan
Mutasi
Bangkitkan Populasi Awal
Hitung Nilai Firness
3.2.1 Perancangan Antarmuka (interface)
Perancangan antar muka adalah rancangan tampilan yang menghubungkan pengguna (user) dengan komputer dengan bantuan program. Salah satu syarat pembuatan antar muka adalah berorientasi pada kemudahan dalam penggunaannya (user friendly) serta informatif.
A. Rancangan Menu Utama
Rancangan Menu Utama merupakan tampilan yang pertama kali muncul saat program dijalankan. Pada rancangan ini terdapat menu TSP, Help, About dan Quit.
TSP berfungsi untuk menjalankan program TSP dengan algoritma genetika, Help
berfungsi untuk menampilkan informasi bantuan, About berfungsi untuk menampilkan keterangan seputar aplikasi yang dibangun dan Quit berfungsi untuk keluar dari sistem. Rancangan Menu Utama terlihat seperti pada gambar 3.3 dibawah ini.
Judul Tugas Akhir Gambar Pembukaan
Nama Penulis
Gambar 3.3 Rancangan Menu Utama
B. Rancangan TSP
Pada TSP ini, kromosom terdiri dari sejumlah gen dimana masing-masing gen tersebut merepresentasikan setiap kota yang dilewati salesman. Jumlah gen yang ada pada suatu kromosom merupakan jumlah kota ditambah satu dimana kota terakhir yang dilalui salesman sama dengan kota awal yang dilalui salesman sehingga dapat dikatakan bahwa kromosom merupakan rute yang mungkin dilalui oleh salesman. Rancangan TSP dapat dilihat pada gambar 3.4 dibawah ini.
Keterangan :
Data yang dimasukkan adalah jumlah kota, banyak individu dalam satu populasi, batas generasi, pemilihan tombol Buat Titik Kota dan melakukan proses pencarian rute dengan pemilihan tombol Cari Rute.
Gambar 3.4 Rancangan Sistem TSP
Jumlah Individu Dalam Satu Populasi
C. Rancangan Help
Rancangan Help adalah tampilan sederhana yang hanya memiliki satu tombol yaitu tombol Keluar. Rancang ini berguna untuk menampilkan informasi tentang tata cara pengoperasian aplikasi yang dijelaskan tahap demi tahap. Untuk lebih jelasnya rancangan Help dapat dilihat pada gambar 3.5 dibawah ini.
D. Rancangan About
Rancangan About ini berfungsi menampilkan informasi tentang profil penulis. Profil penulis meliputi biodata penulis serta data-data akademik. Rancangan About dapat dilihat seperti pada gambar 3.6 berikut ini.
Tata Cara Pengoperasian Sistem
Quit
Judul Tugas Akhir
Quit Gambar 3.5 Rancangan Help
Gambar 3.6 Rancangan About Profil Penulis Tugas Akhir
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi
Setelah perangkat lunak Kajian Algoritma Genetika Pada Travelling Salesman Problem selesai dibangun, maka tahap selanjutnya adalah tahap uji coba tampilan. Tahap uji coba tampilan adalah tahap pengujian dengan menjalankan program
Travelling Salesman Problem yang sebagai inputan adalah jumlah kota yang akan diproses serta data variabel algoritma Genetika antara lain data jumlah individu dalam satu populasi, batas generasi danpemasukan titik kota tujuan.
4.1.1 Tampilan Menu Utama
Tampilan Menu Utama merupakan tampilan yang muncul pertama kali setelah progran dijalankan dalam mode Windows. Tampilan ini berisi judul skripsi, gambar animasi TSP sebagai latar belakang serta tampilan menu antara lain menu TSP, Help, About serta Exit untuk keluar dan kembali ke mode Windows. Tampilan Menu Utama dapat dilihat pada gambar 4.1.
4.1.2 Tampilan TSP
Tampilan TSP merupakan tampilan berguna untuk melakukan proses pencarian rute dengan algoritma genetika dengan memasukkan data jumlah kota yang dilalui salesman, jumlah individu dalam satu populasi, batas generasi serta grafik hasil. Pada form ini terdapat tampilan jumlah kromosom yang diperoleh dari pemasukan jumlah kota serta jarak. Pada tampilan ini terdapat tombol pemasukan titik kota secara otomatis. Tampilan TSP dapat dilihat pada gambar 4.2.
4.1.3 Tampilan About
Tampilan About berfungsi untuk menampilkan data-data judul dan penulis tugas akhir. Pada tampilan ini terdapat tempat untuk menampilkan judul perangkat lunak serta gambaran singkat tentang profil penulis. Tampilan About dapat dilihat pada gambar 4.3.
4.1.4 Tampilan Help
Pada Tampilan Help terdapat tempat untuk menampilkan tampilan bantuan untuk menjalankan aplikasi. Pada Tampilan Help terdapat tombol Exit untuk keluar dari tampilan . Tampilan Help dapat dilihat pada gambar 4.4.
Gambar 4.3 Tampilan About
4.2 Pengujian Sistem
Perangkat lunak yang telah dirancang memerlukan pengujian data dengan melakukan proses pencarian rute dengan jumlah kota 5, 10, 20, 50,70 dan 100 serta jumlah populasi 200 dan batas generasi adalah 1000 seperti pada gambar 4.5.
A. Pengujian Pemasukan Data dengan 5 kota.
B. Pengujian Pemasukan Data dengan 10 kota.
Pengujian pemasukan data dengan 10 kota adalah pengujian dalam melakukan proses pencarian jarak antar kota sejumlah 10 kota dengan lokasi titik kota dapat ditentukan melalui tombol. Pengujian pemasukan data dengan 10 kota dapat dilihat pada gambar 4.6.
C. Pengujian Pemasukan Data dengan 20 kota.
Pengujian pemasukan data dengan 20 kota adalah pengujian dalam melakukan proses pencarian jarak antar kota sejumlah 20 kota dengan lokasi titik kota dapat ditentukan melalui tombol. Pengujian pemasukan data dengan 20 kota dapat dilihat pada gambar 4.7.
Gambar 4.6 Pengujian Pemasukan Data 10 Kota
D. Pengujian Pemasukan Data dengan 50 kota.
Pengujian pemasukan data dengan 50 kota adalah pengujian dalam melakukan proses pencarian jarak antar kota sejumlah 50 kota dengan lokasi titik kota dapat ditentukan melalui tombol. Pengujian pemasukan data dengan 50 kota dapat dilihat pada gambar 4.8.
E. Pengujian Pemasukan Data dengan 70 kota.
Pengujian pemasukan data dengan 70 kota adalah pengujian dalam melakukan proses pencarian jarak antar kota sejumlah 70 kota dengan lokasi titik kota dapat ditentukan melalui tombol. Pengujian pemasukan data dengan 70 kota dapat dilihat pada gambar 4.9.
Gambar 4.8 Pengujian Pemasukan Data 50 Kota
F. Pengujian Pemasukan Data dengan 100 kota.
Pengujian pemasukan data dengan 100 kota adalah pengujian dalam melakukan proses pencarian jarak antar kota sejumlah 100 kota dengan lokasi titik kota dapat ditentukan melalui tombol. Pengujian pemasukan data dengan 100 kota dapat dilihat pada gambar 4.10.
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Persoalan TSP dapat diselesaikan dengan menggunakan algoritma genetika, walaupun solusi TSP yang dihasilkan oleh algoritma ini belum tentu merupakan solusi paling optimal., misalnya apabila kota yang dilalui sangat banyak.
Namun algoritma genetika akan menghasilkan solusi yang lebih optimal pada setiap generasinya, hal tersebut terlihat dari nilai fitness tiap generasi.
Titik awal atau rute awal suatu perjalanan tidak harus dimulai dari kota A saja, tapi dapat juga dimulai dari kota B,C,D,dan E yang penting hasilnya didapat merupakan rute yang optimum yaitu jarak yang minimum terbaik.
Kelebihan algoritma genetika dibandingkan metode pencarian konvensional pada TSP yaitu solusi dapat diperoleh kapanpun karena solusi dihasilkan pada generasi ke berapapun.
Dalam menyelesaikan masalah TSP, Algoritma genetika tidak harus membutuhkan waktu yang lama jika banyak kota yang dilalui kurang dari 50 (lima puluh) karena tidak semua kemungkinan dicoba.
Algoritma genetika pada persoalan TSP tidak dapat menjamin sebagai algoritma yang tercepat apabila jumlah kota lebih dari 50 kota, tergantung pada kriteria berakhirnya.
5.2 Saran
Berikut ini saran-saran untuk mengembangkan perangkat lunak ini:
a. Agar dapat variabel selain jumlah kota serta jarak antar kota saja, tetapi lama waktu yang ditempuh serta biaya antar kota.
b. Agar dibuat perbandingan algoritma yang digunakan dalam persoalan TSP ini.
DAFTAR PUSTAKA
Agus J. Alam. (2000). Manajemen Database dengan Microsoft Visual Basic Versi 6.0. Elexmedia Komputindo: Jakarta.
Dewobroto, Wiryanto. (2003). Pemrograman Ms. Visual Basic 6.0. Elexmedia Komputindo, Jakarta.
Fariza, A., Martiana, E., Sucipto H. (2006). Aplikasi Algoritma Genetika Multi Obyektif pada Traveling Salesman Problem. Politeknik Elektronika Negeri Surabaya ITS.
Hadi, Rahadian. (2001). Pemrograman Windows API dengan Microsoft Visual Basic. Jakarta: PT Elex Media Komputindo.
Kusumadewi, Sri. (2003). Artificial Intelligence. Graha Ilmu: Yogyakarta. Lukas S., Anwar T., Yuliani W. (2005). Penerapan Algoritma Genetika untuk
Traveling Salesman Problem dengan Menggunakan Metode Order Crossover dan Insertion Mutation. Seminar Nasional Aplikasi Teknologi Informasi 2005 : I-2.
Mutakhiroh, I., Saptono F., Hasanah N., Wiryadinata R. (2005). Pemanfaatan Metode Heuristik Dalam Pencarian Jalur Terpendek Dengan Algoritma Semut Dan Algoritma Genetika. Laboratorium Pemrograman dan Informatika Teori, Universitas Islam Indonesia: B-34 – B-36.
Obitko, Marek. (1998). Introduction To Genetic Algorithms. University of Applied Sciences.
LISTING PROGRAM If Timer1.Enabled = True Then Line1.BorderColor = &H0& Shape1.FillColor = vbRed Line10.BorderColor = &H0& Shape2.FillColor = vbBlue Line9.BorderColor = &H0& Shape3.FillColor = vbYellow
Shape1.FillColor = &HFFFFFF Shape2.FillColor = &HFFFFFF Shape3.FillColor = &HFFFFFF Shape4.FillColor = &HFFFFFF Shape5.FillColor = &HFFFFFF Shape6.FillColor = &HFFFFFF Shape7.FillColor = &HFFFFFF Shape8.FillColor = &HFFFFFF Timer1.Enabled = True
End If End Sub
If Timer2.Enabled = True Then Line1.BorderColor = &HFF& Shape1.FillColor = &HFFFFFF Line10.BorderColor = &HFF& Shape2.FillColor = &HFFFFFF Line9.BorderColor = &HFF& Shape3.FillColor = &HFFFFFF Shape4.FillColor = &HFFFFFF Shape5.FillColor = &HFFFFFF Shape6.FillColor = &HFFFFFF Shape7.FillColor = &HFFFFFF Shape8.FillColor = &HFFFFFF Timer2.Enabled = False
Dim OLDbestI As Long Dim GA As New SimplyGA Dim NumberOfGenes As Long Dim CICLES As Long
Dim P() As tPoint Dim GAgeneration As Long Dim ChartX
Dim QueryAddress As String Dim S As String
OLDbestI = BesT End If
GAgeneration = GA.StatGeneration If (GAgeneration Mod 50) = 0 Then ChartX = ChartX + 1
MSChart.RowCount = ChartX 'GaGeneration
MSChart.DataGrid.SetData ChartX, 1, GA.GeneratBestFit, Flag MSChart.DataGrid.SetData ChartX, 2, GA.GenerationAvgFit, Flag End If txtNI = NumberOfGenes * 5 txtNI = "30"
NumberOfGenes * NumberOfGenes / 2
GA.INIT Val(txtNI), NumberOfGenes, 1, NumberOfGenes, _
3. Modul-1
Public Type tPoint x As Single Y As Single End Type
Private Type tStat
Event TESTINDIevent(Individ As Long) Private SonMode As Enum_ReproductMode Private CrossMode As Enum_CrossMode Private NofI As Integer
Private INDI() As tInd Private gValueMax As Long Private gValueMin As Long Private MutProbProp As Boolean Private MutProb As Single Private MutRate As Single Private BestFit As Double
Private GenerationBestFit As Double Private GenerationINDEXBestFit As Long Private Statistic As tStat
Private pSelectionMode As Enum_SelMode Private pMutateBestFit As Boolean
Private ReprodXGeneration As Long Private BestGENE() As Long Private LookForDisaster As Long Private AVGfit As Double
Private INFO As TextBox
Public Property Let INDINetOutPut(indiv, Val As Double) INDI(indiv).NetOutPut = Val
End Property
Public Property Get pLookForDisaster() As Long pLookForDisaster = LookForDisaster
End Property
Public Property Get IsIndiChanged(ind As Long) As Boolean 'since perv generation IsIndiChanged = INDI(ind).IsChanged
Public Property Get Son_Mode() As Enum_ReproductMode Son_Mode = SonMode
End Property
Public Property Get Cross_Mode() As Enum_CrossMode Cross_Mode = CrossMode
End Property
Public Property Let Son_Mode(sMode As Enum_ReproductMode) SonMode = sMode
End Property
Public Property Let Cross_Mode(cMode As Enum_CrossMode) CrossMode = cMode
End Property
Public Property Get pSelection_Mode() As Enum_SelMode pSelection_Mode = pSelectionMode
End Property
Public Property Let pSelection_Mode(sMode As Enum_SelMode) pSelectionMode = sMode
End Property
Public Property Get pMutateBestToo() As Single pMutateBestToo = pMutateBestFit
End Property
Public Property Get pMutationProb() As Single pMutationProb = MutProb
End Property
Public Property Get pMutationRate() As Single pMutationRate = MutRate
End Property
Public Property Get StatAccop() As Long StatAccop = Statistic.NofACC
End Property
Public Property Get StatGeneration() As Long StatGeneration = Statistic.NofGEN
End Property
Public Property Get StatMutations() As Long StatMutations = Statistic.NofMUT
End Property
Public Property Get StatNEWs() As Long StatNEWs = Statistic.NofNEW
End Property
Public Property Get Get_gValueMin() As Double Get_gValueMin = gValueMin
End Property
Public Property Get Get_gValueMax() As Double Get_gValueMax = gValueMax
End Property
Public Property Get GeneratBestFit() As Double GeneratBestFit = GenerationBestFit
Public Property Get GeneratINDEXBestFit() As Double GeneratINDEXBestFit = GenerationINDEXBestFit End Property
Public Property Get GenerationAvgFit() As Double GenerationAvgFit = AVGfit
End Property
Public Property Let IndiFitness(Individ, FitnessValue As Double) INDI(Individ).Fitness = FitnessValue
End Property
Public Property Get IndiFitness(Individ) As Double IndiFitness = INDI(Individ).Fitness
End Property
Public Property Get NumberOfIndivid() As Long NumberOfIndivid = NofI
End Property
Public Property Get NumberOfGenes(indiv) As Long NumberOfGenes = INDI(indiv).NofG
End Property
Private Function GfnCreateRandomIndi(NofGene, gvMIN, gvMAX) As tInd Dim G As Long
Dim Gpos As Long
GfnCreateRandomIndi.NofG = NofGene GfnCreateRandomIndi.Fitness = 1E+99
ReDim GfnCreateRandomIndi.Gene(NofGene) If CrossMode <> TSProblem Then
For G = 1 To NofGene
GfnCreateRandomIndi.Gene(G) = fnRND(gvMIN, gvMAX, True) Next
Private Function fnRND(Min, Max, DoRound As Boolean) fnRND = Rnd * (Max - Min) + Min
Public Sub INIT(NofIndi, NofGene, gvMIN, gvMAX, _ Mutate_Prob, Mutate_Rate, _
SelMode As Enum_SelMode, PercNewSonXGeneration, _ MutBest As Boolean, _
ReprodXGeneration = Round(PercNewSonXGeneration * NofIndi) If ReprodXGeneration < 1 Then ReprodXGeneration = 1
'Stop
' Mutation Prob=0 means proportional
MutProbProp = IIf(Mutate_Prob = 0, True, False) Set INFO = TextINFO
NofI = NofIndi
If LookForDisasterEvery = 0 Then LookForDisasterEvery = 2 ^ 30 '1000000000 LookForDisaster = LookForDisasterEvery
Statistic.NofACC = 0 Statistic.NofMUT = 0 Statistic.NofNEW = 0 Statistic.NofGEN = 0
S = "Genetic Algorithm Initialized! " & vbCrLf & vbCrLf S = S + "Current Parameters:" & vbCrLf
S = S + "Number of Individuals " & vbTab & NofI & vbCrLf S = S + "Number of Gene x Indiv" & vbTab & NofGene & vbCrLf
S = S + "Max Gene Value " & vbTab & gValueMax & vbCrLf S = S + "Parent Selection Mode " & vbTab & pSelectionMode & vbCrLf S = S + "Can even Mutate Best I" & vbTab & MutBest & vbCrLf
S = S + "Placement of Son " & vbTab & SonMode & vbCrLf S = S + "Cross Mode " & vbTab & CrossMode & vbCrLf
S = S + "Test Disaster Every " & vbTab & LookForDisaster & vbCrLf 'MsgBox S, vbInformation, "GA created!"
End Sub
Public Sub ReplaceIdenticalINDI(INFOtext As TextBox) Dim I As Long
If Len(INFOtext) > 10000 Then INFOtext.Text = ""
S = "Generation " & Statistic.NofGEN '& Statistic.NofACC
S = S & " Look for Disaster. New Random Individ Generated = " & _
Statistic.NofNEW - PervNumOfNew & " of " & NofI & vbTab & " (Total =" & Statistic.NofNEW & ") " & vbCrLf
INFOtext.Text = INFOtext.Text & S INFOtext.SelStart = Len(INFOtext.Text) 'DebugPrintPop pp
End Sub
Private Sub MutateIndi(Individ, MutateBest As Boolean) Dim OLD
Dim MR
Dim T As Integer Dim Times As Integer Dim NOG As Long Dim POS As Long
INDI(Individ).IsChanged = True If CrossMode <> TSProblem Then
If Not (MutateBest) Then If GenerationINDEXBestFit = Individ Then Exit Sub Statistic.NofMUT = Statistic.NofMUT + 1
MR = MutRate
If Not (MutateBest) Then If GenerationINDEXBestFit = Individ Then Exit Sub Statistic.NofMUT = Statistic.NofMUT + 1
'MUTATION
Dim IndexOverALLBest As Long Dim IndexGenerationBest As Long Dim OverALLBest As Boolean Dim GenerationBest As Boolean OverALLBest = False
If INDI(I).Fitness < GenerationBestFit Then GenerationBestFit = INDI(I).Fitness
EvalFitness IndexOverALLBest, IndexGenerationBest, _ OverALLBest, GenerationBest, INFO
End Sub
Private Sub TEST_INDI(Individ As Long) With INDI(Individ)
.Fitness = .NetOutPut End With
Private Sub EvalFitness(IndexOverALLBest As Long, IndexGenerationBest As Long, OverALLBest As Boolean, GenerationBest As Boolean, INFOtext As TextBox)
Dim S As String Dim GG As Long Dim Gc As Long If OverALLBest Then
With INDI(IndexOverALLBest)
S = "G " & Statistic.NofGEN & " Indi " & IndexOverALLBest & " f(" & .Fitness & ") " & vbTab & vbTab
For GG = 1 To .NofG
S = S & .Gene(GG) & vbTab BestGENE(GG) = .Gene(GG) Next
End With
INFOtext.Text = INFOtext.Text & S & vbCrLf INFOtext.SelLength = 1
INFOtext.SelStart = Len(INFOtext.Text) DebugPrintPop
If BestFit = 0 Then DebugPrintPop: MsgBox "Solution FOUND!!! " & vbCrLf & _ "Generation: " & Statistic.NofGEN & " Individ: " & IndexOverALLBest: ' Dim Sum2 As Double Dim Sum3 As Double Dim MinF As Double Dim MaxF As Double Dim I As Long
MaxF = -1E+99 .Fitness) / Sum2, Sum3
.Wheel = Sum3
For I = 1 To NofI
Private Function GfnFindParent() As Long Dim R As Double
Debug.Print "findp " & r, "Parent " & GfnFindParent Stop
Stop
End Function
Loop While P1 = P2
Public Sub Accoppia(Par1 As Long, Par2 As Long, pSonMode As Enum_ReproductMode, pCrossMode As Enum_CrossMode)
'MATE Dim NewIndi As tInd Dim NewIndi2 As tInd Dim G As Long
Dim tmpNofG As Long Dim VV2 As Integer Dim V1 As Integer Dim V2 As Integer Dim oo As Integer Dim NOG As Long Dim SON As Long
Statistic.NofACC = Statistic.NofACC + 1 NewIndi.Fitness = 1E+99
NewIndi.NofG = INDI(Par1).NofG NewIndi.Wheel = 0 'da calcolare NewIndi.IsChanged = True
Debug.Print "Parent1 " & Par1, .Gene(1), .Gene(2), .Gene(3), .Gene(4), .Gene(5), .Gene(6)
End With
'With INDI(Par2)
NewIndi.Gene(G) = INDI(Par1).Gene(G)
Loop While V2 < V1
NofI = NofI + 1
ReDim Preserve INDI(NofI) INDI(NofI) = ind
End Sub
Public Function GfnGetWORSTindi() As Long 'private
Dim MaxF As Double Dim I As Long
Dim Parent1 As Long Dim Parent2 As Long Dim S As String Dim Bool As Boolean 'Stop
Dim V As Long
Statistic.NofGEN = Statistic.NofGEN + 1 'Stop
For V = 1 To ReprodXGeneration '* NofI 'GETPARENTS
SelectParents Parent1, Parent2 'REPRODUCTION
Accoppia Parent1, Parent2, SonMode, CrossMode Next V
Stop
If Statistic.NofGEN / LookForDisaster = Statistic.NofGEN \ LookForDisaster Then Stop
ReplaceIdenticalINDI INFO End If
If GeneratBestFit / GenerationAvgFit > 0.9995 Then ReplaceIdenticalINDI INFO > 0.997
If GenerationBestFit = GenerationAvgFit Then ReplaceIdenticalINDI INFO Debug.Print GeneratBestFit / GenerationAvgFit
If MutProbProp Then
MutProb = (GenerationBestFit / GenerationAvgFit) / 10 '5 End If
Stop End Sub
Public Function getGENE(Individ As Long, Gene As Long) As Long getGENE = INDI(Individ).Gene(Gene)
End Function
Public Sub SetGENE(Individ As Long, Gene, Valu As Long) INDI(Individ).Gene(Gene) = Valu
End Sub
Public Sub KillIndi(Individ As Long) Dim II As Long
public Sub Save_POP(Optional Filename = "POP.txt") Dim II As Long
Dim GG As Long
Open App.Path & "\" & Filename For Output As 1 Print #1, "Num of INDIs"
Print #1, NofI
Print #1, "Num of GENEs (x indi)" Print #1, INDI(1).NofG
Print #1, "Min Max Gene Value" Print #1, gValueMin
Print #1, gValueMax Print #1, "Mutation Prob"
Print #1, Replace(MutProb, ",", ".") Print #1, "Mutation Rate"
Print #1, Replace(MutRate, ",", ".") Print #1, "Selection Mode"
Print #1, "ReprodXGeneration" Print #1, "Mutate Best"
Print #1, CInt(pMutateBestFit) Print #1, "INDEX BEST INDI" Print #1, GenerationINDEXBestFit
Public Sub Load_POP(Optional Filename = "POP.txt") Dim II As Long
Dim GG As Long Dim S As String
Open App.Path & "\" & Filename For Input As 1 Input #1, S
Input #1, NofI
ReDim INDI(0 To NofI) Input #1, S
Input #1, INDI(1).NofG
Input #1, S
If S = "-1" Then pMutateBestFit = True Else: pMutateBestFit = False Input #1, S
ReDim INDI(II).Gene(1 To INDI(1).NofG) INDI(II).NofG = INDI(1).NofG
INDI(I) = GfnCreateRandomIndi(INDI(I).NofG, gValueMin, gValueMax) MutateIndi I, True
Private Sub TSPBuildO(ByRef O, ind As Long) 'USELESS Dim busy() As Boolean
NB = 0
Private Function TSPBuildNewIndiFromO(ByRef O) As tInd 'USELESS Dim tINDI As tInd
Dim busy() As Boolean Dim G As Long
'Debug.Print "---" Dim tmpINDI As tInd Again:
Private Sub QuickSortFitness(ByVal lngFirst As Long, ByVal lngLast As Long) Dim lngLow As Long
dblMidValue = Abs(INDI((lngFirst + lngLast) \ 2).Fitness) Do
'While Abs(Chromosome(lngLow).Fitness) < dblMidValue While INDI(lngLow).Fitness < dblMidValue
lngLow = lngLow + 1 Wend
'While Abs(Chromosome(lngHigh).Fitness) > dblMidValue While INDI(lngHigh).Fitness > dblMidValue
End If
Loop While lngLow <= lngHigh
If lngFirst < lngHigh Then QuickSortFitness lngFirst, lngHigh If lngLow < lngLast Then QuickSortFitness lngLow, lngLast Exit Sub
Private Function EdgeRecombinationCrossover(P1 As Long, P2 As Long) As tInd Dim NI As tInd
V2 = INDI(P2).Gene(G) p1G1 = INDI(P1).Gene(G1) p1G2 = INDI(P1).Gene(G2) p2G1 = INDI(P2).Gene(G1) p2G2 = INDI(P2).Gene(G2)
If collNotInColl(NeiList(V1), p1G1) Then NeiList(V1).Add p1G1 If collNotInColl(NeiList(V1), p1G2) Then NeiList(V1).Add p1G2 If collNotInColl(NeiList(V2), p2G1) Then NeiList(V2).Add p2G1 If collNotInColl(NeiList(V2), p2G2) Then NeiList(V2).Add p2G2 getCHILD.Add G
For G = 1 To NOG
Private Function collNotInColl(C As Collection, Val) As Boolean Dim E As Integer
Private Sub collRemoveItem(ByRef C As Collection, Val) Dim E As Integer Loop While E < C.Count
End Sub
End Function
Private Function collNotInColl(C As Collection, Val) As Boolean Dim E As Integer
collNotInColl = True 'If C.Count = 0 Then Stop For E = 1 To C.Count
If C.Item(E) = Val Then collNotInColl = False: Exit For Next
End Function
Private Sub collRemoveItem(ByRef C As Collection, Val) Dim E As Integer
If C.Count = 0 Then Exit Sub E = 0
Do
E = E + 1
If C.Item(E) = Val Then C.Remove E: Exit Do Loop While E < C.Count
End Sub
Private Function collPickFrom(ByRef C As Collection) As Integer Dim E As Integer
Stop