Penyelesaian TSP dengan Algoritma Genetik

Slides:



Advertisements
Presentasi serupa
TURUNAN/ DIFERENSIAL.
Advertisements

Selamat Datang Dalam Kuliah Terbuka Ini
PENYEDERHANAAN RANGKAIAN
11. BENTUK NORMAL CHOMSKY.
Menempatkan Pointer Q 6.3 & 7.3 NESTED LOOP.
UAS VAGANZA IX SMP MATEMATIKA.
Selamat Datang Dalam Kuliah Terbuka Ini
Matematika Diskrit Dr.-Ing. Erwin Sitompul
PEMBELAJARAN KELAS IX SEMESTER I KESEBANGUNAN
ALGORITMA GENETIKA.
Matematika Diskrit Dr.-Ing. Erwin Sitompul
KESEBANGUNAN.
SISTEM PERSAMAAN LINIER (SPL)
Algoritma Greedy.
Algoritma Genetika Kelompok 2 Ferry sandi cristian ( )
MATRIKS Trihastuti Agustinah.
Materi Kuliah Kalkulus II
ASIKNYA BELAJAR MATEMATIKA
TURUNAN DIFERENSIAL Pertemuan ke
Disusun Oleh: Ainiyatul Muthoharo ( )
Algoritma Runut-balik (Backtracking)
Luas Daerah ( Integral ).
GRAF TIDAK BERARAH PART 2 Dosen : Ahmad Apandi, ST
SEGI EMPAT 4/8/2017.
Pertemuan-4 : Recurrences
FUNGSI MATEMATIKA DISKRIT K- 6 Universitas Indonesia
5.MONTE CARLO 5.1. Metode Monte Carlo
Peluang.
PELUANG SUATU KEJADIAN
Bahan Kuliah IF2211 Strategi Algoritma
Algoritma Genetika.
Genetic Algoritms.
DISTRIBUSI PROBABLITAS
KESEBANGUNAN OLEH: FAHRUDDIN KURNIA.
Algoritma Genetik  Setiap mahluk hidup selalu mengembangkan dirinya un tuk berusaha bertahan diri guna menyesuaikan dengan tuk berusaha bertahan diri.
Yufis Azhar – Teknik Informatika - UMM
SEARCH 2 Pertemuan ke Lima.
FUNGSI STRUKTUR DISKRIT K-8 Program Studi Teknik Komputer
SEGI EMPAT Oleh : ROHMAD F.F., S.Pd..
Bahan Kuliah IF2091 Struktur Diskrit
Algoritma Branch and Bound
Algoritma Runut-balik (Backtracking)
Bahan Kuliah IF2120 Matematika Diskrit Oleh: Rinaldi Munir
Hill Climbing.
Algoritma Genetik (lanjutan)
9. BILANGAN BULAT.
BAB XII PROBABILITAS (Permutasi dan Kombinasi) (Pertemuan ke-28)
Bahan Kuliah IF2120 Matematika Diskrit
Pohon (bagian ke 6) Matematika Diskrit.
Dimensi Tiga (Jarak) SMA 5 Mtr.
Design and Analysis Algorithm
Kuliah Sistem Fuzzy Pertemuan 13 “Algoritma Genetika” (lanjutan)
ALGORITMA GENETIKA Pertemuan 12.
Kuliah Sistem Fuzzy Pertemuan 12 “Algoritma Genetika”
Perbandingan Algoritma Brute Force dan Depth First Search (DFS) dalam Kasus Travelling Salesman Problem (TSP) Ervin Yohannes ( )
Algoritma Bruteforce Team Fasilkom.
Imam Cholissodin | Algoritma Evolusi Teknik Optimasi Imam Cholissodin |
Pencarian Simulated Annealing
ALGORITMA GENETIKA.
Algoritma Bruteforce (disarikan dari diktat Strategi Algoritma, Rinaldi Munir) Team Fasilkom.
Oleh : Yusuf Nurrachman, ST, MMSI
GENETICS ALGORITHM Nelly Indriani W. S.Si., M.T KECERDASAN BUATAN.
Pertemuan 14 Algoritma Genetika.
Algoritma AI 2.
ALGORITMA GENETIKA.
Pertemuan 13 Algoritma Genetika.
ALGORITMA GENETIKA.
Algoritma Genetika.
Pertemuan 15 ALGORITMA GENETIKA
Algoritma Genetika. Melakukan Optimasi Fitness Contoh Fungsi Fitnes Y = - (x 2 - 1) GA akan melakukan optimasi terhadap fungsi tersebut.
Transcript presentasi:

