Anda di halaman 1dari 8

Pencari solusi TSP cepat dengan menggunakan Algoritma Genetik dengan program

JAVA
Hiroki Sengoku
System Development Laboratory
Hitachi, Ltd.
Kawasaki, 215 JAPAN

Ikuo Yoshihara
Graduate School of Engineering,
Tohoku University
Sendai, 980-77 JAPN

Abstrak
Menggunakan program JAVA berdasarkan algoritma Hybrid untuk mencari solusi
masalah TSP. Bentuk file executablenya bisa diakses di webpages penulis untuk mencari
solusi yang diinginkan. Karena JAVA dapat berjalan pada berbagai platform, setiap
pembaca bisa membuat algoritma sendiri untuk dibandingkan dengan algoritma penulis
dalam hal mencari solusi masalah TSP pada mesin yang sama.
1

Pengenalan
GA merupakan algoritma optimasi yang dimodelkan berdasarkan evolusi
organisme. Salah satu kelebihan GA adalah mudah dikembangkan tanpa perlu
mengetahui masalah secara mendetail, GA dapat mencari secara global dan dapat
menyesuaikan dengan perubahan kondisi dalam masalah
Meskipun demikian, GA seringkali lebih lambat daripada metode konvensional
seperti pencarian heurisik. Hal ini terjadi karena GA tidak membutuhkan pengetahuan
tentang bagaimana mencari solusi terhadap masalah yang ada. Oleh karena itu digunakan
metode hybrid yang menggabungkan GA dengan tehnik lain.
Pencari solusi TSP yang penulis kemukakan [2] adalah salah satu metode hybrid
tersebut. Metode ini menggunakan metode GA dan metode 2opt ( bagian 2.1). Dengan
menggunakan metode 2opt, menjadi lebih cepat daripada pencari solusi TSP lain
berdasarkan GA itu sendiri.
Umumnya sulit membandingkan dua algoritma secara obyektif. Algoritma satu
mungkin memiliki kelebihan dalam hal kecepatan dalam mencari solusi, tetapi memiliki
kekurangan dalam menentukan tingkat kesuksesan untuk mendapatkan solusi optimal.
Cara terbaik untuk membandingkan keduanya adalah dengan menjalankan
keduanya pada mesin yang sama. Tetapi program seperti ini sedikit pada domain
publik[4], dan tidak pula ditemukan pada TSPLIB[5].
Sebagai akibatnya, penulis menggunakan program JAVA berdasarkan metode
yang telah dijelaskan diatas, dan di-upload ke situs World Wide Web(WWW) yang
penulis miliki. Program JAVA bisa berjalan pada berbagai platform, sehingga pembaca
bisa membandingkan program yang telah dibuat dengan program penulis pada mesin
yang sama dengan kondisi yang sama pula.
Penulis juga telah membuat bentuk GUI, sehingga pembaca bisa memilih kota
yang dimaksud dengan menggunakan mouse untuk memecahkan masalah TSP. Hal ini
akan membantu mahasiswa dalam mempelajari dasar-dasar algoritma komputer.
Pada bagian 2, penulis jelaskan tentang metode yang dimaksud. Pada bagian 3,
penulis menunjukkan halaman WWW yang bisa diakses untuk menyelesaikan program
TSP tersebut.
2.

Pencari solusi TSP: 2optGA


1

Untuk memecahkan masalah TSP, bisa digunakan metode hybrid[2] yang


menggunakan GA dan metode 2opt. Pada metode GA penulis, metode 2opt bertindak
sebagai mutasi, sedangkan operator crossover sebagai kemampuan melompat dari
minima local dimana seringkali hasil yang diperoleh tidak bisa digunakan ketika hanya
menggunakan metode 2opt
Algorima yang digunakan tediri dari:
Inisialisasi: Generate M individu secara acak.
Seleksi Alam: Hilangkan pe % individu. Populasi turun M x pe / 100.
Penggandaan: Memilih M x pe / 100 pasangan individu secara acak dan menghasilkan
keturunan dari masing-masing pasangan. Populasi kembali menjadi
populasi awal M.
Mutasi dengan 2opt: Memilih pi % individu secara acak dan dikembangkan dengan
metode 2opt. Individu elit, yaitu individu yang memiliki nilai paling layak
dalam populasi, selalu dipilih. Jika individu telah berkembang, tidak perlu
dikembangkan lagi dengan metode 2opt.
Selanjutnya dijelaskan secara detail dari tiap-tiap langkah:
Mutasi dengan 2opt
Metode 2opt merupakan salah satu algorima local search yang paling banyan
digunakan dalam mencari solusi masalah TSP. Metode ini meningkatkan perjalanan dari
ujung ke ujung dan membalik urutan subtour. Sebagai contoh, bayangkan perjalanan
seperti ditunjukkan pada bagian atas gambar 1. Hilangkan 2 ujung ab dan cd, dan balik
urutan subtour (dari b ke c),dan tambahkan 2 ujung ac dan bd. Sehingga menjadi seperti
pada gambar 1 bagian bawah. Perjalanan pada gambar 1 bawah menjadi lebih pendek
daripada perjalanan pada gambar 1 bagian atas karena ab+cd>ac+bd
2.1

