Lampiran 1
Matriks Jarak Tempuh Asal dan Tujuan Distribusi Gula di Wilayah Yogyakarta
Node 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 0 9,2 7,4 21 9,6 15 5,2 9,4 8,6 19 9,3 6 9 6,5 3,2 16 15 6,3 6,2 3,4 8,6 18 20 17 16 15 1 9,2 0 7,7 37 12 23 14 12 9,1 19 12 14 5 9,7 6,5 15 14 9,6 9,6 8,3 13 26 28 16 14 13 2 7,4 7,7 0 27 6,4 15 8 6 1,3 13 5,9 13 11 4,7 8,6 5,7 8 4,6 3,8 4 6,9 12 18 10 8,5 7,3 3 21 37 27 0 16 7,6 14 17 21 18 17 20 33 26 17 18 19 17 17 18 14 9,6 3,7 12 17 18 4 9,6 12 6,4 16 0 10 4 0,85 6,7 8,3 1,7 10 15 4,8 12 2,8 4,9 4,8 3,9 7,2 1,3 6,8 13 3,7 4,7 4,2 5 15 23 15 7,6 10 0 8,9 12 16 13 12 9,1 25 15 19 13 14 15 15 19 9,4 7,7 5,5 7,4 12 14 6 5,2 14 8 14 4 8,9 0 5 8,4 13 5,1 6,8 15 4,8 9,3 6,8 8,9 4,6 4,4 5,4 3,1 7,6 12 7,4 8,7 8,2 7 9,4 12 6 17 0,85 12 5 0 5,8 10 0,1 10 14 3,1 11 3,7 5,9 3,1 3,1 6,1 1,8 8,2 13 5,1 5,6 5,2 8 8,6 9,1 1,3 21 6,7 16 8,4 5,8 0 11 8,7 14 13 5,7 10 7,4 6,7 5,6 4,8 5,4 8 19 21 16 8,5 6 9 19 19 13 18 8,3 13 13 10 11 0 7,2 20 21 11 19 6 5,1 11 10 13 8,9 10 16 7 5,7 4,4 10 9,3 12 5,9 17 1,7 12 5,1 0,1 8,7 7,2 0 9,2 14 3,9 11 3,7 5,8 3,9 3,6 6 1,3 7 13 5 5,5 5,1 11 6 14 13 20 10 9,1 6,8 10 14 20 9,2 0 15 6 8,6 11 20 5,9 5,8 8,2 8,4 13 15 12 13 19 12 9 5 11 33 15 25 15 14 13 21 14 15 0 11 5,9 19 19 11 11 9,3 14 27 29 26 19 18 13 6,5 9,7 4,7 26 4,8 15 4,8 3,1 5,7 11 3,9 6 11 0 9 4,7 6,8 1,4 0,95 3,6 4,5 8,1 14 5,8 6,6 7,3 14 3,2 6,5 8,6 17 12 19 9,3 11 10 19 11 8,6 5,9 9 0 18 17 8,1 8,1 5,1 11 20 23 20 17 16 15 16 15 5,7 18 2,8 13 6,8 3,7 7,4 6 3,7 11 19 4,7 18 0 4,7 6,7 5,9 9,2 4,6 9,4 15 6,3 1,9 1,4 16 15 14 8 19 4,9 14 8,9 5,9 6,7 5,1 5,8 20 19 6,8 17 4,7 0 9,7 8,9 10 7,6 12 18 8,6 4,5 3,1 17 6,3 9,6 4,6 17 4,8 15 4,6 3,1 5,6 11 3,9 5,9 11 1,4 8,1 6,7 9,7 0 0,9 3,8 3 8,2 14 5,9 6,7 6,2 18 6,2 9,6 3,8 17 3,9 15 4,4 3,1 4,8 10 3,6 5,8 11 0,95 8,1 5,9 8,9 0,9 0 3 3,4 8,6 15 6,3 7,1 6,6 19 3,4 8,3 4 18 7,2 19 5,4 6,1 5,4 13 6 8,2 9,3 3,6 5,1 9,2 10 3,8 3 0 6,1 12 16 9 11 9,3 20 8,6 13 6,9 14 1,3 9,4 3,1 1,8 8 8,9 1,3 8,4 14 4,5 11 4,6 7,6 3 3,4 6,1 0 6,1 12 2,9 6,9 6,5 21 18 26 12 9,6 6,8 7,7 7,6 8,2 19 10 7 13 27 8,1 20 9,4 12 8,2 8,6 12 6,1 0 8,1 3,8 8,8 10 22 20 28 18 3,7 13 5,5 12 13 21 16 13 15 29 14 23 15 18 14 15 16 12 8,1 0 10 15 17 23 17 16 10 12 3,7 7,4 7,4 5,1 16 7 5 12 26 5,8 20 6,3 8,6 5,9 6,3 9 2,9 3,8 10 0 5,6 7 24 16 14 8,5 17 4,7 12 8,7 5,6 8,5 5,7 5,5 13 19 6,6 17 1,9 4,5 6,7 7,1 11 6,9 8,8 15 5,6 0 2 25 15 13 7,3 18 4,2 14 8,2 5,2 6 4,4 5,1 19 18 7,3 16 1,4 3,1 6,2 6,6 9,3 6,5 10 17 7 2 0
Lampiran 2
Matriks Waktu Tempuh Asal dan Tujuan Distribusi Gula di Wilayah Yogyakarta
Node 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 0 11 9 25 12 18 6 12 10 23 11 7 11 8 4 19 18 8 8 4 10 22 24 20 19 18 1 11 0 9 44 14 28 16 14 11 23 14 17 6 12 8 18 17 12 12 10 16 31 34 19 17 16 2 9 9 0 32 8 18 10 7 2 16 7 16 13 6 10 7 10 6 5 5 8 14 22 12 10 9 3 25 44 32 0 19 9 17 20 25 22 20 24 40 31 20 22 23 20 20 22 17 11 4 14 20 22 4 12 14 8 19 0 12 5 1 8 10 7 12 18 6 14 3 6 6 6 9 2 8 16 4 6 5 5 18 28 18 9 12 0 11 14 19 16 14 11 30 17 23 16 17 18 18 23 11 9 7 9 14 17 6 6 16 10 17 5 11 0 6 10 16 6 8 18 6 11 8 11 6 5 6 4 9 14 9 10 10 7 12 14 7 20 1 14 6 0 7 12 1 12 17 5 13 4 7 5 4 7 2 10 16 6 7 6 8 10 11 2 25 8 19 9 7 0 13 10 17 16 7 12 9 8 7 6 7 10 23 25 19 9 7 9 23 23 16 22 10 16 16 13 13 0 9 24 25 13 23 7 6 13 12 16 11 12 19 8 7 5 10 11 14 7 20 7 14 6 1 10 9 0 11 17 5 13 4 7 5 4 7 2 8 16 6 7 6 11 7 17 16 24 12 11 8 12 17 24 11 0 18 7 10 13 24 7 7 10 10 16 18 14 16 23 12 11 6 13 40 18 30 18 17 16 25 17 18 0 13 7 23 23 13 13 11 17 32 35 31 23 22 13 8 12 6 31 6 18 6 5 7 13 5 7 13 0 11 6 8 2 1 4 3 10 17 7 8 9 14 4 8 10 20 14 23 11 13 12 23 13 10 7 11 0 22 20 10 10 6 13 24 28 24 20 19 15 19 18 7 22 3 16 8 4 9 7 4 13 23 6 22 0 3 8 7 11 6 11 18 8 2 2 16 18 17 10 23 6 17 11 7 8 6 7 24 23 8 20 3 0 12 11 14 9 14 22 10 5 4 17 8 12 6 20 6 18 6 5 7 13 5 7 13 2 10 8 12 0 1 5 4 10 17 7 8 7 18 8 12 5 20 5 18 5 4 6 12 4 7 13 1 10 7 11 1 0 4 4 10 18 8 9 8 19 4 10 5 22 9 23 6 7 7 16 7 10 11 4 6 11 14 5 4 0 7 14 19 11 13 11 20 10 16 8 17 2 11 4 2 10 11 2 10 17 3 13 6 9 4 4 7 0 7 14 4 8 8 21 22 31 14 11 8 9 9 10 23 12 8 16 32 10 24 11 14 10 10 14 7 0 10 5 11 12 22 24 34 22 4 16 7 14 16 25 19 16 18 35 17 28 18 22 17 18 19 14 10 0 12 18 20 23 20 19 12 14 4 9 9 6 19 8 6 14 31 7 24 8 10 7 8 11 4 5 12 0 7 8 24 19 17 10 20 6 14 10 7 9 7 7 16 23 8 20 2 5 8 9 13 8 11 18 7 0 2 25 18 16 19 22 5 17 10 6 7 5 6 23 22 9 19 2 4 7 8 11 8 12 20 8 2 0
Lampiran 3
Data Permintaan Harian Gula di Yogyakarta
Kode Alamat Agen Jumlah
0 DEPOT -
1 Pacar, Sewon, Trimulyo, Bantul 1050
2 Jl. Pramuka No.84, Giwangan, Umbulharjo 1250
3 Jl. Magelang Km. 15,5 350
4 Jl. Colombo No.26, Caturtunggal, Kec. Depok 50
5 Jl. Kebon Agung No.88, Tlogoadi, Mlati 700
6 Jl. HOS. Cokroaminoto No. 176, Tegalrejo 625
7 Jl. Urip Sumoharjo No.38A, Klitren, 500
8 Jl. Ngeksigondo No.7, RT.09 / RW.02, 500
9 Jl. Ringroad Utara - Maguwoharjo, Depok, 1000
10 Jl. Urip Sumoharjo, Klitren, Gondokusuman 375
11 Jalan Raya Wates No.256, Ambarketawang, 25
12 Jl. Parangtritis Km 11 Sabdodadi Bantul 1100
13 JL Madukismo, Yogyakarta, Ngupasan, 1100
14 Jl. Bantul, Pendowoharjo, Sewon, Bantul 175
15 Plaza Ambarukmo LG, Jl. Laksda Adisucipto 1000
16 Jl. Raya Solo KM 8 No. 234, Maguwoharjo 750
17 Jl. Mayor Suryotomo No.29, Ngupasan, 1500
18 Jl. Sultan Agung No.10, Wirogunan, 500
19 Jalan DI Panjaitan No.54, Suryodiningratan 625
20 Jl. C. Simanjuntak No.70, Terban, 1000
21 Jalan Palagan Tentara Pelajar No. 31, Ngaglik 750
22 Triharjo, Kec. Sleman, Kabupaten Sleman 1000
23 Jalan Kaliurang KM 6,2 No. 51, Sinduadi, 450
24 Jl. Raya Seturan Kav.IV, Depok Sports Center, 250
25 Jalan Yogya Solo KM. 7, Babarsari, 250
114
Lampiran 4
Langkah-langkah Menggambar Koordinat Kartesius dengan
Software Geogebra
1. Membuka software Geogebra
2. Memilih menu File > Insert image from > File
3. Memilih file gambar peta yang akan digambar dalam koordinat kartesius kemudian memilih Open
4. Setelah gambar peta ada di layar Software Geogebra selanjutnya klik kanan pada peta, kemudian memilih Object Properties
115
5. Pada kotak Preference, memilih pilihan Color kemudian mengatur Opacity yang berfungsi untuk mengatur tampilan gambar peta supaya gambar dapat terlihat transparan
6. Setelah gambar terlihat transparan selanjutnya memposisikan gambar peta sedemikian hingga depot (titik 0) berada di titik pusat koordinat kartesius
116
7. Memilih pilihan point untuk menandai masing-masing titik pada peta supaya diperoleh titik-titik pada koordinat kartesius
8. Menandai masing-masing titik pada peta dengan klik kiri satu kali sehingga titik koordinat kartesius akan muncul di bagian kiri Software Geogebra
117
9. Selanjutnya klik kanan pada gambar peta kemudian Show Object yang berfungsi untuk menghilangkan gambar peta sehingga di layar hanya ada tampilan koordinat kartesius
10. Langkah-langkah untuk menggambar koordinat kartesius dengan Software
118
Berikut tampilan koordinat kartesius yang ada pada Software Geogebra (apabila ingin menampilkan koordinat kartesius dengan kotak kecil-kecil seperti gambar dibawah ni maka klik kanan kemudian memilih Grid)
Selanjutnya untuk mengubah koordinat kartesius menjadi koordinat polar, klik kanan pada koordinat kartesius kem udian pilih Polar Coordinates
119
120
Lampiran 5
Surat Izin Penelitian
121
Lampiran 6
Prosedur algoritma genetika menggunakan software Matlab dalam penyelesaian
Capacitated Vehicle Routing Problem (CVRP) untuk distribusi gula di Kota
Yogyakarta. Prosedur ini dimodifikasi dari Suyanto (2005: 86).
1.
Membangkitkan Populasi AwalMembangkitkan populasi awal diimplementasikan menggunakan baris-baris perintah pada fungsi PopulasiAwal.m berikut ini.
function Populasi=PopulasiAwal(ukpop,jumgen) for ii=1:2ukpop
[X,Y] = sort(rand(1,jumgen)); Populasi(ii,:) = Y;
end
Perintah rand (1, jumgen) menyatakan pembangkitan matriks berukuran 1 x jumlah gen 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 nomer urut pelanggan gula kemasan yang dibangkitkan. Iterasi di atas dilakukan sebanyak ukpop (banyaknya individu dalam populasi), sehingga didapatkan populasi awal.
2. Menghitung Nilai Fitness
Perhitungan nilai fitness dari populasi awal yang sudah terbentuk diimplementasikan dalam perintah pada fungsi NilaiFitness.m berikut ini.
FunctionFitness=
NilaiFitness(kromosom,jumgen,JarakAgen,JarakDepot) jalur=jd(kromosom(1))+jd(kromosom(jumgen));
122
jalur=jalur+JarakAgen(kromosom(ii),kromosom(ii+1)); end
fitness=1/jalur;
Variabel pada fungsi NilaiFitness.m adalah kromosom (individu dari populasi), jumgen (jumlah gen), JarakDepot (jarak depot dengan agen), dan JarakAgen (jarak antar lokasi 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 pada fungsi linearfitnessrangking.m yaitu ukpop (banyaknya individu dalam populasi), fitness (nilai fitness individu dalam populasi), maxF (nilai fitness tertinggi pada populasi), dan minF (nilai fitness terendah dalam populasi). Mula-mula urutkan nilai fitness dari yang terkecil sampai yang terbesar, kemudian simpan nilai
fitness yang sudah terurut pada sebuah variabel s dan indeks dari fitness yang
menyatakan nomer urut kromosom pada suatu populasi disimpan pada variabel h. Fungsi ini digunakan untuk mencegah terjadinya konvergen pada optimum lokal karena perbedaan nilai-nilai fitness yang terlalu kecil pada semua individu dalam populasi.
3. Roulette Wheel Selection
Operator seleksi dari populasi awal yang sudah terbentuk diimplementasikan dalam perintah pada fungsi RouletteWheel.m berikut ini.
function p = RouletteWheel(ukpop,linearfitness); jumfitness=sum(linearfitness); kumulatiffitness = 0; RN = rand; ii=1; while ii<=ukpop, kumulatiffitness=kumulatiffitness+linearfitness(ii);
123 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 (hasil dari fungsi linearfitness.m), sedangkan jumfitness = sum (linearfitness) merupakan jumlah keseluruhan nilai fitness dalam populasi. 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 berhenti, sehingga didapatkan p (indeks) dari individu yang terpilih sebagai induk.
4. Pindah Silang (order crossover)
Operator pindah silang dari populasi awal yang sudah terbentuk diimplementasikan dalam perintah pada fungsi PindahSilang.m berikut ini.
function anak = pindahSilang(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<cp2, cps=cp1; cpd=cp2; else cps=cp2; cpd=cp1; end anak(1,cps+1:cpd)=ibu(cps+1:cpd);
124 anak(2,cps+1:cpd)=bapak(cps+1:cpd); sisagenbapak=[]; sisagenibu=[]; for ii=1:jumgen, if ~ismember(bapak(ii),anak(1,:)), 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 pada fungsi PindahSilang.m adalah bapak (induk pertama yang terpilih), ibu (induk kedua yang terpilih) dan jumgen (jumlah gen). Pertama 2 buah bilangan dibangkitkan secara acak untuk menentukan titik potong kedua induk. 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 fungsi ini adalah dua kromosom baru yang membawa sifat dari induknya.
6. Mutasi dengan Swapping Mutation
Operator pindah silang dari populasi awal yang sudah terbentuk diimplementasikan dalam perintah pada fungsi Mutasi.m berikut ini.
125 mutkrom=kromosom; for ii=1:jumgen, if rand<pmutasi, TM2=1+fix(rand*jumgen); while TM2==ii, TM2=1+fix(rand*jumgen); end tempopulasi=mutkrom(ii); mutkrom(ii)=mutkrom(TM2); mutkrom(TM2)=tempopulasi; end end
variabel pada fungsi Mutasi.m diatas adalah adalah kromosom (anak hasil pindah silang), jumgen (jumlah gen) dan pmutasi (probabilitas mutasi). Pertama membangkitkan bilangan random dalam 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 didapatkan kromosom baru hasil mutasi (mutkrom).
7. Program Utama
Sebagai program utama, fungsi SeptiaGenetika.m memanggil semua fungsi-fungsi diatas. Pada program utama berikut, memasukkan variabel-variabel jd (jarak depot dengan agen), kapasitas (permintaan dari setiap agen), JarakAgen (jarak tempuh antara agen dengan agen lainnya), jumgen (jumlah gen), kendaraan, q (kapasitas kendaraan), ukpop (ukuran populasi, yaitu banyaknya individu dalam populasi), psilang (probabilitas pindah silang), pmutasi (probabilitas mutasi), maxG (jumlah generasi). Program di bawah ini juga ditambahkan perintah untuk menampilkan grafik. Pada akhir program variabel jalur terbaik menyatakan rute optimal yang didapatkan.
126 JarakDepot = [9.2 7.4 21 9.6 15 5.2 9.4 8.6 19 9.3 6 9 6.5 3.2 16 15 6.3 6.2 3.4 8.6 18 20 17 16 15]; kapasitas = [1050 1250 350 50 700 625 500 500 1000 375 25 1100 1100 175 1000 750 1500 500 625 1000 750 1000 450 250 250]; JarakAgen = [0 7.7 37 12 23 14 12 9.1 19 12 14 5 9.7 6.5 15 14 9.6 9.6 8.3 13 26 28 15 14 13; 7.7 0 27 6.4 15 8 6 1.3 13 5.9 13 11 4.7 8.6 5.7 8 4.6 3.8 4 6.9 12 18 10 8.5 7.3; 37 27 0 16 7.6 14 17 21 18 17 20 33 26 17 18 19 17 17 18 14 9.6 3.7 12 17 18; 12 6.4 16 0 10 4 0.85 6.7 8.3 17 10 15 4.8 12 2.8 4.9 4.8 3.9 7.2 1.3 6.8 13 3.7 4.7 4.2; 23 15 7.6 10 0 8.9 12 16 13 12 9.1 25 15 19 13 14 15 15 19 9.4 7.7 5.5 7.4 12 14; 14 8 14 4 8.9 0 5 8.4 13 5.1 6.8 15 4.8 9.3 6.8 8.9 4.6 4.4 5.4 3.1 7.6 12 7.4 8.7 8.2; 12 6 17 0.85 12 5 0 5.8 10 0.1 10 14 3.1 11 3.7 5.9 3.1 3.1 6.1 1.8 8.2 13 5.1 5.6 5.2; 9.1 1.3 21 6.7 16 8.4 5.8 0 11 8.7 14 13 5.7 10 7.4 6.7 5.6 4.8 5.4 8 19 21 16 8.5 6; 19 13 18 8.3 13 13 10 11 0 7.2 20 21 11 19 6 5.1 11 10 13 8.9 10 16 7 5.7 4.4; 12 5.9 17 1.7 12 5.1 0.1 8.7 7.2 0 9.2 14 3.9 11 3.7 5.8 3.9 3.6 6 1.3 7 13 5 5.5 5.1; 14 13 20 10 9.1 6.8 10 14 20 9.2 0 15 6 8.6 11 20 5.9 5.8 8.2 8.4 13 15 12 13 19; 5 11 33 15 25 15 14 13 21 14 15 0 11 5.9 19 19 11 11 9.3 14 27 29 26 19 18; 9.7 4.7 26 4.8 15 4.8 3.1 5.7 11 3.9 6 11 0 9 4.7 6.8 1.4 0.95 3.6 4.5 8.1 14 5.8 6.6 7.3;
127 6.5 8.6 17 12 19 9.3 11 10 19 11 8.6 5.9 9 0 18 17 8.1 8.1 5.1 11 20 23 20 17 16; 15 5.7 18 2.8 13 6.8 3.7 7.4 6 3.7 11 19 4.7 18 0 4.7 6.7 5.9 9.2 4.6 9.4 15 6.3 1.9 1.4; 14 8 19 4.9 14 8.9 5.9 6.7 5.1 5.8 20 19 6.8 17 4.7 0 9.7 8.9 10 7.6 12 18 8.6 4.5 3.1; 9.6 4.6 17 4.8 15 4.6 3.1 5.6 11 3.9 5.9 11 1.4 8.1 6.7 9.7 0 0.9 3.8 3 8.2 14 5.9 6.7 6.2; 9.6 3.8 17 3.9 15 4.4 3.1 4.8 10 3.6 5.8 11 0.95 8.1 5.9 8.9 0.9 0 3 3.4 8.6 15 6.3 7.1 6.6; 8.3 4 18 7.2 19 5.4 6.1 5.4 13 6 8.2 9.3 3.6 5.1 9.2 10 3.8 3 0 6.1 12 16 9 11 9.3; 13 6.9 14 1.3 9.4 3.1 1.8 8 8.9 1.3 8.4 14 4.5 11 4.6 7.6 3 3.4 6.1 0 6.1 12 2.9 6.9 6.5; 26 12 9.6 6.8 7.7 7.6 8.2 19 10 7 13 27 8.1 20 9.4 12 8.2 8.6 12 6.1 0 8.1 3.8 8.8 10; 28 18 3.7 13 5.5 12 13 21 16 13 15 29 14 23 15 18 14 15 16 12 8.1 0 10 15 17; 16 10 12 3.7 7.4 7.4 5.1 16 7 5 12 26 5.8 20 6.3 8.6 5.9 6.3 9 2.9 3.8 10 0 5.6 7; 14 8.5 17 4.7 12 8.7 5.6 8.5 5.7 5.5 13 19 6.6 17 1.9 4.5 6.7 7.1 11 6.9 8.8 15 5.6 0 2; 13 7.3 18 4.2 14 8.2 5.2 6 4.4 5.1 19 18 7.3 16 1.4 3.1 6.2 6.6 9.3 6.5 10 17 7 2 0]; jumgen = length(JarakAgen(:,1)); ukpop = 25; q = 6000; kendaraan=3; psilang = 0.8; pmutasi = 0.05; maxG = 1500; pjh = 30;
128 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));
htext3 = text(0.6*maxG,0.15*bgraf,sprintf('panjang jalur
terbaik: %7.3f', 0.0));
htext4 = text(0.6*maxG,0.10*bgraf,sprintf('ukuran populasi:
%3.0f', 0.0));
htext5 = text(0.6*maxG,0.05*bgraf,sprintf('probabilitas mutasi:
%4.3f', 0.0)); xlabel('generasi'); ylabel('fitness'); hold off drawnow; % 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));
129
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));
htext3 = text(0.6*maxG,0.15*bgraf,sprintf('panjang jalur
terbaik: %7.3f', 0.0));
htext4 = text(0.6*maxG,0.10*bgraf,sprintf('ukuran populasi:
%3.0f', 0.0));
htext5 = text(0.6*maxG,0.05*bgraf,sprintf('probabilitas mutasi:
%4.3f', 0.0)); xlabel('generasi'); ylabel('fitness'); hold off drawnow; %inisialisasi populasi Populasi=PopulasiAwal(ukpop,jumgen); for generasi=1:maxG, maxF = NilaiFitness(Populasi(1,:),jumgen,JarakAgen,JarakDepot); minF = maxF; indeksindividuterbaik = 1; for ii=1:ukpop, fitness(ii)= NilaiFitness(Populasi(ii,:),jumgen,JarakAgen,JarakDepot); if(fitness(ii)>maxF), maxF=fitness(ii); indeksindividuterbaik=ii; jalurterbaik=Populasi(ii,:); end if(fitness(ii)<=minF), minF=fitness(ii); end end
130 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(htext3,'String',sprintf('panjang jalur terbaik: %7.3f', 1/maxF));
set(htext4,'String',sprintf('ukuran populasi: %3.0f', ukpop)); set(htext5,'String',sprintf('probabilitas mutasi: %4.3f', pmutasi)); drawnow; 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,:);
131 end
linearfitness=linearfitnessranking(ukpop,fitness,maxF,minF);
%Roulette-wheel selection dan pindah silang
for jj=iterasimulai:2:ukpop, IP1=RouletteWheel(ukpop,linearfitness); IP2=RouletteWheel(ukpop,linearfitness); if(rand<psilang), anak=PindahSilang(Populasi(IP1,:),Populasi(IP2,:),jumgen); tempopulasi(jj,:)=anak(1,:); tempopulasi(jj+1,:)=anak(2,:); else tempopulasi(jj,:)=Populasi(IP1,:); tempopulasi(jj+1,:)=Populasi(IP2,:); end end
%mutasi dilakukan pada semua kromosom
for kk=iterasimulai:ukpop, tempopulasi(kk,:)=Mutasi(tempopulasi(kk,:),jumgen,p mutasi); end Populasi=tempopulasi; end jalurterbaik
save jalurterbaik.mat jalurterbaik
8. Pembagian rute
Setelah jalur terbaik di dapatkan dari program utama, selanjutnya dilakukan pembagian rute menjadi dua beserta jumlah total permintaan dari setiap masing-masing rute. Fungsi ini disimpan pada file bagidua.m berikut ini.
function [rute1,kap1,rute2,kap2]=bagidua(kromosom,kapasitas,q) kap1=kapasitas(kromosom(1));
132 kap2=0; akhir=1; while kap1<=q akhir=akhir+1; kap1=kap1+kapasitas(kromosom(akhir)); end if kap1>q kap1=kap1-kapasitas(kromosom(akhir)); akhir=akhir-1; end rute1=kromosom(1:akhir); rute2=kromosom(akhir+1:size(kromosom,2)); for ii=akhir+1:size(kromosom,2) kap2=kap2+kapasitas(kromosom(ii)); end
variabel pada fungsi bagidua.m diatas adalah kromosom (jalur terbaik yang telah dihasilkan dari program utama), kapasitas (permintaan dari setiap agen), dan q (kapasitas kendaraan yaitu 6000 kg). Kapasitas 1 merupakan kapasitas permintaan dari semua agen yang dilalui pada rute 1 dan tidak melebihi dari kapasitas maksimal mobil box yaitu 6000 kg, jika sudah melebihi 6000 kg maka akan terbentuk rute 2 beserta kapasitas permintaan dari semua agen yang dilalui pada rute 2.
133
Lampiran 7
Hasil pengambilan rute secara acak yang membentuk populasi pada generasi awal dengan bantuan software Matlab.
Individu 1 = 9 19 4 23 15 22 17 25 2 16 3 1 6 13 5 7 11 24 8 10 18 12 21 20 14 Individu 2 = 14 10 21 12 16 20 17 3 15 11 1 22 23 24 8 5 18 6 9 4 25 13 7 19 2 Individu 3 = 11 22 21 15 12 10 18 14 7 3 20 2 8 13 9 24 19 4 25 23 17 5 6 1 16 Individu 4 = 21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1 Individu 5 = 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Individu 6 = 9 8 17 11 15 20 25 3 24 13 23 19 14 5 10 21 6 22 18 2 16 1 4 12 7 Individu 7 = 25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15 Individu 8 = 3 25 2 21 24 7 23 10 4 5 17 14 11 22 15 18 13 16 19 12 8 6 1 20 9 Individu 9 = 7 1 3 11 2 12 14 5 8 13 21 16 6 15 24 19 4 20 18 22 9 23 17 10 25 Individu 10 = 5 8 12 24 9 7 17 25 19 23 15 18 4 10 1 6 13 3 11 14 21 2 16 22 20
134 Individu 11 = 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15 22 19 24 Individu 12 = 12 1 21 6 13 3 23 5 20 9 18 15 25 22 4 10 8 17 14 24 19 16 7 2 11 Individu 13 = 7 24 19 11 12 1 9 18 3 16 13 17 4 21 10 2 23 20 15 8 5 22 14 6 25 Individu 14 = 4 23 7 8 13 14 18 6 16 11 21 25 15 17 12 19 10 5 9 3 22 2 24 20 1 Individu 15 = 14 21 4 24 10 7 18 9 25 2 5 17 3 1 16 6 8 15 12 23 19 22 13 11 20 Individu 16 = 10 14 12 1 22 24 7 19 20 11 25 6 2 4 15 23 18 17 16 8 3 5 9 13 21 Individu 17 = 22 20 24 1 25 8 2 10 12 3 5 11 18 13 9 14 6 23 21 15 7 19 17 16 4 Individu 18 = 20 15 5 23 22 6 3 2 7 18 14 12 25 10 24 1 11 13 4 16 21 8 19 9 17 Individu 19 = 17 2 11 16 14 18 6 3 23 22 15 4 8 7 10 25 19 9 1 24 12 21 13 5 20 Individu 20 = 7 3 24 1 9 19 10 25 21 13 2 23 22 5 4 20 14 11 17 15 16 12 8 6 18
135
Lampiran 8
Individu yang terpilih sebagai induk dengan bantuan software Matlab.
1) Induk 1= Individu 5 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Induk 2= Individu 5 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 2) Induk 1= Individu 18 20 15 5 23 22 6 3 2 7 18 14 12 25 10 24 1 11 13 4 16 21 8 19 9 17 Induk 2= Individu 12 12 1 21 6 13 3 23 5 20 9 18 15 25 22 4 10 8 17 14 24 19 16 7 2 11 3) Induk 1= Individu 4 21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1 Induk 2= Individu 7 25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15 4) Induk 1= Individu 5 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14
136 Induk 2= Individu 8 3 25 2 21 24 7 23 10 4 5 17 14 11 22 15 18 13 16 19 12 8 6 1 20 9 5) Induk 1= Individu 11 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15 22 19 24 Induk 2= Individu 7 25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15 6) Induk 1= Individu 5 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Induk 2= Individu 17 22 20 24 1 25 8 2 10 12 3 5 11 18 13 9 14 6 23 21 15 7 19 17 16 4 7) Induk 1= Individu 18 20 15 5 23 22 6 3 2 7 18 14 12 25 10 24 1 11 13 4 16 21 8 19 9 17 Induk 2= Individu 19 17 2 11 16 14 18 6 3 23 22 15 4 8 7 10 25 19 9 1 24 12 21 13 5 20 8) Induk 1= Individu 4 21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1
137 Induk 2= Individu 11 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15 22 19 24 9) Induk 1= Individu 16 10 14 12 1 22 24 7 19 20 11 25 6 2 4 15 23 18 17 16 8 3 5 9 13 21 Induk 2= Individu 8 3 25 2 21 24 7 23 10 4 5 17 14 11 22 15 18 13 16 19 12 8 6 1 20 9 10) Induk 1= Individu 13 7 24 19 11 12 1 9 18 3 16 13 17 4 21 10 2 23 20 15 8 5 22 14 6 25 Induk 2= Individu 5 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14
138
Lampiran 9
Hasil crossover (pindah silang) dengan bantuan software Matlab.
1) Anak 1 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Anak 2 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 2) Anak 1 1 11 13 4 16 21 8 19 17 9 18 15 25 20 5 23 22 6 3 2 7 14 12 10 24 Anak 2 10 8 17 24 19 16 7 2 11 18 14 12 25 1 21 6 13 3 23 5 20 9 15 22 4 3) Anak 1 21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1 Anak 2 25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15 4) Anak 1 10 13 22 21 3 25 24 5 2 23 15 9 4 18 7 11 14 16 19 12 8 6 1 20 17 Anak 2 25 2 21 24 23 10 5 17 14 22 15 13 16 8 6 20 9 4 18 12 7 11 19 1 3
139 5) Anak 1 22 19 24 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15 Anak 2 17 19 15 3 25 18 6 16 23 24 8 13 5 14 2 20 10 22 4 11 21 9 7 1 12 6) Anak 1 7 19 24 1 25 8 2 10 12 3 5 11 18 13 9 14 6 23 17 20 22 21 16 15 4 Anak 2 19 17 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 20 1 12 11 18 14 7 7) Anak 1 16 21 9 17 14 18 6 3 23 22 15 4 8 7 10 25 19 20 5 2 12 24 1 11 13 Anak 2 21 13 5 20 22 6 3 2 7 18 14 12 25 10 24 1 11 17 16 23 15 4 8 19 9 8) Anak 1 1 8 5 21 18 9 22 7 17 24 6 12 23 13 4 3 20 25 11 16 10 2 14 19 15 Anak 2 24 18 9 16 8 5 3 25 10 13 23 4 20 7 21 6 17 12 11 14 1 2 15 22 19
140 9) Anak 1 2 16 8 3 9 21 23 10 4 5 17 14 11 22 15 18 13 12 1 24 7 19 20 25 6 Anak 2 13 16 12 8 1 9 7 19 20 11 25 6 2 4 15 23 18 3 21 24 10 5 17 14 22 10) Anak 1 1 9 18 3 16 13 17 4 21 10 2 23 20 15 8 5 22 14 6 25 7 11 19 24 12 Anak 2 10 8 13 21 3 25 16 24 2 23 15 6 9 4 18 12 7 11 19 1 5 22 14 17 20
141
Lampiran 10
Hasil mutasi dengan bantuan software Matlab.
1) Individu baru anak 1
17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14
Individu baru anak 2
17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14
2) Individu baru anak 1
2 11 13 4 16 21 9 19 15 8 20 17 25 18 5
23 22 6 3 1 7 14 12 10 24 Individu baru anak 2
10 8 17 24 19 16 7 2 11 18 14 12 25 1 21 6 13 3 23 5 20 9 15 22 4
3) Individu baru anak 1
21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1
Individu baru anak 2
25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15
4) Individu baru anak 1
10 13 22 21 3 25 24 5 2 23 15 9 4 18 7 11 14 16 19 12 8 6 1 20 17
142
Individu baru anak 2
25 2 21 24 23 10 5 17 14 22 15 13 16 8 6 20 9 4 18 12 7 11 19 1 3
5) Individu baru anak 1
22 19 24 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15
Individu baru anak 2
17 19 15 3 25 18 6 16 23 24 8 13 5 14 2 20 10 22 4 11 21 9 7 1 12
6) Individu baru anak 1
7 19 24 1 25 8 2 10 12 3 5 11 18 13 9 14 6 23 17 20 22 21 16 15 4
Individu baru anak 2
19 17 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 20 1 12 11 18 14 7
7) Individu baru anak 1
16 21 9 17 14 18 6 3 23 22 15 4 8 7 10 25 19 20 5 2 12 24 1 11 13
Individu baru anak 2
21 13 5 20 22 6 3 2 7 18 14 12 25 10 24 1 11 17 16 23 15 4 8 19 9
8) Individu baru anak 1
1 8 5 21 18 9 22 7 17 24 6 12 23 13 4 3 20 25 11 16 10 2 14 19 15
143
Individu baru anak 2
24 18 9 16 8 5 3 25 10 13 23 4 20 7 21 6 17 12 11 14 1 2 15 22 19
9) Individu baru anak 1
2 16 8 3 9 21 23 10 4 5 17 14 11 22 15 18 13 12 1 24 7 19 20 25 6
Individu baru anak 2
13 16 12 8 1 9 7 19 20 11 25 6 2 4 15 23 18 3 21 24 10 5 17 14 22
10) Individu baru anak 1
1 9 18 3 16 13 17 4 21 10 2 23 20 15 8 5 22 14 6 25 7 11 19 24 12
Individu baru anak 2
10 8 13 21 3 25 16 24 2 23 15 6 9 4 18 12 7 11 19 1 5 22 14 17 20
144
Lampiran 11
Hasil populasi baru pada generasi selanjutnya dengan bantuan software Matlab.
Individu 1 = 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Individu 2 = 17 20 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 18 12 7 11 19 1 14 Individu 3 = 11 13 4 16 21 9 19 15 8 20 17 25 18 5 23 22 6 3 1 7 14 12 10 24 Individu 4 = 10 8 17 24 19 16 7 2 11 18 14 12 25 1 21 6 13 3 23 5 20 9 15 22 4 Individu 5= 21 18 9 22 7 17 24 6 5 12 8 23 13 4 3 20 25 11 16 10 2 14 19 15 1 Individu 6 = 25 18 6 16 23 24 8 13 5 14 2 3 20 10 22 4 11 21 9 7 1 12 17 19 15 Individu 7 = 10 13 22 21 3 25 24 5 2 23 15 9 4 18 7 11 14 16 19 12 8 6 1 20 17 Individu 8 = 25 2 21 24 23 10 5 17 14 22 15 13 16 8 6 20 9 4 18 12 7 11 19 1 3 Individu 9 = 22 19 24 16 8 5 3 25 10 13 23 4 20 9 18 7 21 6 17 12 11 14 1 2 15 Individu 10 = 17 19 15 3 25 18 6 16 23 24 8 13 5 14 2 20 10 22 4 11 21 9 7 1 12 Individu 11 = 7 19 24 1 25 8 2 10 12 3 5 11 18 13 9 14 6 23 17 20 22 21 16 15 4
145 Individu 12 = 19 17 10 8 13 22 21 3 25 16 24 5 2 23 15 6 9 4 20 1 12 11 18 14 7 Individu 13 = 16 21 9 17 14 18 6 3 23 22 15 4 8 7 10 25 19 20 5 2 12 24 1 11 13 Individu 14 = 21 13 5 20 22 6 3 2 7 18 14 12 25 10 24 1 11 17 16 23 15 4 8 19 9 Individu 15 = 1 8 5 21 18 9 22 7 17 24 6 12 23 13 4 3 20 25 11 16 10 2 14 19 15 Individu 16 = 24 18 9 16 8 5 3 25 10 13 23 4 20 7 21 6 17 12 11 14 1 2 15 22 19 Individu 17 = 2 16 8 3 9 21 23 10 4 5 17 14 11 22 15 18 13 12 1 24 7 19 20 25 6 Individu 18 = 13 16 12 8 1 9 7 19 20 11 25 6 2 4 15 23 18 3 21 24 10 5 17 14 22 Individu 19 = 1 9 18 3 16 13 17 4 21 10 2 23 20 15 8 5 22 14 6 25 7 11 19 24 12 Individu 20 = 10 8 13 21 3 25 16 24 2 23 15 6 9 4 18 12 7 11 19 1 5 22 14 17 20
146
Lampiran 12
Nilai fitness generasi selanjutnya yang didapatkan dengan bantuan software Matlab.
Nilai Fitness individu 1 = 0.0046
Nilai Fitness individu 2 = 0.0046
Nilai Fitness individu 3 = 0.0037 Nilai Fitness individu 4 = 0.0039 Nilai Fitness individu 5 = 0.0034 Nilai Fitness individu 6 = 0.0036 Nilai Fitness individu 7 = 0.0036 Nilai Fitness individu 8 = 0.0036 Nilai Fitness individu 9 = 0.0042 Nilai Fitness individu 10 = 0.0037
Nilai Fitness individu 11 = 0.0045 Nilai Fitness individu 12 = 0.0043 Nilai Fitness individu 13= 0.0041 Nilai Fitness individu 14 = 0.0036 Nilai Fitness individu 15 = 0.0033 Nilai Fitness individu 16 = 0.0045 Nilai Fitness individu 17 = 0.0045 Nilai Fitness individu 18= 0.0036 Nilai Fitness individu 19 = 0.0035 Nilai Fitness individu 20 = 0.0040
149
Lampiran 13
Hasil populasi baru pada generasi ke-1000 dengan bantuan software Matlab.
Individu 1 = 11 13 18 17 6 24 9 16 25 5 3 22 21 23 4 20 7 10 15 2 8 19 1 12 14 Individu 2 = 11 13 18 17 6 24 9 16 25 5 3 22 21 23 4 20 7 10 15 2 8 19 1 12 14 Individu 3 = 20 7 15 2 19 24 9 16 22 5 3 25 21 23 11 1 13 4 6 12 18 8 14 10 17 Individu 4 = 15 2 19 1 14 3 4 25 6 24 17 12 18 8 11 13 5 9 16 22 21 23 20 7 10 Individu 5 = 23 4 20 7 8 15 1 14 24 5 25 22 13 21 10 19 2 16 3 11 18 6 17 12 9 Individu 6 = 14 5 17 24 9 23 8 1 4 20 7 12 3 11 18 6 15 13 22 21 10 19 2 16 25 Individu 7 = 24 9 16 25 5 22 21 23 4 7 8 20 18 10 15 2 3 19 1 12 14 11 13 17 6 Individu 8 = 5 9 18 3 19 1 12 14 13 11 17 22 21 23 4 20 7 10 15 2 8 6 24 16 25 Individu 9 = 16 17 24 3 22 2 13 10 8 25 21 7 5 23 1 19 15 4 20 9 12 14 11 18 6 Individu 10 = 5 15 1 12 2 19 21 9 23 14 11 7 4 18 25 13 6 24 16 17 3 22 8 20 10
150 Individu 11 = 18 6 19 13 24 4 16 25 9 8 17 5 3 22 2 14 21 23 15 1 10 20 7 12 11 Individu 12 = 14 12 2 11 5 3 24 21 9 23 13 19 1 10 6 15 4 16 25 17 22 7 20 8 18 Individu 13 = 25 5 3 22 21 23 4 20 7 10 152 8 19 1 16 14 24 11 13 18 17 6 9 12 Individu 14 = 6 24 21 7 10 15 19 12 14 4 16 25 9 8 17 1 5 3 22 23 2 20 11 13 18 Individu 15 = 12 17 10 18 6 15 13 22 9 23 2 16 25 14 5 3 24 21 8 19 1 11 4 20 7 Individu 16 = 12 17 11 18 6 15 13 22 9 23 2 16 25 14 5 3 24 21 8 19 1 10 4 20 7 Individu 17 = 13 24 17 6 18 9 16 25 5 14 3 22 21 23 4 20 7 10 15 2 8 19 1 12 11 Individu 18 = 13 18 17 6 24 9 16 25 20 11 322 21 23 4 5 7 10 15 2 8 19 1 12 14 Individu 19 = 14 11 9 22 13 3 4 25 6 24 5 12 18 8 16 17 1 21 23 20 7 10 15 2 19 Individu 20 = 19 13 18 17 6 24 9 16 11 5 3 22 21 23 20 25 1 12 8 14 10 4 7 15 2
151
Lampiran 14
Nilai fitness generasi ke-1000 yang didapatkan dengan bantuan software Matlab.
Nilai Fitness individu 1 = 0.0080
Nilai Fitness individu 2 = 0.0080
Nilai Fitness individu 3 = 0.0052 Nilai Fitness individu 4 = 0.0047 Nilai Fitness individu 5 = 0.0044 Nilai Fitness individu 6 = 0.0054 Nilai Fitness individu 7 = 0.0033 Nilai Fitness individu 8 = 0.0050 Nilai Fitness individu 9 = 0.0057 Nilai Fitness individu 10 = 0.0047
Nilai Fitness individu 11 = 0.0042 Nilai Fitness individu 12 = 0.0044 Nilai Fitness individu 13= 0.0041 Nilai Fitness individu 14 = 0.0044 Nilai Fitness individu 15 = 0.0048 Nilai Fitness individu 16 = 0.0043 Nilai Fitness individu 17 = 0.0046 Nilai Fitness individu 18= 0.0042 Nilai Fitness individu 19 = 0.0042 Nilai Fitness individu 20 = 0.0041