Penyelesaian TSP dengan Algoritma Genetik Algoritma Genetik – by Ignas Lamabelawa Penyelesaian TSP dengan Algoritma Genetik

pENGERtian tsp sebuah persoalan optimasi untuk mencari rute terpendek bagi seorang pedagang keliling (salesman) Persoalan optimasi yang ingin dicapai ialah rute yang dilalui dan biaya yang digunakan paling minimum

Permasalahan Bila dipandang dari sudut komputasinya, algoritma ini dapat diselesaikan dengan cepat walaupun dengan menggunakan algoritma brute force sekalipun, jika kota-kota yang akan dikunjunginya sedikit. Namun, jika kota-kota yang akan dikunjungi banyak, maka algoritma seperti Brute Force tidaklah menjadi pilihan lagi. Sebab, Algoritma Brute Force sendiri memiliki kompleksitas O(n!)

Metode penyelesain tsp konvensional Salah satu cara untuk menyelesaikan TSP yaitu dengan menggunakan Algoritma Brute Force. Hal yang dilakukan ialah dengan cara mengenumerasi seluruh kemungkinan rute yang akan ditempuh

Metode penyelesaian - algortima genetik Beberapa metode telah dikembangkan untuk memecahkan persoalan ini namun belum ditemukan algoritma penyelesaian yang optimal. Salah satu algoritma yang muncul untuk menyelesaikan persoalan ini ialah Algoritma Genetika

Contoh masalah tsp

Penyelesaian 1 Jumlah node (n) ada 5 buah, Jumlah kemungkinan jalur = (n-1)! / 2 Jumlah jalur 4! /2 = 12 buah Dimisalkan titik asal A dan titik akhir adalah A Maka jumlah jalur dan panjang lintasannya adalah :

Penyelesaian 2 Lintasan 1 = (a b c d e a) atau (a e d c b a) memiliki panjang lintasan = 7 + 7 + 4 + 6 + 9 = 33 Lintasan 2 = (a b c e d a) atau (a d e c b a) memiliki panjang lintasan = 7 + 7 + 3 + 6 + 9 = 32 Lintasan 3 = (a b d c e a) atau (a e c d b a) memiliki panjang lintasan = 7 + 2 + 4 + 3 + 9 = 25 Lintasan 4 = (a b d e c a) atau (a c e d b a) memiliki panjang lintasan = 7 + 2 + 6 + 3 + 5 = 23 Lintasan 5 = (a b e c d a) atau (a d c e b a) memiliki panjang lintasan = 7 + 8 + 3 + 4 + 9 = 31 Lintasan 6 = (a b e d c a) atau (a c d e b a) memiliki panjang lintasan = 7 + 8 + 6 + 4 + 5 = 30 Lintasan 7 = (a c b d e a) atau (a e d b c a) memiliki panjang lintasan = 5 + 7 + 2 + 6 + 9 = 29 Lintasan 8 = (a c b e d a) atau (a d e b c a) memiliki panjang lintasan = 5 + 7 + 8 + 6 + 9 = 35 Lintasan 9 = (a c d b e a) atau (a e b d c a) memiliki panjang lintasan = 5 + 4 + 2 + 8 + 9 = 28 Lintasan 10 = (a d b c e a) atau (a e c b d a) memiliki panjang lintasan = 9 + 2 + 7 + 3 + 9 = 30 Lintasan 11 = (a d b e c a) atau (a c e b d a) memiliki panjang lintasan = 9 + 2 + 8 + 3 + 5 = 27 Lintasan 12 = (a d c b e a) atau (a e b c d a) memiliki panjang lintasan = 9 + 4 + 7 + 8 + 9 = 37 Lintasan yang jaraknya paling pendek adalah : 4 yaitu 23

hasil Dari hasil ke-12 enumerasi di atas didapatkan panjang jalur lintasan paling minimum yaitu 23. Jumlah enumerasi dari algoritma ini ialah (n - 1)! yang akan memerlukan waktu yang sangat lama untuk mendapatkan panjang lintasan paling minimum jika nilai n bernilai sangat besar.

Penyelesaian dengan ag Dengan contoh yang sama diatas, tahap2 penyelesaian TSP dengan AG adalah : Inisialisasi Evaluasi kromosom Seleksi Kromosom Pindah Silang (crossover) Mutasi

Inisialisasi Dipilih secara random ada 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]

Evaluasi kromosom Menghitung nilai fitness dari tiap kromosom yang telah dibangkitkan pada langkah 1 di atas, dengan menghitung bobot dari setiap lintasan : 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 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 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 (2) 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

Probabilitas kUMULATIF Dengan C[1] = 0,028 C[2] = 0,028+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