Gambar 1: metode 2opt


Kemudian memeriksa setiap pasangan ujung, sebagai contoh ab dan cd.Jika
ab+cd>ac+bd, tingkatkan dengan cara yang sama seperti ditunjukkan pada gambar 1.
Sebenarnya jika ac>ab dan bd>cd, maka tidak perlu lagi diperiksa ujung-ujungnya.
Sehingga ini bisa dilewatkan pasangan ujung-ujung yang berjauhan.

Ulangi prosedur seperti dijelaskan diatas sampai tidak ada lagi peningkatan yang
bisa dibuat.
2.2

Crossover dalam penggandaan


Ketika menggunakan metode 2opt seringkali solusi ada pada minimum local,
sehingga tidak bisa lagi dilakukan peningkatan dengan menggunakan metode 2opt.
Bandingkan 2 solusi yang ada pada minimum lokal yang berbeda. Setiap solusi bisa
memiliki subtour terbaik pada bagian perjalanan yang berbeda. Maka dapat dibuat solusi
yang lebih baik jika menggabungkan subtour-subtour tersebut secara tepat. Tentunya
tidak bisa dikatakan suatu subtour bagus, tetapi setelah melewati banyak percobaan,
dapat diduga solusi keturunan yang ditempatkan pada dasar minimum global seperti
ditunjukkan pada gambar 2.

Gambar 2: pop-up local minima


Penulis menggunakan operator crossover baru yang memerlukan urutan paling
panjang subtour induk yang mungkin. Operator ini dinamakan Greedy Subtour
Crossover(GSX). Seperti ditunjukkan [3] dengan percobaan yang menggunakan GSX,
solusi yang muncul dari local minima lebih efektif daripada menggunakan metode
SA(Simulated Annealing).
Dalam GSX, digunakan penyajian jalur pengkodean genetik. Sebagai contoh,
kromosom g=(D, H, B, A, C, F, G, E) berarti salesman mengunjungi kota D, H, B, , E
dan kembali ke kota D.

Gambar 3: Greedy Subtour Crossover

Algoritma: Greedy Subtour Crossover


Input: Kromosom ga = (a0, a1, , an-1) dan gb = (b0, b1, , bn-1).
Output: Kromosom keturunan g.
Procedure crossover(ga, gb) {
fa <- true
fb <- true
pilih kota t secara acak
pilih x, dimana ax = t
pilih y, dimana by = t
g <- t
do {
x <- x 1 (mod n),
y <- y + 1 (mod n),
if fa = true then {
if ax g then {
g <- ax.g,
}else{
fa <- false.
}
}
}
if fb = true then {
if by g then {
g <- g.by,
}else{
fb <- false
}
}
}
while fa = true or fb = true
if |g| <|ga| then {
tambahkan sisa kota ke g dalam urutan acak
}
return g
}
Perlu diketahui bahwa . Pada g <- ax.g adalah operator konkatenasi, dan
kalimat tersebut berarti tambahkan ax sebelum kromosom g.
Sebagai contoh ditunjukkan pada gambar 3. Kromosom induk ga = (D, H, B, A,
C, F, G, E) DAN GB = (B, C, D, G, H, F, E, A). Pertama pilih 1 kota secara acak,
misalnya kota C dipilih. Maka x = 4 dan y = 1 karena a 4 =C dan b1 = C. Kemudian anak g
adalah ( C ).
Kemudian diambil kota dari induk secara bergantian. Dimulai dengan a 3 (kota A)
karena x <- 4-1 = 3, dan kota yang dipilih kemudian adalah b 2 (kota D) karena y <1+1=2. Anak g = (A,C,D).

