Oleh :
Welly Nopi Healtanto
I0411041
Algoritma semut diperkenalkan oleh Moyson dan Manderick dan secara meluas
dikembangkan
oleh Marco
Dorigo
merupakan
teknik
probabilistik
untuk
juga
mempunyai
keuntungan
untuk
mencegah
konvergensi pada
penyelesaian optimal secara lokal. Jika tidak ada penguapan sama sekali, jalur yang
dipilih semut pertama akan cenderung menarik secara berlebihan terhadap semutsemut yang mengikutinya. Pada kasus yang demikian, eksplorasi ruang penyelesaian
akan terbatasi.
Oleh karena itu, ketika seekor semut menemukan jalur yang bagus (jalur yang
pendek) dari koloni ke sumber makanan, semut lainnya akan mengikuti jalur tersebut,
dan akhirnya semua semut akan mengikuti sebuah jalur tunggal. Ide algoritma koloni
semut adalah untuk meniru perilaku ini melalui 'semut tiruan' berjalan seputar grafik
yang menunjukkan masalah yang harus diselesaikan.
Algoritma optimisasi koloni semut telah digunakan untuk menghasilkan penyelesaian
yang mendekati optimal pada masalah salesman yang melakukan perjalanan.
Algoritma semut lebih menguntungkan daripada pendekatan penguatan tiruan
(simulaten annealing) dan algoritma genetik saat grafik mungkin berubah secara
dinamis; algoritma koloni semut dapat berjalan secara kontinyu dan menyesuaikan
dengan
perubahan
secara waktu
nyata (real
time).
Hal
ini
menarik
Seiring waktu, bagaimanapun juga jejak feromon akan menguap dan akan
mengurangi kekuatan daya tariknya. Lebih lama seekor semut pulang pergi
melalui jalur tersebut, lebih lama jugalah feromon menguap.
Agar semut mendapatkan jalur optimal, diperlukan beberapa proses:
1. Pada awalnya, semut berkeliling secara acak, hingga menemukan
makanan. Lihat Gambar 2.
2. Ketika menemukan makanan mereka kembali ke koloninya sambil
memberikan tanda dengan jejak feromon.
3. Jika semut-semut lain menemukan jalur tersebut, mereka tidak akan
bepergian dengan acak lagi, melainkan akan mengikuti jejak tersebut.
4. Kembali dan menguatkannya jika pada akhirnya mereka pun menemukan
makanan.
5. Seekor semut yang secara tidak sengaja menemukan jalur optimal akan
menempuh jalur ini lebih cepat dari rekan-rekannya, melakukan round-trip
lebih sering, dan dengan sendirinya meninggalkan feromon lebih banyak
dari jalur-jalur yang lebih lambat ditempuh.
6. Feromon yang berkonsentrasi tinggi pada akhirnya akan menarik
semutsemut lain untuk berpindah jalur, menuju jalur paling optimal,
sedangkan jalur lainnya akan ditinggalkan.
7. Pada akhirnya semua semut yang tadinya menempuh jalur yang
berbedabeda akan beralih ke sebuah jalur tunggal yang ternyata paling
optimal dari sarang menuju ke tempat makanan. Lihat Gambar 3
dengan i sebagai indeks kota asal dan j sebagai indeks kota tujuan.
Langkah 4:
a. Perhitungan panjang jalur setiap semut. Perhitungan panjang jalur
tertutup (length closed tour) atau Lk setiap semut dilakukan setelah
satu siklus diselesaikan oleh semua semut. Perhitungan dilakukan
berdasarkan tabuk masing-masing dengan persamaan berikut:
intensitas jejak kaki semut antar kota untuk siklus selanjutnya dihitung
dengan persamaan:ij = ij + ij
b. Atur ulang harga perubahan intensitas jejak kaki semut antar kota.
Untuk siklus selanjutnya perubahan harga intensitas jejak semut antar kota
perlu diatur kembali agar memiliki nilai sama dengan nol.
Langkah 6:
Pengosongan tabu list, dan ulangi langkah dua jika diperlukan. Tabu list
perlu dikosongkan untuk diisi lagi dengan urutan kota yang baru pada
siklus selanjutnya, jika jumlah siklus maksimum belum tercapai atau
belum terjadi konvergensi. Algoritma diulang lagi dari langkah dua dengan
harga parameter intensitas jejak kaki semut antar kota yang sudah
diperbaharui.
3. Contoh Kasus
Jika diketahui suatu graph di bawah yang ingin diketahui jalur terpendek dari kota
A ke kota E:
Siklus ke-1:
Panjang jalur semut:
Siklus ke-2:
Panjang jalur semut:
Dari dua siklus diatas, diketahui lintasan terpendek diperoleh oleh semut ke-4
dengan jalur A-D-E dengan panjang lintasan 7.
B. Algoritma Genetika
Algoritma genetik adalah teknik pencarian yang di dalam ilmu komputer untuk
menemukan penyelesaian perkiraan untuk optimisasi dan masalah pencarian.
Algoritma genetik adalah kelas khusus dari algoritma evolusioner dengan
menggunakan teknik yang terinspirasi oleh biologi evolusioner seperti warisan,
mutasi, seleksi alam dan rekombinasi (ataucrossover)
Algoritma Genetik pertama kali dikembangkan oleh John Holland pada tahun 1970-an
di New York, Amerika Serikat. Dia beserta murid-murid dan teman kerjanya
menghasilkan buku berjudul "Adaption in Natural and Artificial Systems" pada tahun
1975.
Algoritma Genetik khususnya diterapkan sebagai simulasi komputer dimana sebuah
populasi representasi abstrak (disebut kromosom) dari solusi-solusi calon (disebut
individual) pada sebuah masalah optimisasi akan berkembang menjadi solusi-solusi
yang lebih baik. Secara tradisional, solusi-solusi dilambangkan dalam biner sebagai
string
'0'
dan
'1',
walaupun
dimungkinkan
juga
penggunaan penyandian
(encoding) yang berbeda. Evolusi dimulai dari sebuah populasi individual acak yang
lengkap dan terjadi dalam generasi-generasi. Dalam tiap generasi, kemampuan
keseluruhan populasi dievaluasi, kemudian multiple individuals dipilih dari populasi
sekarang (current) tersebut secara stochastic(berdasarkan kemampuan mereka), lalu
dimodifikasi (melalui mutasi atau rekombinasi) menjadi bentuk populasi baru yang
menjadi populasi sekarang (current) pada iterasiberikutnya dari algoritma.
1. Teori Dasar Algoritma Genetika
Algoritma genetika yang dikembangkan oleh Goldberg adalah algoritma
komputasi yang diinspirasi teori evolusi Darwin yang menyatakan bahwa
kelangsungan hidup suatu makhluk dipengaruhi aturan yang kuat adalah yang
menang. Darwin juga menyatakan bahwa kelangsungan hidup suatu makhluk
dapat dipertahankan melalui proses reproduksi, crossover, dan mutasi. Konsep
dalam teori evolusi Darwin tersebut kemudian diadopsi menjadi algoritma
komputasi untuk mencari solusi suatu permasalahan dengan cara yang lebih
alamiah.
Sebuah solusi yang dibangkitkan dalam algoritma genetika disebut sebagai
chromosome, sedangkan kumpulan chromosome-chromosome tersebut disebut
sebagai populasi. Sebuah chromosome dibentuk dari komponen-komponen
penyusun yang disebut sebagai gen dan nilainya dapat berupa bilangan numerik,
biner, simbol ataupun karakter tergantung dari permasalahan yang ingin
diselesaikan.
Chromosome-chromosome tersebut akan berevolusi secara berkelanjutan yang
disebut dengan generasi. Dalam tiap generasi chromosome-chromosome tersebut
dievaluasi tingkat keberhasilan nilai solusinya terhadap masalah yang ingin
diselesaikan (fungsi_objektif) menggunakan ukuran yang disebut dengan fitness.
Untuk memilih chromosome yang tetap dipertahankan untuk generasi selanjutnya
dilakukan proses yang disebut dengan seleksi. Proses seleksi chromosome
menggunakan konsep aturan evolusi Darwin yang telah disebutkan sebelumnya
10
yaitu chromosome yang mempunyai nilai fitness tinggi akan memiliki peluang
lebih besar untuk terpilih lagi pada generasi selanjutnya.
Chromosome-chromosome baru yang disebut dengan offspring, dibentuk dengan
cara melakukan perkawinan antar chromosome-chromosome dalam satu generasi
yang disebut sebagai proses crossover. Jumlah chromosome dalam populasi yang
mengalami
crossover
ditetukan
oleh
paramater
yang
disebut
dengan
o(S2)= 3
o(S3)= 8
Tahap3
Batasan panjang dari skema S (dinotasikan dengan (S)) adalah jarak antara posisi
angka 0 atau 1 yang pertama hingga terakhir. Angka ini menunjukkan kerapatan
informasi yang ada dalam sebuah skema.
Contoh: (S1)= 10-4=6; (S2)= 9-5 =4; (S3)= 10-1=9;
3. Contoh Aplikasi Algoritma Genetika
Berikut adalah contoh aplikasi algoritma genetika yang digunakan untuk
menyelesaikan masalah kombinasi. Misalkan ada persamaan a+2b+3c+4d = 30,
kita mencari nilai a, b, c, dan d yang memenuhi persamaan diatas. Kita mencoba
menggunakan algoritma genetika untuk menyelesaikan permasalahan diatas.
Penjelasan mengenai langkah-langkah penyelesaian permasalahan diatas
menggunakan algoritma genetika adalah sebagai berikut:
1. Pembentukan chromosome
Karena yang dicari adalah nilai a, b, c, d maka variabel a, b, c, d dijadikan
sebagai gen-gen pembentuk chromosome. Batasan nilai variabel a adalah
bilangan integer 0 sampai 30. Sedangkan batasan nilai variabel b, c, dan d
adalah bilangan integer 0 sampai 10.
2. Inisialisasi
Proses inisialisasi dilakukan dengan cara memberikan nilai awal gen-gen
dengan nilai acak sesuai batasan yang telah ditentukan.
Misalkan kita tentukan jumlah populasi adalah 6, maka:
Chromosome[1] = [a;b;c;d] = [12;05;03;08]
Chromosome[2] = [a;b;c;d] = [02;01;08;03]
Chromosome[3] = [a;b;c;d] = [10;04;03;04]
Chromosome[4] = [a;b;c;d] = [20;01;10;06]
Chromosome[5] = [a;b;c;d] = [01;04;03;09]
Chromosome[6] = [a;b;c;d] = [20;05;07;01]
3. Evaluasi Chromosome
Permasalahan yang ingin diselesaikan adalah nilai variabel a, b, c, dan d yang
memenuhi persamaan a+2b+3c+4d = 30, maka fungsi_objektif yang dapat
digunakan untuk mendapatkan solusi adalah fungsi_objektif(chromosome) = |
(a+2b+3c+4d) 30 |
Kita hitung fungsi_objektif dari chromosome yang telah dibangkitkan:
fungsi_objektif(chromosome[1]) = Abs(( 12 + 2*5 + 3*3 + 4*8 ) 30) = 33
12
= 1 / (fungsi_objektif[2]+1) = 0.0909
fitness[3]
= 1 / (fungsi_objektif[3]+1) = 0.0714
fitness[4]
= 1 / (fungsi_objektif[4]+1)= 0.0212
fitness[5]
= 1 / (fungsi_objektif[5]+1)= 0.0400
fitness[6]
= 1 / (fungsi_objektif[6]+1)= 0.0385
P[3]
P[4]
P[5]
= 0.1009
C[2]
C[3]
C[4]
C[5]
C[6]
= 4 * 6 = 24
Untuk memilih posisi gen yang mengalami mutasi dilakukan dengan cara
membangkitkan bilangan integer acak antara 1 sampai total_gen, yaitu 1
sampai 24. Jika bilangan acak yang kita bangkitkan lebih kecil daripada
variabel mutation_rate (m) maka pilih posisi tersebut sebagai sub16
= 0.1 * 24 = 2.4 = 2
Misalkan setelah kita bangkitkan bilangan acak terpilih posisi gen 12 dan 18
yang mengalami mutasi. Dengan demikian yang akan mengalami mutasi
adalah chromosome ke-3 gen nomor 4 dan Chromosome ke-5 gen nomor 2.
Maka nilai gen pada posisi tersebut kita ganti dengan bilangan acak 0-30.
Misalkan bilangan acak yang terbangkitkan adalah 2 dan 5. Maka populasi
chromosome setelah mengalami proses mutasi adalah:
chromosome[1] = [02;04;03;09]
chromosome[2] = [02;01;08;03]
chromosome[3] = [12;05;03;02]
chromosome[4] = [01;01;08;03]
chromosome[5] = [02;05;08;03]
chromosome[6] = [10;04;03;04]
Setelah proses mutasi maka kita telah menyelesaikan satu iterasi dalam
algoritma genetika atau disebut dengan satu generasi. Maka fungsi_objective
setelah satu generasi adalah:
chromosome[1] = [02;04;03;09]
fungsi_objektif[1] = Abs(( 2 + 2*4 + 3*3 + 4*9 ) 30) = 25
chromosome[2] = [02;01;08;03]
fungsi_objektif[2] = Abs(( 2 + 2*1 + 3*8 + 4*3 ) 30) = 10
chromosome[3] = [12;05;03;02]
fungsi_objektif[3] = Abs(( 12 + 2*5 + 3*3 + 4*2 ) 30) = 9
chromosome[4] = [01;01;08;03]
fungsi_objektif[4] = Abs(( 1 + 2*1 + 3*8 + 4*3 ) 30) = 9
chromosome[5] = [02;05;08;03]
fungsi_objektif[5] = Abs(( 2 + 2*5 + 3*8 + 4*3 ) 30) = 18
chromosome[6] = [10;04;03;04]
fungsi_objektif[6] = Abs(( 10 + 2*4 + 3*3 + 4*4 ) 30) = 13
Rata-rata fungsi objektif setelah satu generasi adalah:
rata-rata = ( 25 + 10 + 9 + 9 + 18 + 13) / 6 = 14.0
Dapat dilihat dari hasil perhitungan fungsi objektif diatas bahwa setelah satu
generasi, nilai hasil rata-rata fungsi_objektif lebih menurun dibandingkan hasil
fungsi_objektif pada saat sebelum mengalami seleksi, crossover dan mutasi.
Hal ini menunjukkan bahwa chromosome atau solusi yang dihasilkan setelah
17
mana populasi pada PSO didasarkan pada penelusuran algoritma dan diawali
dengan suatu populasi yang random yang disebut dengan particle. Berbeda
dengan teknik komputasi evolusioner lainnya, setiap particle di dalam PSO juga
berhubungan dengan suatu velocity. Particle-particle tersebut bergerak melalui
penelusuran ruang dengan velocity yang dinamis yang disesuaikan menurut
perilaku historisnya. Oleh karena itu, particleparticle mempunyai kecenderungan
untuk bergerak ke area penelusuran yang lebih baik setelah melewati proses
penelusuran. Particle Swarm Optimization (PSO) mempunyai kesamaan dengan
genetic algorithm yang mana dimulai dengan suatu populasi yang random dalam
bentuk matriks. Namun PSO tidak memiliki operator evolusi yaitu crossover dan
mutasi seperti yang ada pada genetic algorithm. Baris pada matriks disebut
particle atau dalam genetic algorithm sebagai kromosom yang terdiri dari nilai
suatu variable. Setiap particle berpindah dari posisinya semula ke posisi yang
lebih baik dengan suatu velocity . Pada algoritma PSO vektor velocity diupdate
untuk masing-masing particle kemudian menjumlahkan vektor velocity tersebut
ke posisi particle. Update velocity dipengaruhi oleh kedua solusi yaitu global best
yang berhubungan dengan biaya yang paling rendah yang pernah diperoleh dari
suatu particle dan solusi local best yang berhubungan dengan biaya yang paling
rendah pada populasi awal. Jika solusi local best mempunyai suatu biaya yang
kurang dari biaya solusi global yang ada, maka solusi local best menggantikan
solusi global best . Kesederhanaan algoritma dan performansinya yang baik,
menjadikan PSO telah menarik banyak perhatian di kalangan para peneliti dan
telah diaplikasikan dalam berbagai persoalan optimisasi sistem tenaga seperti
economic dispatch, design kontrol PID pada sistem AVR, kontrol tegangan dan
daya reaktif, unit commitment dan lain sebagainya. PSO telah populer menjadi
optimisasi global dengan sebagian besar permasalahan dapat diselesaikan dengan
baik di mana variabelvariabelnya adalah bilangan riil.
Beberapa istilah umum yang biasa digunakan dalam Optimisasi Particle Swarm
dapat didefinisikan sebagai berikut :
1. Swarm : populasi dari suatu algoritma.
2. Particle: anggota (individu) pada suatu swarm.
Setiap particle merepresentasikan suatu solusi yang potensial pada
permasalahan yang diselesaikan. Posisi dari suatu particle adalah ditentukan
oleh representasi solusi saat itu.
19
3. Pbest (Personal best): posisi Pbest suatu particle yang menunjukkan posisi
particle yang dipersiapkan untuk mendapatkan suatu solusi yang terbaik.
4. Gbest (Global best) : posisi terbaik particle pada swarm.
5. Velocity (vektor): vektor yang menggerakkan proses optimisasi yang
menentukan arah di mana suatu particle diperlukan untuk berpindah (move)
untuk memperbaiki posisinya semula.
6. Inertia weight : inertia weight di simbolkan w, parameter ini digunakan untuk
mengontrol dampak dari adanya velocity yang diberikan oleh suatu particle.
3. Contoh Kasus
Pada makalah ini algoritma optimasi particle swarm digunakan untuk
menyelesaikan sistem persamaan nonlinear. Data masukan utama yang dibutuhkan
untuk proses uji coba adalah sistem persamaan nonlinear dan beberapa fungsi
umum
20
21
22
23
D. Kesimpulan
1.
2.
3.
manusia.
4. Algoritma genetika dapat digunakan untuk proses pencarian dan proses optimasi.
5. Algoritma Particle Swarm yang diusulkan oleh Jaberipour dapat digunakan untuk
menyelesaikan sistem persamaan nonlinear.
6.
Algoritma Particle Swarm yang diusulkan oleh Jaberipour memiliki kinerja yang
baik dalam mencari solusi yang optimal. Hal ini dibuktikan dengan hasil uji coba
pertama, solusi yang didapat mendekati solusi eksak masing-masing fungsinya.
Daftar Pustaka
Sina, Ibnu Wardy. Penggunaan Graf dalam Algoritma Semut untuk Melakukan Optimisasi.
Institut Teknologi Bandung.
25
Mutakhiroh, Iing, dkk. Pencarian Jalur Terpendek Menggunakan Algoritma Semut. SNATI.
2007.
Rosita, Ardiana. Implementasi Algoritma Particle Swarm untuk Menyelesaikan Sistem
Persamaan Nonlinear. JURNAL TEKNIK ITS Vol. 1. 2012.
26