metode roulette wheel Bila bilangan random R[i] yang dihasilkan sbb : Induk yang dipilih dengan C[k-1]<R[k]<C[k] menghasilkan : C[2],C[[1],C[3],C[5],C[[4],C[]

Populasi baru yang terbentuk Kromosom[1] = [D B E C] Kromosom[2] = [B D E C] Kromosom[3]= [C B D E] Kromosom[4] = [E C B D] Kromosom[5] = [E B C D] Kromosom[6] = [C D E B]

Pindah silang(crossover) Misal parameter crossover probability (ρc) = 25%. Berarti jika bilangan random dihasilkan < 0.25 maka akan dipilih menjadi induk baru. Hasil 6 bilangan random yang dihasilkan adalah : R[1] = 0,451 , 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 : 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] = [C D B E]

Hasil crossover Kromosom[1] = [D B E C] diambil dari kromosom induk 1 Kromosom[2] = [B D C E] diambil dari hasil crossover kromosom 2 dan 3 Kromosom[3] = [C D E B] diambil dari hasil crossover kromosom 3 dan 6 Kromosom[4] = [E C B D] diambil dari kromosom induk 4 Kromosom[5] = [E B C D] diambil dari kromosom induk 5 Kromosom[6] = [C D B E] diambil dari hasil crossover kromosom 6 dan 2

mutasi Panjang total gen = jumlah gen dalam 1 kromosom * jumlah Kromosom (3) = 4 * 6 = 24 Misal probabilitas mutasi (ρm) = 20 %, maka jumlah gen yang akan dimutasi adalah = 0,2*24 = 4,8 = 5 .Posisi tersebut didapat dari pembangkitan 5 bilangan acak, mis bilangan acak yang dihasilkan adalah 0,1 maka posisi gen yang akan dimutasi adalah posisi no 3, dimana 0.1 < 3/24 Mis 5 buah posisi gen yang akan dimutasi adalah 3, 7, 10, 20, 24.

Proses mutasi Kromosom[1] = [D B C E] Kromosom[2] = [B D E C] Kromosom[3] = [C E D B] Kromosom[4] = [E C B D] Kromosom[5] = [D B C E] Kromosom[6] = [E D B C]

Kesimpulan Kelebihan algoritma genetika dibandingkan metode pencarian konvensiona pada TSP yaitu 1. Solusi dapat diperoleh kapanpun karena solusi dihasilkan pada generasi ke berapapun 2. Algoritma genetika tidak harus membutuhkan waktu yang lama karena tidak semua kemungkinan dicoba, tergantung pada kriteria berakhirnya. 3. Algoritma pencarian konvensional dilakukan apabila jumlah n kecil, tapi jika n nya banyak maka akan memakan banyak waktu untuk penyelesaian dibandingkan algoritma genetik

Contoh program tsp dengan matlab Ada 10 kota yang dipetakan dalam titik koordinat sebagai berikut : Kota(x,y) = [1 3;1 7; 3 9; 5 3; 7 1; 9 5; 9 9; 11 1;15 7; 19 3];

gambar

1. Inisialisasi function Populasi = TSPInisialisasiPopulasi(UkPop,JumGen) for i=1:UkPop, [Xval,Ind] = sort(rand(1,JumGen)); Populasi(i,:) = Ind; end

Implementasi Misalkan diambil ukuran populasi atau jumlah kromosom dalam populasi = 20 Jumlah gen dalam kromosom/ jumlah kota = 10 >> TSPinisialisasiPopulasi(20,10) Y = 8 7 3 2 4 5 1 9 6 10 10 3 5 2 6 8 9 4 1 7 1 9 8 10 7 3 6 5 2 4 10 8 1 7 6 5 3 4 2 9 2 8 1 7 6 9 4 3 10 5 2 8 1 3 9 10 4 5 7 6 1 5 8 10 6 3 4 9 2 7 7 3 4 8 10 9 1 5 2 6 5 10 4 2 6 9 1 3 8 7 10 1 4 3 5 2 7 6 9 8 5 3 1 2 6 4 7 10 9 8 4 8 1 10 7 2 3 9 6 5 10 4 6 8 2 5 9 1 7 3 6 1 3 2 4 5 8 9 10 7 6 7 2 8 3 9 10 5 4 1 10 6 3 4 9 2 5 7 1 8 4 7 6 5 10 2 3 1 8 9 2 9 10 5 6 8 4 3 7 1 6 9 1 7 3 4 2 8 5 10 1 9 7 8 10 4 3 5 2 6

2. Hitung nilai fitness function fitness = TSPEvaluasiIndividu(Kromosom,JumGen,XYkota) TB = 0; For i=1:JumGen-1, TB = TB + norm(XYkota(Kromosom(ii),:) - XYkota(Kromosom(i+1),:)); end % Jalur harus kembali ke kota asal TB = TB + norm(XYkota(Kromosom(JumGen),:) - XYkota(Kromosom(1),:)); fitness = 1 / TB;

>> TSPEvaluasiIndividu(Y,10,XYkota) TB = 105.3432 ans = 0.0095

LINEARFITNESSRANKING function LFR = LinearFitnessRanking(UkPop,Fitness,MaxF,MinF) [SF,IndF] = sort(Fitness); % LinearFitness = nilai fitness baru hasil pen-skala-an for rr=1:UkPop, LFR(IndF(UkPop-rr+1)) = MaxF-(MaxF-MinF)*((rr-1)/(UkPop-1)); end

ROULETTE WHEEL 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;

PINDAH SILANG function Anak = TSPPindahSilang(Bapak,Ibu,JumGen) cp1 = 1 + fix(rand*(JumGen-1)) cp2 = 1 + fix(rand*(JumGen-1)) while cp2==cp1, end if cp1 < cp2, cps = cp1; cpd = cp2; else cps = cp2; cpd = cp1; Anak(1,cps+1:cpd) = Ibu(cps+1:cpd); Anak(2,cps+1:cpd) = Bapak(cps+1:cpd); C=Anak(1,cps+1:cpd) D=Anak(2,cps+1:cpd) SisaGenbapak = []; SisaGenIbu = []; for ii=1:JumGen, if ~ismember(Bapak(ii),Anak(1,:)), SisaGenbapak = [SisaGenbapak Bapak(ii)]; if ~ismember(Ibu(ii),Anak(2,:)), SisaGenIbu = [SisaGenIbu Ibu(ii)]; SGB=SisaGenbapak SGI=SisaGenIbu 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));