Dengan cara yang sama, tambahkan a2 (kota B), b3 (kota G), a1 (kota H), dan
anaknya menjadi g = (H, B, A, C, D, G). Kemudian kota selanjutnya adalah b4 = H dan H
telah ada pada anak (ingat salesman tidak bisa mengunjungi kota yang sama dua kali),
sehingga kota dari induk gb tidak bisa lagi ditambahkan.
Sehingga ditambahkan kota dari ga. Kota selanjutnya adalah a 0 = D, tetapi D telah
digunakan. Maka kota dari ga juga tidak bisa ditambahkan lagi.
Maka ditambahkan sisa-sisa kota yaitu E, dan F ke anak dalam urutan acak.
Akhirnya anaknya menjadi g = (H, B, A, C, D, G, F, E).
2.3

Seleksi Alam
Hilangkan R = M x pc / 100 individu. Dalam GA sederhana, kemungkinan
mempertahankan diri sebanding dengan nilai yang sesuai, tetapi yang perlu diperhatikan
adanya keanekaragaman populasi. Dengan menghilangkan individu yang sejenis untuk
mempertahankan keanekaragaman dalam urutan untuk menghindari kekonvergenan tak
sejati yang merupakan salah satu masalah umum pada GA.
Pertama, urutkan individu dalam urutan nilai yang layak. Bandingkan nilai adjoin
individu yang layak. Jika perbedaan kurang dari (bilangan positif real kecil), dengan
menghilangkan individu awal ketika jumlah banyaknya individu yang dihilangkan kurang
dari R. misalkan r adalah banyaknya individu yang dihilangkan.
Kemudian, jika r < R, hilangkan R r individu dalam urutan nilai kelayakan
terkecil.
3
3.1

Applet JAVA
Applet pada WWW
Dengan menggunakan JAVA untuk menyelesaikan masalah TSP dengan metode
hybrid dan meng-upload applet yang telah dibuat tersebut ke webpage (WWW) penulis
pada : http://202.43.171.4/skripsi/skrip.html
Pada applet tersebut mudah digunakan, dengan menggunakan mouse untuk
memilih kota pada bidang kotak. Kemudian menekan tombol Start. Applet akan
menyelesaikan masalah yang telah dibuat dan menunjukkan perjalanan seta panjangnya
(gambar 4). Parameter metode 2opt yaitu Populasi (M), Seleksi (pe), 2opt (pi)
disesuaikan dengan mengisi masing-masing bidang pada applet.
Pada halaman WWW tersebut juga menyertakan contoh masalah berikut:
100 kota dengan lokasi random
192 kota berbentuk lingkaran ganda (tipe-C)
192 kota berbentuk lingkaran ganda (tipe-O)
Masalah lingkaran ganda digunakan sebagai standarisasi oleh Yamamur dkk.[6]
solusi minimum pada masalah itu dikenal sebagai tipe-C atau tipe-O

Tipe C
Inner/outer= 3/5

Tipe-O
Inner/outer=4/5

Gambar 4
Seperti ditunjukkan pada gambar 4, tipe solusi akan minimum, tergantung
banyaknya kota dan rasio jari-jari lingkaran didalam dan diluar.
3.2

Aplikasi Stand-alone
Applet juga dapat digunakan sebagai aplikasi Stand-alone. Pertama, download
file-file class yang ada pada 1 dan contoh masalah pada tabel 2 dari URL penulis di
http://202.43.171.4/skripsi/
Cities.class
3k
City.class
1k
GA.class
3k
Gene.class
3k
Sort.class
1k
Sortable.class
1k
TSP.class
8k
TspRoute.class
4k
Tabel 1:file class yang perlu didownload
Nama file
Masalah
Gr96.data
Submasalah 666 kota TSP di Afrika
Gr202.dat
Submasalah 666 kota TSP di Eropa
Test100.dat
100 kota dengan posisi yang acak
C192-4682.dat
Lingkaran ganda 192 kota (tipe-C)
C192-4684.dat
Lingkaran ganda 192 kota (tipe-O)
Tabel 2: Contoh masalah
Submasalah 666 kota TSP di Afrika dan Submasalah 666 kota TSP di Eropa sudah
ada pada TSPLIB[5].
TSP.class memuat metode utama, jadi file ini bisa dijalankan sebagai file aplikasi
JAVA dengan argumen nama file dan generasi. Nama file berarti nama file TSP
yang memuat lokasi kota pada TSP yang akan diselesaikan. Generasi berarti generasi
maksimum yang terlibat. Parameter tambahan seperti yang ada Table 3 bisa juga
digunakan.
Pilihan
Arti
Default
-p M
populasi
100
6

