Tspalgen 222
Tspalgen 222
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
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
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
2. Lintasan
3. Lintasan
4. Lintasan
5. Lintasan
6. Lintasan
7. Lintasan
8. Lintasan
9. Lintasan
10. Lintasan
11. Lintasan
12. Lintasan
1.
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 :
1. Inisialisasi
2. Evaluasi kromosom
3. Seleksi Kromosom
4. Pindah Silang (crossover)
5. 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
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] =
C[2] =
C[3] =
C[4] =
C[5] =
C[6] =
0,028
0,028+0,179
0,387+0,164
0,551+0,130
0,681+0,159
0,840+0,159
=
=
=
=
=
0,387
0,551
0,681
0,840
1
6; 0.16
1; 0.21
5; 0.16
2; 0.18
4; 0.13
3; 0.16
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 ,
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
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
>> 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;
end
PINDAH SILANG
>> 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
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,
TM2 = 1 + fix(rand*JumGen);
end
temp = MutKrom(i);
MutKrom(i) = MutKrom(TM2);
MutKrom(TM2) = temp;
end
end
HASIL MUTASI
>> TSPMutasi(Y,10,0.005)
ans =
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
1
10
Terima kasih