>> B=TSPInisialisasiPopulasi(1,10) B =2 8 1 3 9 10 4 5 7 6 >> I=TSPInisialisasiPopulasi(1,10) I = 1 5 8 10 6 3 4 9 2 7 cp1 = 8;cps=4 cp2 = 4;cpd=8 anak1( 5:8 ) = baris ke 5-8 dari ibu 6 3 4 9 sisanya diambil dari Sisa Gen Bapak yang tidak sama dengan anak1 yang terbentuk diatas: 2 8 1 10 5 7 Dengan perincian Anak1(9:10)=sisa gen bapak(1:10-8) = 2 8 Anak1(1:4)=sisag gen bapak(3:6) = 1 10 5 7 Anak2 = 9 10 4 5 Anak2(5:8) = 9 10 4 5 Sisa gen ibu = 1 8 6 3 2 7 Anak2(9:10)= 1 8 Anak2(1:4)= 6 3 2 7 Anak 1 : 1 10 5 7 6 3 4 9 2 8 Anak 2 : 6 3 2 7 9 10 4 5 1 8

mutasi function MutKrom = TSPMutasi(Kromosom,JumGen,Pmutasi) MutKrom = Kromosom; For i=1:JumGen, if rand < Pmutasi, TM2 = 1 + fix(rand*JumGen); while TM2==i, end temp = MutKrom(i); MutKrom(i) = MutKrom(TM2); MutKrom(TM2) = temp;

Hasil mutasi >> TSPMutasi(Y,10,0.005) ans = 8 7 3 2 4 5 1 9 6 10 8 7 3 2 4 5 1 9 6 10 10 3 5 2 6 8 9 4 1 7 1 9 8 10 7 3 6 5 2 4 10 8 1 7 6 5 3 4 2 9 2 8 1 7 6 9 4 3 10 5 2 8 1 3 9 10 4 5 7 6 1 5 8 10 6 3 4 9 2 7 7 3 4 8 10 9 1 5 2 6 5 10 4 2 6 9 1 3 8 7 10 1 4 3 5 2 7 6 9 8 5 3 1 2 6 4 7 10 9 8 4 8 1 10 7 2 3 9 6 5 10 4 6 8 2 5 9 1 7 3 6 1 3 2 4 5 8 9 10 7 6 7 2 8 3 9 10 5 4 1 10 6 3 4 9 2 5 7 1 8 4 7 6 5 10 2 3 1 8 9 2 9 10 5 6 8 4 3 7 1 6 9 1 7 3 4 2 8 5 10 1 9 7 8 10 4 3 5 2 6

Hasil output

JalurTerbaik = 4 5 8 10 9 6 7 3 2 1

Terima kasih