-e pe
-Rpi
-v

Hilangkan pe% individu


Tingkatkan pi% individu dengan 2opt
Penambahan tingkat verbosity
Table 3: Parameter tambahan pada TSP.class

30
20

Setiap garis pada file TSP menyajikan koordinat kota dan terdiri dari dua bidang
yang dipisahkan koma. Bidang pertama berarti koordinat X kota, dan bidang kedua
berarti koordinat y. Biaya antara dua kota diukur sebagai jarak Euclid antara koordinat
masing-masing kota.
Jika file TSP memuat baris
EDGE_WEIGHT_TYPE: GEO
Biaya didefinisikan sebagai jarak geografis dua kota yaitu: jaraknya di bumi, yang
dihitung dengan jarak Euclid. Koordinat X, dan Y seperti dijelaskan diatas berarti garis
lintang dan garis bujur.
Jika file TSP memuat baris
Min: n
Dimana n adalah bilangan positif real, program akan berhenti ketika individu elit, yang
memiliki panjang perjalanan n, didapatkan
Pada windows 98Se dengan Java Development Kit(JDK)[7], digunakan perintah
sebagai berikut melalui MS-DOS Prompt
C:>Java TSP v p 200 gr96.data 300
Perintah ini berarti menyelesaikan masalah TSP yang ada pada gr96.data, dimana
populasi 200, dan generasi maksimum 300
Output yang diperoleh sebagai berikut (sebagian dihilangkan)
C:>Java TSP v p 200 gr96.data 300
File: gr96.dta
Population: 200
Selection: 30%
2 opt: 20%
1:3[93 94 92 91 76 27 64 95]57284
2:253[94 93 95 64 65 76 91 92]55840
3:119[37 34 33 32 10 31 35 36]55481
19:1251[49 51 52 54 50 47 46 45]55332
44:2646[93 94 92 91 76 65 64 95]55322
120:7132[41 40 39 38 78 .. 49 48 42]55291
165:9780[49 45 46 47 53 .. 54 52 51]55259
180:10692[52 51 49 45 46 48 50 54]55209
Output tersebut elit, elite baru akan ditemukan dalam format berikut:
g : i [ tour ] l
dimana g, i, tour, dan l berarti generasi, ID individu, perjalanan (daftar kota dalam urutan
sedang dikunjungi), panjang perjalanan.
Baris terakhir menyatakan elit baru diperoleh pada generasi 180, yaitu individu
ke-10692 dan panjang perjalanan 55209. menurut TSPLIB, ini merupakan solusi
minimum

Kesimpulan
Algoritma hibrid ini akan cepat menyelesaikan masalah TSP karena
menggabungkn metode GA dan metode 2opt. Program yang telah dibuat, dipublikasikan
ke webpage penulis. Karena program ini ditulis dengan bahasa JAVA, maka dapat
dijalankan pada berbagi platform, setiap pengguna bebas untuk membuktikan keefisienan
algoritma ini dan bebas untuk membuat program sendiri untuk dibandingkan dengan
algoritma ini dengan menjalankan pada mesin yang sama.
Daftar pustaka
[1] Holland, J.H.: Adaptation in Natural and Artificial Systems, Univ. of Michigan Press
(1975)
[2] Sengoku H., Yoshihar, I.: A Fasr TSP Solution using Genetic Algorithm ( Japanese),
Information Processing Society of Japan 46th Natl Conv. (1993)
[3] Sengoku, H., Yoshihara, I.: An Evolution of Optimizing Capability of Genetic
Algorithm GA vs SA ( Japanese ), Informtion processing Society of Japan 47 th
Natl Conv. (1993)
[4] Moscato, P.: TSPLIB, http://www.ing.unlp.edu/r/cetad/mos/TSPLIB_home.html
[5] Reinelt, G.: TSPLIB, ftp://softlib.rice.edu/pub/tsplib/tsplib.tar
[6] Yamamura, M., Ono, T., Kobayashi, S.: Character-Preserving Genetic Algorithms for
Travelling Salesman Problem, Journal of Japanese Soceity for Artificial Intelligence
Vol. 7, No. 6 (1992)
[7] Cornell, G., Horstmnn, C.S.: core JAVA, Sun Soft Press (1996).