Lampiran 1 Tabel Data Pendistribusian Raskin di Wilayah Kota Yogyakarta Raskin No
1
Kecamatan
Banyak
Jumlah Beras
Keluarga
(kg)
Bener
266
3.990
2
Kricak
750
11.250
3
Karangwaru
377
5.655
4
Tegalrejo
364
5.460
Bumijo
481
7.215
6
Gowongan
355
5.325
7
Cokrodiningratan
222
3.330
Demangan
156
2.340
9
Terban
131
1.965
10
Kotabaru
44
660
11
Baciro
367
5.505
12
Klitren
242
3.630
Suryatmajan
203
3.045
14
Tegalpanggung
543
8.145
15
Bausasran
223
3.345
5
8
13
Tegalrejo
Kelurahan
Jetis
Gondokusuman
Danurejan
81
Lampiran 2 Tabel Matriks Jarak Tempuh dalam Satuan Km
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 0 14.1 13.7 14.1 0 2.6 13.7 2.6 0 13.5 3.3 1.1 14.3 2.1 2.8 13.2 2.2 1.8 12.8 3.1 2.2 12.3 2.6 1.6 9.9 5.9 4.9 11.5 3.5 2.9 11.7 3.8 3.3 11.2 5.6 4.8 10 6.3 4.6 13 4.2 3.4 12.2 4.6 3.8 12.5 5.1 4.6
3 4 5 13.5 14.3 13.2 3.3 2.1 2.2 1.1 2.8 1.8 0 3.3 2.2 3.3 0 1.2 2.2 1.2 0 1.9 3.2 1 1.2 2.8 1.8 4.7 4.9 4 2.9 3.7 2.7 3.1 3.6 2.6 4.6 4.6 3.7 4.2 5.4 4.4 3.2 2.9 2 3.6 3.3 2.4 4.5 4.2 3.2
6 7 8 9 10 11 12 13 14 15 12.8 12.3 9.9 11.5 11.7 11.2 10 13 12.2 12.5 3.1 2.6 5.9 3.5 3.8 5.6 6.3 4.2 4.6 5.1 2.2 1.6 4.9 2.9 3.3 4.8 4.6 3.4 3.8 4.6 1.9 1.2 4.7 2.9 3.1 4.6 4.2 3.2 3.6 4.5 3.2 2.8 4.9 3.7 3.6 4.6 5.4 2.9 3.3 4.2 1 1.8 4 2.7 2.6 3.7 4.4 2 2.4 3.2 0 1 4.1 2.1 2.7 3.8 4.5 2.5 2.1 3.3 1 0 4.3 2.4 2.7 4.2 3.7 2.8 3.2 4 4.1 4.3 0 2.3 2.5 1.4 0.85 3.8 3 2.5 2.1 2.4 2.3 0 1.1 2.6 3.2 2.4 1.6 2.6 2.7 2.7 2.5 1.1 0 1.6 2.2 2.1 1.3 1.6 3.8 4.2 1.4 2.6 1.6 0 1.9 2.5 2.3 1.2 4.5 3.7 0.85 3.2 2.2 1.9 0 3.4 2.6 2.6 2.5 2.8 3.8 2.4 2.1 2.5 3.4 0 0.75 1.3 2.1 3.2 3 1.6 1.3 2.3 2.6 0.75 0 1.2 3.3 4 2.5 2.6 1.6 1.2 2.6 1.3 1.2 0
82
Lampiran 3
Tabel Waktu Tempuh dan Pelayanan dalam Satuan Menit
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 56 54 55 56 52 50 49 36 46 46 43 40 48 47 45
1 56 0 24 27 22 21 27 24 32 27 29 34 34 28 29 31
2 54 24 0 19 27 24 25 21 34 26 30 36 32 30 32 34
3 55 27 19 0 30 27 24 20 33 27 29 34 32 29 30 32
4 56 22 27 30 0 20 26 25 29 28 26 31 31 24 27 29
5 52 21 24 27 20 0 28 21 25 24 22 27 28 20 23 25
6 50 27 25 24 26 28 0 18 26 22 23 28 29 24 21 26
7 49 24 21 20 25 21 18 0 30 24 26 31 31 25 27 30
8 36 32 34 33 29 25 26 30 0 24 24 21 19 28 27 24
9 46 27 26 27 28 24 22 24 24 0 20 25 26 23 22 26
10 46 29 30 29 26 22 23 26 24 20 0 21 22 21 20 22
11 43 34 36 34 31 27 28 31 21 25 21 0 25 24 23 19
12 40 34 32 32 31 28 29 31 19 26 22 25 0 25 24 25
13 48 28 30 29 24 20 24 25 28 23 21 24 25 0 17 20
14 47 29 32 30 27 23 21 27 27 22 20 23 24 17 0 20
15 45 31 34 32 29 25 26 30 24 26 22 19 25 20 20 0
83
Lampiran 4 Prosedur penyelesaian algoritma genetika dengan menggunakan software Matlab dalam penyelesaian masalah pendistribusian raskin di Kota Yogyakarta dengan kendala kapasitas dan time windows yang telah ditentukan. Prosedur algoritma genetika ini dimodifikasi dari penelitian Adam Arif Dirgantara dan Ikhsan Hidayat. 1. Membangkitkan Populasi Awal Membangkitkan populasi awal diimplementasikan menggunakan baris-baris perintah pada fungsi CVRPTWInisialisasiPopulasi.m berikut ini. function Populasi = CVRPTWInisialisasiPopulasi(ukpop,jumgen) for ii=1:ukpop [X,Y] = sort(rand(1,jumgen)); Populasi(ii,:) = Y; end
Perintah rand(1,jumgen) menyatakan pembangkitan matriks berukuran 1 x jumgen yang berisi bilangan random dalam interval [0,1). Pada perintah [X, Y] = sort(rand(1,jumgen)), X menyatakan bilangan-bilangan random dalam interval [0,1) hasil pengurutan dari kecil ke besar (ascending). Sedangkan Y merupakan indeks dari bilangan-bilangan yang dibangkitkan random. Indeks Y merupakan nomor urut titik-titik distribusi yang dibangkitkan. Iterasi akan dilakukan sebanyak ukpop (banyaknya individu dalam populasi) sehingga diperoleh populasi awal. 2. Menghitung Nilai Fitness Dari populasi awal yang sudah terbentuk dapat dihitung nilai fitness dengan perintah fitnesscvrptw.m berikut ini. function fitness = fitnesscvrptw(kromosom,jumgen,waktuagen,waktudepot) jalur=waktudepot(kromosom(1))+waktudepot(kromosom(jumgen)); for ii=1:jumgen-1
84
jalur=jalur+waktuagen(kromosom(ii),kromosom(ii+1)); end fitness=1/jalur;
Variabel pada fungsi fitnesscvrptw.m adalah kromsom (individu dari populasi), jumgen (jumlah gen), waktuagen (waktu perjalanan tiap agen dijumlahkan dengan lama pelayanan), dan waktudepot (waktu perjalanan dari depot ke agen). Sedangkan nilai fitness suatu individu dinyatakan dalam 1/jalur. function LFR = linearfitnessranking(ukpop,fitness,maxF,minF) [s,h] = sort(fitness); for rr=1:ukpop, LFR(h(ukpop-rr+1))=maxF-(maxF-minF)*((rr-1)/(ukpop-1)); end
Variabel yang terdapat pada fungsi linearfitnessranking.m adalah ukpop (banyaknya individu dalam populasi), fitness (nilai fitness individu dalam populasi), maxF (nilai fitness tertinggi), dan minF (nilai fitness terendah). Mula-mula nilai fitness diurutkan dari yang terkecil ke terbesar kemudian nilai fitness yang sudah terurut disimpan pada sebuah variabel s dan indeks dari fitness yang menyatakan nomor urut kromosom pada suatu populasi disimpan pada variabel h. Pembentukkan fungsi ini bertujuan untuk mencegah terjadinya konvergen pada optimum lokal karena perbedaan nilainilai fitness yang terlalu kecil pada semua individu dalam populasi. 3. Seleksi Terdapat dua metode seleksi yang digunakan dalam penelitian ini. a. Roulette Wheel Selection Operator seleksi yang pertama akan diimplementasikan dalam RouletteWheel.m seperti berikut. function p = RouletteWheel(ukpop,linearfitness) jumfitness=sum(linearfitness); kumulatiffitness = 0; RN = rand; ii=1;
85
while ii<=ukpop, kumulatiffitness = kumulatiffitness+linearfitness(ii); if (kumulatiffitness/jumfitness)>RN, p=ii; break; end ii=ii+1; end
Variabel pada fungsi RouletteWheel.m adalah ukpop (banyaknya individu
dalam
populasi
dan
linearfitness
(merupakan
hasil
dari
linearfitness.m). Untuk jumfitness = sum(linearfitness) merupakan jumlah keseluruhan nilai fitness dalam populasi sedangkan kumulatiffitness merupakan nilai fitness kumulatif dari individu. Jika kumulatif fitness dibagi jumlah fitness lebih dari bilangan random yang dibangkitkan pada interval [0,1), maka iterasi akan berhenti sehingga diperoleh p (indeks) dari individu terpilih sebagai induk. b. Seleksi Turnamen Operator seleksi yang selanjutnya akan diimplementasikan dalam TourSelection.m seperti berikut. function Indterpilih = TourSelection(ukpop,linearfitness,uktour,probtour) for ii = 1:uktour, Itemp(ii) = 1+fix(rand*ukpop); %Indeks dari individu terpilih Ftemp(ii) = linearfitness(Itemp(ii)); %Nilai fitness dari individu terpilih end [M,Indterbaik] = max(Ftemp); %Indeks individu terbaik dalam tournament Indlainnya = []; %Indeks individu selain yang terbaik dalam tournament if Indterbaik==1, Indlainnya = [Indlainnya 2:uktour]; else Indlainnya = [Indlainnya 1:Indterbaik-1];
86
Indlainnya = [Indlainnya Indterbaik+1:uktour]; end if rand < probtour, Indterpilih = Itemp(Indterbaik); else Indterpilih = Itemp(Indlainnya(1+fix(rand*(uktour-1)))); end
Variabel yang digunakan dalam TourSelection.m yaitu ukpop (banyaknya individu dalam populasi, linearfitness (merupakan hasil dari linearfitness.m), uktour (tournament size), dan probtour (probabilitas turnamen). Itemp merupakan indeks dari individu terpilih dan Ftemp merupakan nilai fitness dari individu yang terpilih tersebut. Individu terbaik dipilih dari individu terpilih yang memiliki nilai fitness terbesar. 4. Pindah Silang dengan Order Crossover Operator pindah silang dari populasi awal yang sudah terbentuk diimplementasikan dalam fungsi CVRPTWpindahsilang.m berikut ini. function anak = CVRPTWpindahsilang(bapak,ibu,jumgen) cp1=1+fix(rand*(jumgen-1)); cp2=1+fix(rand*(jumgen-1)); while cp2==cp1, cp2=1+fix(rand*(jumgen-1)); end if cp1
87
sisagenbapak=[sisagenbapak bapak(ii)]; end if ~ismember(ibu(ii),anak(2,:)), sisagenibu=[sisagenibu ibu(ii)]; end end 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));
Variabel yang digunakan dalam fungsi CVRPTWpindahsilang.m adalah bapak (induk pertama yang terpilih), ibu (induk kedua yang terpilih), dan jumgen (jumlah gen). Pertama-tama 2 buah bilangan dibangkitkan secara random untuk menentukan titik potong kedua induk yang telah terpilih. Kemudian dua kromosom anak mendapatkan gen-gen dari kromosom bapak dan ibu. Posisi-posisi gen yang masih kosong pada anak pertama diisi dengan gen dari bapak yang belum ada pada anak pertama, dan anak kedua diisi dengan gen dari ibu yang belum ada pada anak kedua. Hasil dari tahap ini yaitu dua kromosom baru yang membawa sifat dari induknya. 5. Mutasi dengan Swapping Mutation Operator
mutasi
dari
populasi
awal
yang
sudah
terbentuk
diimplementasikan dalam perintah CVRPTWmutasi.m berikut ini. function mutkrom = CVRPTWmutasi(kromosom,jumgen,pmutasi) mutkrom=kromosom; for ii=1:jumgen, if rand
88
end
Variabel dari fungsi CVRPTWmutasi.m diatas adalah kromosom (anak hasil dari crossover), jumgen (jumlah gen), serta pmutasi (probabilitas mutasi). Pertama-tama yang dilakukan yaitu membangkitkan bilangan randomdalam interval [0,1). Jika bilangan random yang dibangkitkan kurang dari pmutasi maka akan ditentukan posisi gen dalam kromosom yang akan ditukar. Kemudian menukar nilai gen yang terpilih dalam kromosom sehingga diperoleh kromosom baru hasil dari proses mutasi (mutkrom). 6. Program Utama Sebagai program utama, fungsi ini memanggil semua fungsi-fungsi yang telah disimpan sebelumnya. Pada program utama berikut ini, digunakan variabel-variabel antara lain waktuagen (waktu perjalanan tiap agen dijumlahkan dengan lama pelayanan), waktudepot (waktu perjalanan dari depot ke agen), kapasitas (permintaan tiap titik-titik distribusi), jumgen (jumlah gen), s (banyaknya kendaraan pengangkut yang digunakan), q (kapasitas kendaraan), ukpop (ukuran populasi yaitu banyaknya individu dalam populasi), psilang (probabilitas pindah silang), pmutasi (probabilitas mutasi), uktour (tournament size), probtour (probabilitas turnamen), maxG (jumlah generasi). Program di bawah ini juga ditambahkan perintah untuk menampilkan grafik. Program utama berikut bisa digunakan untuk 2 jenis seleksi sekaligus tetapi dengan melakukan penyimpanan di beda tempat. Pada akhir program variabel, jalur terbaik menyatakan rute optimal yang diperoleh. clear all waktudepot = [56 54 55 56 52 50 49 36 46 46 43 40 48 47 45]; kapasitas = [0 3990 11250 5655 5460 7215 5325 3330 2340 1965 660 5505 3630 3045 8145 3345]; waktuagen = [0 24 27 22 21 27 24 32 27 29 34 34 28 29 31; 24 0 19 27 24 25 21 34 26 30 36 32 30 32 34; 27 19 0 30 27 24 20 33 27 29 34 32 29 30 32; 22 27 30 0 20 26 25 29 28 26 31 31 24 27 29; 21 24 27 20 0 28 21 25 24 22 27 28 20 23 25; 27 25 24 26 28 0 18 26 22 23 28 29 24 21 26;
89
24 21 20 25 21 18 0 30 24 26 31 31 25 27 30; 32 34 33 29 25 26 30 0 24 24 21 19 28 27 24; 27 26 27 28 24 22 24 24 0 20 25 26 23 22 26; 29 30 29 26 22 23 26 24 20 0 21 22 21 20 22; 34 36 34 31 27 28 31 21 25 21 0 25 24 23 19; 34 32 32 31 28 29 31 19 26 22 25 0 25 24 25; 28 30 29 24 20 24 25 28 23 21 24 25 0 17 20; 29 32 30 27 23 21 27 27 22 20 23 24 17 0 20; 31 34 32 29 25 26 30 24 26 22 19 25 20 20 0]; jumgen = length(waktuagen(:,1)); ukpop = 30; q = 15000; s = 5; psilang = 0.8; pmutasi = 0.03; uktour = 4; probtour = 0.8; maxG = 1000; pjh = 30; fth = 1/pjh; bgraf = fth; % inisialisasi grafis hfig = figure; hold on set(hfig, 'position', [50,50,600,400]); set(hfig, 'doublebuffer', 'on'); axis([1 maxG 0 bgraf]); hbestplot1 = plot(1:maxG,zeros(1,maxG)); hbestplot2 = plot(1:maxG,zeros(1,maxG)); htext1 = text(0.6*maxG,0.25*bgraf,sprintf('fitness terbaik: %7.6f', 0.0)); htext2 = text(0.6*maxG,0.20*bgraf,sprintf('fitness rata-rata: %7.6f', 0.0)); htext4 = text(0.6*maxG,0.15*bgraf,sprintf('ukuran populasi: %3.0f', 0.0)); htext5 = text(0.6*maxG,0.10*bgraf,sprintf('probabilitas mutasi: %4.3f', 0.0)); xlabel('generasi');
90
ylabel('fitness'); hold off drawnow; %inisialisasi populasi populasi = CVRPTWInisialisasiPopulasi(ukpop,jumgen) for generasi=1:maxG, maxF = fitnesscvrptw(populasi(1,:),jumgen,waktuagen,waktudepot); minF = maxF; indeksindividuterbaik = 1; for ii=1:ukpop, fitness(ii)= fitnesscvrptw(populasi(ii,:),jumgen,waktuagen,waktudepot) if(fitness(ii)>maxF), maxF=fitness(ii); indeksindividuterbaik=ii; jalurterbaik=populasi(ii,:); end if(fitness(ii)<=minF), minF=fitness(ii); end end maxF; minF; fitnessratarata=mean(fitness); plotvector1=get(hbestplot1, 'YData'); plotvector1(generasi)=maxF; set(hbestplot1, 'YData',plotvector1); plotvector2=get(hbestplot2, 'YData'); plotvector2(generasi)=fitnessratarata; set(hbestplot2, 'YData',plotvector2); set(htext1,'String',sprintf('fitness terbaik: %7.6f', maxF)); set(htext2,'String',sprintf('fitness rata-rata: %7.6f', fitnessratarata)); set(htext4,'String',sprintf('ukuran populasi: %3.0f', ukpop)); set(htext5,'String',sprintf('probabilitas mutasi: %4.3f', pmutasi)); drawnow;
91
if maxF>fth, break; end tempopulasi=populasi %etilisme: %-buat satu kopi kromosom terbaik jika ukuran populasi ganjil %-buat dua kopi kromosom terbaik jika ukuran populasi genap if mod(ukpop,2)==0 %ukuran populasi genap iterasimulai=3; tempopulasi(1,:)=populasi(indeksindividuterbaik,:); tempopulasi(2,:)=populasi(indeksindividuterbaik,:); else iterasimulai=2; tempopulasi(1,:)=populasi(indeksindividuterbaik,:); end linearfitness=linearfitnessranking(ukpop,fitness,maxF,minF); %Tourselection selection dan pindah silang for jj=iterasimulai:2:ukpop, IP1=TourSelection(ukpop,linearfitness,uktour,probtour) IP2=TourSelection(ukpop,linearfitness,uktour,probtour) if(rand
92
Lampiran 5 Hasil pengambilan rute secara acak yang membentuk populasi pada generasi awal dengan bantuan software Matlab. Berikut adalah populasi yang terbentuk dengan 2 metode seleksi. 1. Roulette Wheel Selection No
Individu
1
5
15
14
2
9
12
8
4
11
10
7
1
13
3
6
2
3
6
8
15
2
12
9
10
4
13
1
5
14
11
7
3
3
4
2
7
13
15
12
6
1
14
8
11
5
9
10
4
8
1
10
12
6
7
9
11
15
3
2
13
5
4
14
5
9
4
8
14
11
3
2
7
13
6
10
15
12
5
1
6
9
4
3
5
14
1
13
2
15
7
10
6
8
11
12
7
12
2
4
3
1
13
5
10
15
11
8
6
9
14
7
8
10
6
1
3
14
11
5
15
9
13
8
12
2
7
4
9
15
9
3
8
14
11
7
4
2
6
12
10
5
1
13
10
6
14
11
8
4
2
10
3
1
9
13
15
11
15
12
1
8
13
2
9
5
3
11
4
10
14
7
6
12
13
12
7
2
5
1
4
8
10
14
6
9
11
15
3
13
12
2
10
7
9
1
13
4
6
3
11
8
5
14
15
14
13
12
4
15
6
10
9
2
7
11
3
14
5
1
8
15
11
12
1
10
6
9
4
2
3
13
7
5
14
8
15
16
5
4
14
6
3
12
10
9
11
7
17
11
5
3
14
7
13
6
9
10
8
12
1
15
2
4
18
12
11
1
9
4
15
8
13
6
2
14
10
5
3
7
19
4
5
20
10
21
2
22
13
9 7 3
8
1
15 13 5 4
15
8
7
11 6 15
13
6 8
9 10
7
5
2
3
12 13
11 14
11 7
1
12
6 14 8
9
2
15 4 11
3 12 1
12
12 5
13 2
10
14
4
7
1
15
3
10
1
8
5
9
14
6
2
93
23
11
13
6
10
24
3
13
15
9
5
14
25
3
14
9
5
7
6
26
15
4
6
12
10
3
14
9
27
12
10
9
14
6
7
3
28
3
29
12
30
1
11
14
9
3
11
13
5
8
15
8
6 5 2
7
7
12
9
2
14
4
8
6
1
2
7
11
13
1
12
15
10
7
2
1
1
5
13
15
13
8
4
2
5
15 7
3
9 11
6 13
7 6
14 9
11
14
1 12
8
2
4
11
8
13
5
11
4
2
8
8 3
4
5 10
12 1
15
1 4 4
15
10
2
10
12
10
94
2. Seleksi Turnamen No
Individu
1
15
13
3
9
2
10
1
5
8
6
11
4
12
14
7
2
14
5
15
6
3
8
1
2
4
13
12
10
9
7
11
3
7
1
2
13
6
9
8
4
11
15
3
14
10
5
4
4
10
13
15
1
5
6
11
7
9
8
2
12
14
3
5 6
8 5
12 5 7 12
1 14
6 13 15 8
9 11 4 9
3 6
14 1
15 4 7 2 11 13
10 10
2 3
7
6
14
7
11
12
5
9
8
15
10
8 9
6 2
5 4
10 12 8 11
15 7 11 14 13 1 15 10 13 14
1 9
8 4 7 12
3 6
9 5
10
9
1
14
13
10
6
3
7
8
5
2
11
15
11
15
13
5
9
10
2
7
1
8
4
14
6
12
14
2
12
7
11
13
1
4
6
8
15
10
13
6
3
14
5
14
1
13
14
10
15
15
2
16
1
14
5
4
6
9
11
2
17
2
9
14
7
6
13
12
18
2
14
3
7
11
12
19
9
7
10
15
11
12
20
9
7
6
4
8
21
6
2
11
1
13
10
22
2
8
11
1
6
5
23
14
4
3
5
12
7
24
2
10
6
14
12
11
25
8
1
5
9
3
10
12
2
11
12
13
4
1
3
12
2 3 4 11
12
3
5
9
3
15
2
13
9
1
10
7
8
4
11
12
2
8
7
5
11
15
4
6
9
3
7
9
14
5
8
3
6
4
12
1
13
12
13
7
8
10
15
3
10
3
8
11
1
15
4
5
5
1
6
13
15
9
10
8
4
6
2
14
4
13
5
3
8
1
11
14
10
13
14
1
3
12
15
2
5
9
8
7
4
12
14
3
15
5
13
4
12
15
10
9
3
14
7
1
9
1
15
9
12
13
11
10
13
8
15
2
11
5
13
8
3
4
7
4
7
2
10
15
6
6
95
Lampiran 6 Berikut adalah individu yang terpilih sebagai induk hasil dari tahap seleksi dengan bantuan software Matlab menggunakan 2 metode seleksi. 1. Roulette Wheel Selection Induk Individu ke-
ke-
1
5
2
23
1
24
2
19
1
16
2
21
1
16
2
6
1
24
2
8
1
7
Individu 9
4
8
5
1
11
13
5
1
3
13
10
12
4
5
10
14
5
4
11 7
1
8
5
4
11
10
3
8
2
7
15
9
5
14
15
8
7
6
8
1
15
5
6
8
3
7
12
13
8
3
6
9
10
2
15
12
4
15
14
6
1
2
7
11
4
3
11
1
9
2
12
13
13
2
14
6
3
12
10
9
9
13
11
14
4
12
15
3
10
1
15
13
2
14
6
3
12
10
9
5
14
1
13
2
15
7
10
6
8
1
2
7
11
4
7
9
4
11
12 13
10
12
10
6
7
6
11
7
2
3
14
15
9
5
14
8
6
1
3
14
11
5
15
9
13
8
12
2
4
3
1
13
5
10
15
11
8
6
9
4
12
2
14
7
96
2
9
1
22
2
24
1
22
2
1
1
8
2
3
1
4
2
23
1
18
2
14
1
22
2
13
1
25
2
30
15 1
9
8
14
11
7
4
2
4
15
10
7
12
8
11
15
9
5
6
12
10
5
5
9
14
13
13
3
6
2
3
13
10
12
13
3
6
2
5
15
3
6
10
4
4
3
4
9
10
8
1
4
14
11
13
5
1
12
11
3
7
13
12
1
8
13
14
15 10
8
7
6
12
1
8
14
2
9
12
8
4
1
3
14
11
5
15
6
7
6
3
2
7
10
12
1
2
11
7
11
4
1
5
9
14
11
10
7
1
13
9
13
8
12
2
13
15
12
6
1
14
8
11
5
6
7
9
11
15
3
2
13
5
6
10
8
7
12
3
9
2
14
4
15
1
9
4
15
8
13
6
2
14
10
5
4
15
6
10
9
2
7
11
3
14
5
4
15
10
7
12
8
11
1
5
9
14
10
7
9
1
13
4
6
3
11
8
5
8
3 2
12
2
14
15
3
14
2
4
1
5
12
10
9
5
7
6
11
13
1
12
15
10
8
15
2
7
11
13
6
9
14
3
4
97
1
3
2
29
12 1 12 2
2
4
5
11
13
10
15
9
6
7
14
8
13
3
5
15
9
6
7
14
1
8
4
11 3 10
98
2. Seleksi Turnamen Induk Individu ke-
ke-
1
20
2
20
1
19
2
10
1
10
2
15
1
25
2
18
1
3
2
25
1
7
2
19
1
20
2
6
Individu 9
7
14
10
9
7
14
10
9
7
8
1
9
1
11
15
9
1
11
15
15
10
1
13
8
1
13
11
2
14
8
4
7
1
10
4
8
13
1
3
12
15
2
5
11
6
4
8
13
1
3
12
15
2
5
11
10
15
11
12
6
2
14
14
13
10
6
3
7
8
5
2
12
4
14
13
10
6
3
7
8
5
2
12
4
7
9
14
11
2
14
4
5
7
4
8
13
2
3
10
5
6
15
4
6
3
12
5
9
3
12
3
7
11
12
5
1
6
13
15
9
10
2
12
13
6
9
8
4
11
15
3
14
5
9
3
14
4
7
2
10
15
6
12
2
7
11
13
12
4
5
9
8
1
3
10
15
11
12
6
2
14
4
13
6
4
8
12
14
15
5
8
1
13
11
6
6
14
15
10
9
7
8
1
9
7
14
10
5
7
13
1
8
3
4
9
5
3
12
15
2
5
11
6
1
2
11
13
99
10 1
16
2
15
1
25
2
10
1
14
2
8
1
14
2
11
1
5
2
2
1
3 14
15
3
15
10
1
13
8
1
13
11
9
1
11
15
1
13
9
3
6
5
3
9
1
13
9
3
15
13
12
3
8
12
10
2
14
5
7
5
4
6
11
2
9
11
7
9
12
14
9
3
14
13
10
6
3
7
14
10
12
2
8
10
12
15
7
14
10
12
5
9
10
15
1
6
6
3
4
5
5
5
14
2
7
13
7
8
10
3
6
4
12
8
2
10
15
6
12
8
5
2
12
4
7
5
11
15
4
6
11
14
13
1
8
4
2
2
8
7
5
11
15
4
6
2
7
1
8
4
14
6
11
13
9
11
3
14
15
4
7
8
1
2
4
13
12
10
9
11
100
Lampiran 7 Berikut adalah individu yang terpilih sebagai anak hasil dari tahap crossover dengan bantuan software Matlab menggunakan 2 metode seleksi. 1. Roulette Wheel Selection Anak
Individu
ke1
7
13
6
10
15
9
2
4
8
14
11
3
2
3
9
2
14
4
15
5
1
13
6
11
10
8
7
12
1
2
4
10
12
7
6
3
11
1
9
13
15
5
14
8
2
9
12
13
10
5
14
8
6
1
2
4
15
7
3
11
1
10
7
6
9
5
4
8
1
15
13
2
14
3
12
2
3
10
8
1
15
2
7
5
6
9
13
11
14
4
12
1
5
4
8
1
15
13
2
14
6
3
12
10
9
11
7
2
9
4
3
5
14
1
13
2
15
7
10
6
8
11
12
1
6
1
2
7
11
4
10
12
9
13
8
3
15
5
14
2
11
2
7
10
6
3
14
1
12
10
3
1
13
8
6
9
3
14
12
8
11
1
14
11
12
1
5
15
9
13
5
15
11
8
9
14
7
4
2
6
2
7
4
2
12
1
13
5
10
15
11
1
6
2
15
9
5
13
3
4
10
7
2
11
12
4
15
10
3
13
9
5
14
8
6
1
2
7
1
13
3
4
15
10
7
12
8
11
1
5
9
14
6
2
2
5
15
14
2
9
12
8
4
11
10
7
1
13
3
6
1
9
2
7
4
13
15
12
6
1
14
8
11
5
10
3
2
7
6
1
10
14
11
5
15
9
13
8
12
2
3
4
1
10
12
9
11
3
2
13
5
4
14
15
8
1
2
6
10
8
7
12
3
9
2
14
4
15
1
5
11
13
1
5
12
4
15
6
10
9
2
7
11
3
14
1
8
13
2
5
11
1
9
4
15
8
13
6
2
14
10
12
7
3
6
7
8
5
12
4
1
101
1
10
2
7
1
7
12
1
5
6
3
11
8
13
4
15
15
11
1
5
9
12
2
10
6
12
5
8
15
2
6
13
11
4
14
9
7
10
1
3
2
10
6
13
11
4
1
5
8
15
2
7
9
14
3
12
1
12
2
4
5
10
15
9
6
7
14
8
13
3
1
11
2
7
14
12
13
5
15
9
6
2
10
3
14
2
4
4
8
14
13
8
3
9
1
11
102
2. Seleksi Turnamen Anak
Individu
ke1
6
4
8
13
14
10
1
3
12
15
2
5
11
9
7
2
6
4
8
13
14
10
1
3
12
15
2
5
11
9
7
1
11
14
1
13
10
6
3
7
8
5
2
12
4
9
15
2
10
7
8
15
11
12
6
2
14
4
13
5
3
9
1
1
6
7
5
2
12
4
11
15
8
3
9
1
2
9
14
3
6
4
12
1
13
8
5
15
10
1
8
1
5
9
3
14
4
7
10
15
6
2
2
14
3
7
11
12
5
1
6
13
15
9
1
15
10
5
9
3
14
4
7
1
2
12
2
10
15
11
12
13
1
3
7
10
15
11
12
6
2
1
14
2
7
11
13
1
5
11
10
14
15
2
2
11
10
4
8
1
12
13
7
8
10
2
8
3
1
14
4
10
15
2
13
3
8
5
12
4
11
7
1
1
13
14
10
12
2
8
2
6
5
10
12
15
7
1
5
15
3
9
10
2
1
14
3
10
1
15
7
10
2
12
10
7
6
4
12
6
9
10
2
7
13
11
10
8
4
13
6
8
11
11 12
5
3
14
4
7
2
2
14
4
13
5
9
8
1
12
4
5
9
8
10
15
6
3
8
4
9
6
1
7
13
3
12
2
13
1
3
12
15
5
7
14
9
6
1
14
4
6
9
11
2
11
7
9
14
5
15
8
13
1
1 6
2
14
3 13
13
5 2
11
15 7
10 8
5
2
12
1
9
3
2
10
15
6
9
1
14
7
5
11
15
4
6
9
3
11
14
13
1
8
4
2
3
9
2
7
1
8
4
11
13
12
12
2
8
7
5
11
15
4
6
13
9
6
3
8
1
2
4
13
12
5
9
11
14
1
6
13
9
11
2
4
3
14
14
6
5
15
8
103
Lampiran 8 Berikut adalah individu yang terpilih hasil dari tahap mutasi dengan bantuan software Matlab menggunakan 2 metode seleksi. 1. Roulette Wheel Selection 8
1
10
12
6
7
7
13
6
10
15
12
3
9
2
14
4
15
5
2
4
10
12
7
6
3
9
12
13
10
5
14
7
6
9
10
11
9
11
15
3
2
13
5
4
14
1
9
2
4
8
14
11
3
1
13
6
11
10
8
7
12
11
1
9
13
15
5
14
8
8
6
1
2
4
15
7
3
11
5
4
8
1
15
13
2
14
3
12
5
3
10
5
1
12
2
7
8
6
9
13
11
14
4
15
5
4
8
1
15
13
2
14
6
3
12
10
9
11
7
9
4
3
5
14
1
13
2
15
7
10
6
8
11
12
6
1
2
7
11
4
10
12
9
13
8
3
15
5
14
2
7
10
6
3
14
15
10
3
1
13
8
1
9
3
14
12
8
11
1
14
11
5
15
9
12
8
13
4
1
5
12
11
8
9
14
4
7
2
6
7
4
2
12
6
13
5
15
10
11
6
2
15
9
5
13
3
4
10
7
11
12
4
15
10
3
13
9
5
14
8
6
1
2
7
13
3
4
15
10
7
12
8
11
1
5
9
14
6
2
5
9
14
2
15
12
8
4
11
10
7
1
13
3
6
9
2
7
4
13
15
12
6
1
14
8
11
5
10
3
7
6
1
10
14
11
5
15
9
13
8
12
2
3
4
10
12
9
11
3
2
13
5
4
14
15
8
1
6
7
6
10
8
7
12
3
1
2
11
4
15
9
5
14
13
5
12
4
15
6
10
9
2
7
11
3
14
1
8
13
5
11
1
9
4
15
8
13
6
2
14
10
12
7
3
2
6
3
11
8
13
4
15
15
11
1
5
9
12
2
10
8
4
2
3
6
10
11
10 7 15
7
12
1
13
4
6
9
7
14
5 3
9 8
1
12
14 14 13
5
104
12
5
8
15
2
6
13
11
4
14
9
7
10
1
3
10
6
13
11
4
1
5
8
15
2
7
9
14
3
12
12
2
4
5
10
15
9
6
7
14
8
3
13
1
11
14
12
13
5
15
9
6
7
8
4
2
10
3
1
11
105
2. Seleksi Turnamen 8
1
5
9
3
14
4
7
2
10
15
6
12
13
11
6
4
8
13
14
10
3
1
12
15
2
5
11
9
7
6
4
8
13
14
10
1
3
12
15
2
5
11
9
7
11
14
1
13
10
6
3
7
8
5
2
12
4
9
15
10
7
8
15
11
12
6
2
9
4
13
5
3
14
1
6
7
5
2
12
4
11
15
8
3
9
1
9
14
7
6
4
12
1
13
8
5
15
10
8
1
5
9
3
14
4
7
10
15
6
2
14
3
7
11
12
5
1
6
13
15
9
14
4
7
1
2
12
15
10
5
9
3
10
15
11
12
13
3
7
10
11
15 12
1
14
5
7
11
5
11
10
14
15
2
11
10
4
12
13
8
3
11 6
13
11
10
8
4
11
6
8
13
12
1
5
3
14
4
7
2
5
9
8
1
13
13
12
3
2
9
8
10
15
6
4
8
4
9
6
1
7
13
3
12
2
12 13
1
3
8
15
5
7
14
9
6
9
7
2
14
5
10 12
15 1
15
13
3
8
5
1
1
13
14
10
12
6
5
10
12
13
15 3
3
4
10
14
2
11
14
4
1
8
10
2
14
3
9
13
6
8 7
6
2
14
6
3
13 13
4
5 2
1 15
11
14
7
10
4
8
11
6 4
9
5
2
12
1
9
3
11
14
2
10
15
6
9
12
7
2
8
7
5
11
15
4
6
9
3
15
7
11
14
13
1
8
4
2
3
9
9
10
2
12
1
8
4
14
6
11
5
7
10
12
2
8
15
5
11
7
4
6
13
9
12
5
9
11
14
2
4
10
7
15
6
3
8
1
13
4
2
12
10
7
1
6
13
9
11
3
14
5
15
8
106
Lampiran 9 Berikut adalah populasi baru yang memiliki nilai fitness tertinggi pada saat percobaan dengan bantuan software Matlab menggunakan 2 metode seleksi. 1.
Roulette Wheel Selection
No
Individu
1
8
12
10
9
4
14
6
7
3
2
1
5
13
15
11
2
8
12
10
9
4
14
6
7
3
2
1
5
13
15
11
3
15
2
9
7
12
8
10
4
14
6
3
1
5
13
4
5
14
1
15
11
8
10
6
3
12
2
4
9
7
13
5
6
9
14
3
4
12
10
1
5
8
15
2
7
11
13
6
1
5
15
11
4
2
8
13
6
12
10
9
14
7
3
7
1
9
14
2
6
15
7
4
5
3
11
10
13
8
7
3
13
14
6
4
1
12
11
10
9
8
5
2
15
9
1
5
8
3
12
6
10
2
13
11
4
14
15
9
7
10
11
8
5
11
11
7
4
2
12
14
9
14
6
7
3
1
12
6
7
3
11
14
13
1
2
3
5
13
14
15
15
1
5
16
14
12
17
9
4
15
8
13
6
7
3
1
18
1
8
4
2
12
3
6
10
11
19
12
20
4
11 13
15
13
12
6
8
9
3
1
10
13
15
11
12
2
4
5
10
8
12
4
10
9
2
1
5
13
15
8
14
10
15
7
4
12
8
9
11
6
8
5
12
6
7
3
2
14
1
9
13
10
11
15
2
4
6
12
10
3
14
8
7
9
3
2
1
5
13
9
11
11
14
12
2
5
10
13
5
15
9
7
14
10
15
4
8
6
7
2
4
9
7
13
10
15
5
1
11
4
11
8
5
2
12
14
21
3
2
1
5
13
15
22
6
14
1
8
4
2
8
6
13
1
9
3
11
6
7
8
12
10
7
3
12
11
14
6
3
10
15
7
10
9
4
14
13
5
15
9
107
23
15
4
2
8
12
10
9
11
14
6
7
3
1
5
13
24
11
1
10
4
15
2
9
7
12
13
5
8
3
14
6
25
5
26
15
9
7
14
1
12
13
5
27
12
5
8
15
2
6
13
28
10
6
13
11
4
1
29
12
2
4
5
10
15
30
7
8
8
3
4
14
2
1
10
6
3
10
1
4
15
2
9
7
12
13
8
4
2
3
6
10
11
11
4
14
9
7
10
1
3
5
8
15
2
7
9
14
3
12
9
6
7
14
8
3
13
1
11
14
12
13
5
15
9
6
11
11
108
2. Seleksi Turnamen No
Individu
1
12
2
9
3
10
9
5
4
1
2
3
7
6
14
13
15
11
8
15
11
8
4
1
2
3
7
6
14
13
12
10
5
2
15
11
8
5
9
1
3
7
6
14
13
12
10
4
4
5
4
1
2
3
7
6
14
15
11
8
13
12
10
9
5
4
1
2
3
7
8
12
10
9
6
14
13
15
11
5
6
8
4
1
2
3
12
10
9
5
7
6
14
13
15
11
7
12
10
9
5
4
1
2
3
7
6
14
15
11
8
13
8
10
4
1
2
3
7
6
14
15
11
8
13
9
5
12
9
15
3
7
6
8
12
10
14
9
5
4
13
2
11
1
10
13
15
11
8
14
9
5
4
2
10
1
6
3
11
13
15
9
8
4
1
12
11
10
2
3
7
6
14
12
11
8
3
7
6
5
4
12
1
2
14
13
15
10
9
13
8
9
4
1
2
15
11
12
7
14
6
13
5
10
3
14
5
4
10
1
2
3
7
6
9
15
10
4
5
1
3
7
6
11
8
14
13
15
9
12
16
1
2
14
13
15
11
8
3
7
6
12
10
9
5
4
17
9
1
14
13
15
11
8
3
7
6
12
10
2
4
5
18
9
1
3
7
6
14
13
15
11
8
5
12
10
2
4
19
1
2
3
7
6
5
4
11
15
8
14
13
12
10
9
20
8
9
5
4
13
2
3
7
6
14
12
1
15
11
10
21
10
2
4
5
9
1
3
7
15
11
8
12
14
13
6
22
13
12
7
10
6
14
1
15
11
8
5
23
7
6
14
13
15
10
2
3
24
15
6
14
13
12
9
5
25
15
10
14
13
12
11
6
2
7
9
12
11
8
8
4
11
10
8
9
5
4
12
4 9
2 5
1 1
5
3 4
2 2
8
1
3 3
7 7
14
13
5
11
12
109