• Tidak ada hasil yang ditemukan

Lampiran 1 Matriks jarak tempuh awal dan tujuan distribusi surat kabar Kedaulatan Rakyat di wilayah Kabupaten Sleman (satuan km)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lampiran 1 Matriks jarak tempuh awal dan tujuan distribusi surat kabar Kedaulatan Rakyat di wilayah Kabupaten Sleman (satuan km)"

Copied!
32
0
0

Teks penuh

(1)

83

(2)

84 Lampiran 1

Matriks jarak tempuh awal dan tujuan distribusi surat kabar Kedaulatan Rakyat di wilayah Kabupaten Sleman (satuan km)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 0 11.9 8.2 11.6 5.6 11.2 21.2 7.6 10.5 10.8 7.9 25.4 7.4 10.5 8.3 17 15.3 20.8 8.8 22.1 15.9 1 11.9 0 3.4 6.8 1.5 5.9 15.8 3.9 6.2 9.7 3 22.4 2.6 8.6 7.2 11.6 9.3 19.5 6.5 16.6 10.6 2 8.2 3.4 0 5.9 5.5 6.8 19.4 6.3 5.3 6.3 9.1 26 3.6 5.3 3.8 15.2 11.8 20.4 3.1 18 11.5 3 11.6 6.8 5.9 0 6.4 1.6 17.2 7.3 1.7 5.7 8.2 25 4.4 2.5 3.3 14.2 8.3 14.6 4 12.2 5.7 4 5.6 1.5 5.5 6.4 0 5.8 15.5 1.1 6.1 9.6 5.3 25.9 2.5 8.5 7.1 11.1 8.5 19.4 6.4 15.9 10.5 5 11.2 5.9 6.8 1.6 5.8 0 16.8 7.6 2.4 7 8.4 25.3 5.3 3.7 4.2 14.5 8.6 16.2 4.9 13.8 7.3 6 21.2 15.8 19.4 17.2 15.5 16.8 0 14.1 16 22.3 10.3 12.2 16 19.2 18.4 4.3 8.2 13.2 18.1 7.7 12.8 7 7.6 3.9 6.3 7.3 1.1 7.6 14.1 0 6.3 9.8 2.3 20.6 2.7 8.7 7.3 9.8 6.8 19.6 6.6 14 9.2 8 10.5 6.2 5.3 1.7 6.1 2.4 16 6.3 0 5.9 8.3 25.1 4.4 2.8 3.2 14.3 8.4 15.2 4 12.8 6.3 9 10.8 9.7 6.3 5.7 9.6 7 22.3 9.8 5.9 0 13.4 31.7 6.8 4.1 3.3 19.4 13.5 19.8 4.7 17.4 10.9 10 7.9 3 9.1 8.2 5.3 8.4 10.3 2.3 8.3 13.4 0 16.9 5.7 10.7 8.6 6.1 6 15.9 7.8 10.1 7 11 25.4 22.4 26 25 25.9 25.3 12.2 20.6 25.1 31.7 16.9 0 22.6 27.6 25.5 11.3 17.1 22.7 24.7 17.2 22.3 12 7.4 2.6 3.6 4.4 2.5 5.3 16 2.7 4.4 6.8 5.7 22.6 0 6.2 4.6 11.8 8.4 18 4 15.6 9.1 13 10.5 8.6 5.3 2.5 8.5 3.7 19.2 8.7 2.8 4.1 10.7 27.6 6.2 0 4.1 15.4 9.4 15.7 4.8 13.3 6.8 14 8.3 7.2 3.8 3.3 7.1 4.2 18.4 7.3 3.2 3.3 8.6 25.5 4.6 4.1 0 15.7 9.8 17.9 2.1 15.5 9 15 17 11.6 15.2 14.2 11.1 14.5 4.3 9.8 14.3 19.4 6.1 11.3 11.8 15.4 15.7 0 6 12.3 13.8 6.8 10.8 16 15.3 9.3 11.8 8.3 8.5 8.6 8.2 6.8 8.4 13.5 6 17.1 8.4 9.4 9.8 6 0 14.4 10.5 7.5 5.9 17 20.8 19.5 20.4 14.6 19.4 16.2 13.2 19.6 15.2 19.8 15.9 22.7 18 15.7 17.9 12.3 14.4 0 18.1 7.7 8.3 18 8.8 6.5 3.1 4 6.4 4.9 18.1 6.6 4 4.7 7.8 24.7 4 4.8 2.1 13.8 10.5 18.1 0 16.3 9.8 19 22.1 16.6 18 12.2 15.9 13.8 7.7 14 12.8 17.4 10.1 17.2 15.6 13.3 15.5 6.8 7.5 7.7 16.3 0 7.6 20 15.9 10.6 11.5 5.7 10.5 7.3 12.8 9.2 6.3 10.9 7 22.3 9.1 6.8 9 10.8 5.9 8.3 9.8 7.6 0

(3)

85 Lampiran 2

Matriks waktu tempuh asal dan tujuan surat kabar Kedaulatan Rakyat di wilayah Kabupaten Sleman (satuan menit)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 0 9 6 9 4 8 16 6 8 8 6 19 6 8 6 13 11 19 7 17 12 1 9 0 3 5 1 4 12 3 5 7 2 17 2 6 5 9 7 15 5 12 8 2 6 3 0 4 4 5 15 5 4 5 7 20 3 4 3 11 9 15 2 14 9 3 9 5 4 0 5 1 13 5 1 4 6 19 3 2 2 11 6 11 3 9 4 4 4 1 4 5 0 4 12 1 5 7 4 19 2 6 5 8 6 15 5 12 8 5 8 4 5 1 4 0 13 6 2 5 6 19 4 3 3 11 6 12 4 10 5 6 16 12 15 13 12 13 0 11 12 17 8 9 12 14 14 3 6 10 14 6 10 7 6 3 5 5 1 6 11 0 5 7 2 15 2 7 5 7 5 15 5 11 7 8 8 5 4 1 5 2 12 5 0 4 6 19 3 2 2 11 6 11 3 10 5 9 8 7 5 4 7 5 17 7 4 0 10 24 5 3 2 15 10 15 4 13 8 10 6 2 7 6 4 6 8 2 6 10 0 13 4 8 6 5 5 12 6 8 5 11 19 17 20 19 19 19 9 15 19 24 13 0 17 21 19 8 13 17 19 13 17 12 6 2 3 3 2 4 12 2 3 5 4 17 0 5 3 9 6 14 3 12 7 13 8 6 4 2 6 3 14 7 2 3 8 21 5 0 3 12 7 12 4 10 5 14 6 5 3 2 5 3 14 5 2 2 6 19 3 3 0 12 7 13 2 12 7 15 13 9 11 11 8 11 3 7 11 15 5 8 9 12 12 0 5 9 10 5 8 16 11 7 9 6 6 6 6 5 6 10 5 13 6 7 7 5 0 11 8 6 4 17 19 15 15 11 15 12 10 15 11 15 12 17 14 12 13 9 11 0 14 6 6 18 7 5 2 3 5 4 14 5 3 4 6 19 3 4 2 10 8 14 0 12 7 19 17 12 14 9 12 10 6 11 10 13 8 13 12 10 12 5 6 6 12 0 6 20 12 8 9 4 8 5 10 7 5 8 5 17 7 5 7 8 4 6 7 6 0

(4)

86 Lampiran 3

Data permintaan harian setiap agen di wilayah Kabupaten Sleman

KODE ALAMAT AGEN EKS Kg(1Kg=9EKS)

0 DEPOT (Jalan Solo Km 11, Kalitirto, DIY) 0 0

1 Jalan Besi KM 14 (Depan Kampus UII) 39 4,3

2 Palem Kecut CT 10/41 Sleman 113 12,6

3 Jalan Magelang Km 5,2 191 21,2

4 Jalan Tluki I 169 CONCAT 573 63,7

5 Jombor Kidul, Sinduadi, Mlati, Sleman 1111 123,4

6 Karangnggeneng, Pakem, Sleman 90 10

7 Jalan Gurameh Raya, Minomartani (Warnet Luna) 140 15,6 8 Karanganyar, Sinduadi, Mlati (Yogya Utara) 403 44,8

9 Jalan Bhayangkara Km 13 Morangan 16 1,8

10 Pasar Gentan, Ngaglik, Sleman 319 35,4

11 Hargo Binangun, Pakem 595 66,1

12 Jalan Gejayan Gang Guru Mrican 61 6,8

13 Jalan Merapi Km 4 Beran 611 67,9

14 Perempatan Tugu Yogya 424 47,1

15 Rumah Sakit Panti Nugroho 220 24,4

16 Jalan Tegalrejo, Sardonoharjo, Sleman 179 19,9

17 Lumbungrejo, Tempel, Sleman 440 48,9

18 Pasar Terban 132 14,7

19 Donokerto, Turi, Sleman 178 19,8

20 Wadas, Tridadi, Sleman 62 6,9

(5)

87 Lampiran 4

Prosedur algoritma genetika menggunakan software Matlab dalam

penyelesaian Capacitated Vehicle Routing Problem (CVRP) untuk distribusi surat

kabar Kedaulatan Rakyat di Kabupaten Sleman. Prosedur ini dimodifikasi dari

Suyanto (2005: 86).

1. Membangkitkan Populasi Awal

Membangkitkan populasi awal diimplementasikan menggunakan

baris-baris perintah pada fungsi CVRPinisialisasipopulasi.m berikut ini. function Populasi = CVRPInisialisasiPopulasi(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

nomer urut pelanggan surat kabar kedaulatan rakyat yang dibangkitkan. Iterasi di

atas dilakukan sebanyak ukpop (banyaknya individu dalam populasi), sehingga

(6)

88 2. Menghitung Nilai Fitness

Perhitungan nilai fitness dari populasi awal yang sudah terbentuk

diimplementasikan dalam perintah pada fungsi fitnesscvrp.m berikut ini. function fitness = fitnesscvrp(kromosom,jumgen,JarakAgen,jd) jalur=jd(kromosom(1))+jd(kromosom(jumgen));

for ii=1:jumgen-1

jalur=jalur+JarakAgen(kromosom(ii),kromosom(ii+1)); end

fitness=1/jalur;

Variabel pada fungsi fitnesscvrp.m adalah kromosom (individu dari

populasi), jumgen (jumlah gen), jd (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 linearfitnessranking.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

(7)

89

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); 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 linearfitnessranking.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

(8)

90 4. Pindah Silang (order crossover)

Operator pindah silang dari populasi awal yang sudah terbentuk

diimplementasikan dalam perintah pada fungsi CVRPpindahsilang.m berikut ini. function anak = CVRPpindahsilang(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); 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

(9)

91

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 CVRPpindahsilang.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.

5. Mutasi dengan Swapping Mutation

Operator pindah silang dari populasi awal yang sudah terbentuk

diimplementasikan dalam perintah pada fungsi CVRPmutasi.m berikut ini. function mutkrom = CVRPmutasi(kromosom,jumgen,pmutasi) 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;

(10)

92

end end

variabel pada fungsi CVRPmutasi.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).

6. Program Utama

Sebagai program utama, fungsi cobaCVRP.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), s

(banyaknya 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. clear all

jd = [11.9 8.2 11.6 5.6 11.2 21.2 7.6 10.5 10.8 7.9 25.4 7.4 10.5 8.3 17 15.3 20.8 8.8 22.1 15.9];

kapasitas = [0 4.3 12.6 21.2 63.7 123.4 10 15.6 44.8 1.8 35.4 66.1 6.8 67.9 47.1 24.4 19.9 48.9 14.7 19.8 6.9];

(11)

93 JarakAgen = [0 3.4 6.8 1.5 5.9 15.8 3.9 6.2 9.7 3 22.4 2.6 8.6 7.2 11.6 9.3 19.5 6.5 16.6 10.6; 3.4 0 5.9 5.5 6.8 19.4 6.3 5.3 6.3 9.1 26 3.6 5.3 3.8 15.2 11.8 20.4 3.1 18 11.5; 6.8 5.9 0 6.4 1.6 17.2 7.3 1.7 5.7 8.2 25 4.4 2.5 3.3 14.2 8.3 14.6 4 12.2 5.7; 1.5 5.5 6.4 0 5.8 15.5 1.1 6.1 9.6 5.3 25.9 2.5 8.5 7.1 11.1 8.5 19.4 6.4 15.9 10.5; 5.9 6.8 1.6 5.8 0 16.8 7.6 2.4 7 8.4 25.3 5.3 3.7 4.2 14.5 8.6 16.2 4.9 13.8 7.3; 15.8 19.4 17.2 15.5 16.8 0 14.1 16 22.3 10.3 12.2 16 19.2 18.4 4.3 8.2 13.2 18.1 7.7 12.8; 3.9 6.3 7.3 1.1 7.6 14.1 0 6.3 9.8 2.3 20.6 2.7 8.7 7.3 9.8 6.8 19.6 6.6 14 9.2; 6.2 5.3 1.7 6.1 2.4 16 6.3 0 5.9 8.3 25.1 4.4 2.8 3.2 14.3 8.4 15.2 4 12.8 6.3; 9.7 6.3 5.7 9.6 7 22.3 9.8 5.9 0 13.4 31.7 6.8 4.1 3.3 19.4 13.5 19.8 4.7 17.4 10.9; 3 9.1 8.2 5.3 8.4 10.3 2.3 8.3 13.4 0 16.9 5.7 10.7 8.6 6.1 6 15.9 7.8 10.1 7; 22.4 26 25 25.9 25.3 12.2 20.6 25.1 31.7 16.9 0 22.6 27.6 25.5 11.3 17.1 22.7 24.7 17.2 22.3; 2.6 3.6 4.4 2.5 5.3 16 2.7 4.4 6.8 5.7 22.6 0 6.2 4.6 11.8 8.4 18 4 15.6 9.1; 8.6 5.3 2.5 8.5 3.7 19.2 8.7 2.8 4.1 10.7 27.6 6.2 0 4.1 15.4 9.4 15.7 4.8 13.3 6.8;

(12)

94 7.2 3.8 3.3 7.1 4.2 18.4 7.3 3.2 3.3 8.6 25.5 4.6 4.1 0 15.7 9.8 17.9 2.1 15.5 9; 11.6 15.2 14.2 11.1 14.5 4.3 9.8 14.3 19.4 6.1 11.3 11.8 15.4 15.7 0 6 12.3 13.8 6.8 10.8; 9.3 11.8 8.3 8.5 8.6 8.2 6.8 8.4 13.5 6 17.1 8.4 9.4 9.8 6 0 14.4 10.5 7.5 5.9; 19.5 20.4 14.6 19.4 16.2 13.2 19.6 15.2 19.8 15.9 22.7 18 15.7 17.9 12.3 14.4 0 18.1 7.7 8.3; 6.5 3.1 4 6.4 4.9 18.1 6.6 4 4.7 7.8 24.7 4 4.8 2.1 13.8 10.5 18.1 0 16.3 9.8; 16.6 18 12.2 15.9 13.8 7.7 14 12.8 17.4 10.1 17.2 15.6 13.3 15.5 6.8 7.5 7.7 16.3 0 7.6; 10.6 11.5 5.7 10.5 7.3 12.8 9.2 6.3 10.9 7 22.3 9.1 6.8 9 10.8 5.9 8.3 9.8 7.6 0 ]; jumgen = length(JarakAgen(:,1)); ukpop = 20; q = 350; s = 2; psilang = 0.8; pmutasi = 0.05; maxG = 1000; pjh = 30; fth = 1/pjh; bgraf = fth; % inisialisasi grafis

(13)

95

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 populasi populasi = CVRPInisialisasiPopulasi(ukpop,jumgen); for generasi=1:maxG, maxF = fitnesscvrp(populasi(1,:),jumgen,JarakAgen,jd); minF = maxF; indeksindividuterbaik = 1; for ii=1:ukpop,

(14)

96 fitness(ii)= fitnesscvrp(populasi(ii,:),jumgen,JarakAgen,jd); 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(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));

(15)

97 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,:); 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=CVRPpindahsilang(populasi(IP1,:),populasi(IP2,:),jumgen); tempopulasi(jj,:)=anak(1,:); tempopulasi(jj+1,:)=anak(2,:); else tempopulasi(jj,:)=populasi(IP1,:);

(16)

98

tempopulasi(jj+1,:)=populasi(IP2,:); end

end

%mutasi dilakukan pada semua kromosom

for kk=iterasimulai:ukpop, tempopulasi(kk,:)=CVRPmutasi(tempopulasi(kk,:),jumgen,pmutasi); end populasi=tempopulasi; end jalurterbaik

save jalurterbaik.mat jalurterbaik

7. 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)); 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

(17)

99 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 350 kg). Kap 1 merupakan kapasitas

permintaan dari semua agen yang dilalui pada rute 1 dan tidak melebihi dari

kapasitas maksimal mobil box yaitu 350 kg, jika sudah melebihi 350 kg maka

akan terbentuk rute 2 beserta kapasitas permintaan dari semua agen yang dilalui

(18)

100 Lampiran 5

Hasil pengambilan rute secara acak yang membentuk populasi pada generasi awal dengan bantuan software Matlab.

Individu 1 = 14 18 19 1 17 3 13 7 8 16 9 5 15 2 11 6 4 12 10 20 Individu 2 = 14 17 9 13 19 11 1 20 6 7 8 15 10 2 5 3 18 16 12 4 Individu 3 = 13 11 20 12 8 1 19 10 18 3 14 17 2 5 16 7 9 4 6 15 Individu 4 = 19 16 11 14 9 13 15 6 20 5 2 4 18 1 12 17 3 7 8 10 Individu 5 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 Individu 6 = 11 16 18 12 14 4 3 1 19 8 13 6 2 5 15 17 7 9 10 20 Individu 7 = 19 13 4 8 18 10 5 7 17 11 15 16 6 2 12 1 14 9 20 3 Individu 8 = 17 2 14 1 9 3 10 20 16 6 12 8 5 19 15 7 4 13 11 18 Individu 9 = 9 7 6 15 17 4 1 2 13 14 10 19 5 11 3 18 20 16 8 12 Individu 10 = 15 3 4 8 20 11 9 1 6 2 10 17 14 18 13 12 5 7 19 16

(19)

101 Individu 11 = 11 15 2 5 6 14 8 4 12 16 9 1 13 10 20 3 7 18 19 17 Individu 12 = 18 1 4 5 17 2 10 20 7 12 8 6 15 13 11 3 9 19 16 14 Individu 13 = 11 5 4 13 20 15 6 17 16 3 1 10 7 18 2 14 19 9 8 12 Individu 14 = 15 8 11 19 10 17 6 18 4 7 13 16 1 5 20 9 12 14 2 3 Individu 15 = 18 16 20 6 2 14 3 5 12 7 11 10 13 9 17 1 8 4 15 19 Individu 16 = 1 4 15 20 2 7 11 14 6 17 18 19 16 3 12 13 9 8 10 5 Individu 17 = 18 5 11 10 13 1 20 3 19 12 2 14 15 17 7 6 8 16 9 4 Individu 18 = 14 17 12 2 9 13 8 19 3 15 18 5 4 6 1 10 7 20 16 11 Individu 19 = 17 12 3 15 16 6 5 7 14 1 8 19 4 11 18 13 10 20 2 9 Individu 20 = 6 20 10 7 13 11 8 9 15 19 17 1 3 2 4 16 18 12 5 14

(20)

102 Lampiran 6

Individu yang terpilih sebagai induk dengan bantuan software Matlab.

1) Induk 1 = Individu 5 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 Induk 2 = Individu 5 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 2) Induk 1 = Individu 11 = 11 15 2 5 6 14 8 4 12 16 9 1 13 10 20 3 7 18 19 17 Induk 2 = Individu 10 = 15 3 4 8 20 11 9 1 6 2 10 17 14 18 13 12 5 7 19 16 3) Induk 1 = Individu 18 = 14 17 12 2 9 13 8 19 3 15 18 5 4 6 1 10 7 20 16 11 Induk 2 = Individu 2 = 14 17 9 13 19 11 1 20 6 7 8 15 10 2 5 3 18 16 12 4 4) Induk 1 = Individu 4 = 19 16 11 14 9 13 15 6 20 5 2 4 18 1 12 17 3 7 8 10 Induk 2 = Individu 8 = 17 2 14 1 9 3 10 20 16 6 12 8 5 19 15 7 4 13 11 18 5) Induk 1 = Individu 2 = 14 17 9 13 19 11 1 20 6 7 8 15 10 2 5 3 18 16 12 4 Induk 2 = Individu 17 = 18 5 11 10 13 1 20 3 19 12 2 14 15 17 7 6 8 16 9 4 6) Induk 1 = Individu 5 = 17 19 3 9 5 16 10 20 2 12 8

(21)

103 13 14 7 1 18 15 11 6 4 Induk 2 = Individu 17 = 18 5 11 10 13 1 20 3 19 12 2 14 15 17 7 6 8 16 9 4 7) Induk 1 = Individu 7 = 19 13 4 8 18 10 5 7 17 11 15 16 6 2 12 1 14 9 20 3 Induk 2 = Individu 16 = 1 4 15 20 2 7 11 14 6 17 18 19 16 3 12 13 9 8 10 5 8) Induk 1 = Individu 4 = 19 16 11 14 9 13 15 6 20 5 2 4 18 1 12 17 3 7 8 10 Induk 2 = Individu 17 = 18 5 11 10 13 1 20 3 19 12 2 14 15 17 7 6 8 16 9 4 9) Induk 1 = Individu 15 = 18 16 20 6 2 14 3 5 12 7 11 10 13 9 17 1 8 4 15 19 Induk 2 = Individu 8 = 17 2 14 1 9 3 10 20 16 6 12 8 5 19 15 7 4 13 11 18 10) Induk 1 = Individu 18 = 14 17 12 2 9 13 8 19 3 15 18 5 4 6 1 10 7 20 16 11 Induk 2 = Individu 6 = 11 16 18 12 14 4 3 1 19 8 13 6 2 5 15 17 7 9 10 20

(22)

104 Lampiran 7

Hasil crossover (pindah silang) dengan bantuan software Matlab.

1) Anak 1 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 Anak 2 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 2) Anak 1 = 19 3 4 8 20 11 9 1 6 2 10 17 15 5 14 12 16 13 7 18 Anak 2 = 19 15 2 5 6 14 8 4 12 16 9 1 3 20 11 10 17 18 13 7 3) Anak 1 = 16 11 9 13 19 14 17 12 2 8 3 15 18 5 4 6 1 10 7 20 Anak 2 = 16 4 12 2 9 14 17 13 19 11 1 20 6 7 8 15 10 5 3 18 4) Anak 1 = 10 2 14 1 19 16 11 9 13 15 6 20 5 4 18 12 17 3 7 8 Anak 2 = 18 16 11 14 17 2 1 9 3 10 20 6 12 8 5 19 15 7 4 13 5) Anak 1 = 10 5 18 16 4 1 20 3 19 12 2 14 15 17 7 6 8 9 13 11 Anak 2 = 14 17 16 9 4 11 1 20 6 7 8 15 10 2 5 3 18 13 19 12 6) Anak 1 = 18 11 6 4 13 1 20 3 19 12 2 14 15

(23)

105 17 7 9 5 16 10 8 Anak 2 17 6 9 4 5 16 10 20 2 12 8 13 14 7 1 18 11 3 19 15 7) Anak 1 = 19 13 4 8 18 10 5 7 17 11 15 16 6 2 12 1 14 9 20 3 Anak 2 = 1 4 15 20 2 7 11 14 6 17 18 19 16 3 12 13 9 8 10 5 8) Anak 1 = 19 16 11 14 9 13 15 6 20 5 2 4 18 1 12 17 3 7 8 10 Anak 2 = 18 5 11 10 13 1 20 3 19 12 2 14 15 17 7 6 8 16 9 4 9) Anak 1 = 14 3 5 12 7 11 10 13 9 17 1 8 4 19 15 18 16 20 6 2 Anak 2 = 20 16 6 12 8 5 19 15 7 4 13 11 18 9 17 2 14 1 3 10 10) Anak 1 = 13 8 19 3 18 4 6 1 10 7 20 16 11 5 15 14 17 12 2 9 Anak 2 = 4 3 19 8 13 2 5 15 17 7 9 10 20 6 1 11 16 18 12 14

(24)

106 Lampiran 8 Hasil mutasi dengan bantuan software Matlab.

1) Individu baru anak 1 = 17 19 3 9 5 16 10 20 2 12 8

13 14 7 1 18 15 11 6 4

Individu baru anak 2 = 17 19 3 9 5 16 10 20 2 12 8

13 14 7 1 18 15 11 6 4

2) Individu baru anak 1 = 11 3 4 8 20 19 9 1 6 2 10 18 17 5 14 12 16 13 15 7

Individu baru anak 2 = 19 15 2 5 6 14 8 4 12 16 9

1 3 20 11 10 17 18 13 7

3) Individu baru anak 1 = 16 11 9 13 19 14 17 12 2 8 3

15 18 5 4 6 7 10 1 20

Individu baru anak 2 = 16 4 12 2 9 14 17 13 19 11 1

20 6 7 8 15 10 5 3 18

4) Individu baru anak 1 = 10 17 14 1 19 16 11 9 13 15 6

20 5 4 18 12 2 3 7 8

Individu baru anak 2 = 18 16 11 12 17 2 1 9 3 10 20

6 5 8 14 19 15 7 4 13

5) Individu baru anak 1 = 10 5 18 16 11 1 20 3 19 12 2

14 15 17 7 6 8 9 13 4

Individu baru anak 2 = 14 17 16 9 4 11 1 20 6 15 8

(25)

107

6) Individu baru anak 1 = 18 11 6 13 4 1 20 3 19 12 2

14 15 17 7 9 5 16 10 8

Individu baru anak 2 = 17 6 9 4 5 16 10 20 2 12 8

13 14 19 1 18 11 3 7 15

7) Individu baru anak 1 = 19 13 4 8 18 10 6 7 17 20 15

16 5 2 12 1 14 9 11 3

Individu baru anak 2 = 3 4 15 20 2 7 11 14 6 18 17 19 16 1 12 13 9 8 10 5

8) Individu baru anak 1 = 19 16 11 14 9 7 3 1 20 5 6 4 18 2 12 17 15 13 8 10

Individu baru anak 2 = 18 5 11 10 13 1 20 3 19 12 2

14 4 17 7 6 8 16 9 15

9) Individu baru anak 1 = 14 3 5 12 7 11 10 13 9 17 1

15 4 19 2 18 16 20 6 8

Individu baru anak 2 = 12 16 6 20 8 5 19 15 7 4 13 17 18 9 11 2 14 1 3 10

10) Individu baru anak 1 = 13 8 19 3 18 4 6 1 10 7 9 16 11 5 15 14 17 12 2 20

Individu baru anak 2 = 4 3 19 8 6 16 5 15 17 7 9

(26)

108 Lampiran 9

Hasil populasi baru pada generasi selanjutnya dengan bantuan software Matlab. Individu 1 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 Individu 2 = 17 19 3 9 5 16 10 20 2 12 8 13 14 7 1 18 15 11 6 4 Individu 3 = 11 3 4 8 20 19 9 1 6 2 10 18 17 5 14 12 16 13 15 7 Individu 4 = 19 15 2 5 6 14 8 4 12 16 9 1 3 20 11 10 17 18 13 7 Individu 5 = 16 11 9 13 19 14 17 12 2 8 3 15 18 5 4 6 7 10 1 20 Individu 6 = 16 4 12 2 9 14 17 13 19 11 1 20 6 7 8 15 10 5 3 18 Individu 7 = 10 17 14 1 19 16 11 9 13 15 6 20 5 4 18 12 2 3 7 8 Individu 8 = 18 16 11 12 17 2 1 9 3 10 20 6 5 8 14 19 15 7 4 13 Individu 9 = 10 5 18 16 11 1 20 3 19 12 2 14 15 17 7 6 8 9 13 4 Individu 10 = 14 17 16 9 4 11 1 20 6 15 8 7 10 2

(27)

109 5 3 18 13 19 12 Individu 11 = 18 11 6 13 4 1 20 3 19 12 2 14 15 17 7 9 5 16 10 8 Individu 12 = 17 6 9 4 5 16 10 20 2 12 8 13 14 19 1 18 11 3 7 15 Individu 13 = 19 13 4 8 18 10 6 7 17 20 15 16 5 2 12 1 14 9 11 3 Individu 14 = 3 4 15 20 2 7 11 14 6 18 17 19 16 1 12 13 9 8 10 5 Individu 15 = 19 16 11 14 9 7 3 1 20 5 6 4 18 2 12 17 15 13 8 10 Individu 16 = 18 5 11 10 13 1 20 3 19 12 2 14 4 17 7 6 8 16 9 15 Individu 17 = 14 3 5 12 7 11 10 13 9 17 1 15 4 19 2 18 16 20 6 8 Individu 18 = 12 16 6 20 8 5 19 15 7 4 13 17 18 9 11 2 14 1 3 10 Individu 19 = 13 8 19 3 18 4 6 1 10 7 9 16 11 5 15 14 17 12 2 20 Individu 20 = 4 3 19 8 6 16 5 15 17 7 9 10 20 13 1 11 2 18 12 14

(28)

110 Lampiran 10

Nilai fitness generasi selanjutnya yang didapatkan dengan bantuan software Matlab.

Nilai fitness individu 1 = 0.0056 Nilai fitness individu 2 = 0.0056 Nilai fitness individu 3 = 0.0040

Nilai fitness individu 4 = 0.0042

Nilai fitness individu 5 = 0.0041

Nilai fitness individu 6 = 0.0047

Nilai fitness individu 7 = 0.0046

Nilai fitness individu 8 = 0.0046

Nilai fitness individu 9 = 0.0045

Nilai fitness individu 10 = 0.0044

Nilai fitness individu 11 = 0.0045

Nilai fitness individu 12 = 0.0041

Nilai fitness individu 13 = 0.0043

Nilai fitness individu 14 = 0.0044

Nilai fitness individu 15 = 0.0044

Nilai fitness individu 16 = 0.0038

Nilai fitness individu 17 = 0.0044

Nilai fitness individu 18 = 0.0046

Nilai fitness individu 19 = 0.0040

(29)

111 Lampiran 11

Hasil populasi baru pada generasi ke-1000 dengan bantuan software Matlab. Individu 1 = 7 4 1 10 16 15 11 6 19 17 20 3 5 8 13 9 14 18 2 12 Individu 2 = 7 4 1 10 16 15 11 6 19 17 20 3 5 8 13 9 14 18 2 12 Individu 3 = 1 8 4 9 18 12 2 14 19 17 20 3 5 7 13 15 10 16 11 6 Individu 4 = 14 19 8 7 4 10 16 15 1 17 20 3 5 11 6 13 9 18 12 2 Individu 5 = 19 17 5 6 12 2 14 4 16 15 20 3 9 1 7 10 8 18 11 13 Individu 6 = 19 17 5 8 13 9 18 12 2 14 20 3 7 4 1 16 10 15 11 6 Individu 7 = 3 5 8 4 9 18 12 2 14 17 7 13 15 10 16 19 11 6 1 20 Individu 8 = 7 4 10 3 5 8 13 9 18 17 14 2 1 12 16 15 11 6 19 20 Individu 9 = 9 18 17 3 8 13 12 2 14 1 16 15 11 6 19 20 7 4 5 10 Individu 10 = 20 9 1 10 16 15 11 19 17 3 8 13 12 2 14 4 18 6 5 7 Individu 11 = 12 16 14 2 7 5 11 6 19 17 9 15 18 1

(30)

112 13 4 8 10 20 3 Individu 12 = 7 3 5 12 9 18 13 4 8 10 2 14 1 16 15 11 6 19 17 20 Individu 13 = 6 19 8 2 9 10 13 12 14 17 20 3 5 7 4 1 18 16 15 11 Individu 14 = 6 19 8 13 9 18 2 12 14 17 20 3 5 7 4 1 10 16 15 11 Individu 15 = 18 12 2 14 16 15 11 6 19 17 20 7 4 13 3 5 8 10 1 9 Individu 16 = 15 7 13 12 16 2 11 6 1 17 20 18 5 8 4 9 3 19 14 10 Individu 17 = 9 4 7 10 8 18 11 6 19 17 20 3 5 15 12 2 14 1 16 13 Individu 18 = 7 11 15 10 16 19 12 6 1 17 8 3 5 20 4 9 18 13 2 14 Individu 19 = 12 2 7 10 16 15 11 6 19 17 20 3 4 1 8 9 18 5 13 14 Individu 20 = 2 12 14 10 15 8 3 6 19 17 20 11 7 4 1 16 5 13 9 18

(31)

113 Lampiran 12

Nilai fitness generasi ke-1000 yang didapatkan dengan bantuan software Matlab.

Nilai fitness individu 1 = 0.0088 Nilai fitness individu 2 = 0.0088 Nilai fitness individu 3 = 0.0055

Nilai fitness individu 4 = 0.0053

Nilai fitness individu 5 = 0.0045

Nilai fitness individu 6 = 0.0062

Nilai fitness individu 7 = 0.0050

Nilai fitness individu 8 = 0.0065

Nilai fitness individu 9 = 0.0063

Nilai fitness individu 10 = 0.0054

Nilai fitness individu 11 = 0.0047

Nilai fitness individu 12 = 0.0063

Nilai fitness individu 13 = 0.0052

Nilai fitness individu 14 = 0.0063

Nilai fitness individu 15 = 0.0071

Nilai fitness individu 16 = 0.0044

Nilai fitness individu 17 = 0.0057

Nilai fitness individu 18 = 0.0050

Nilai fitness individu 19 = 0.0077

(32)

Referensi

Dokumen terkait

Selain itu, customer service harus mampu membujuk pelanggan (nasabah) dengan membina hubungan yang baik dengan pelanggan (nasabah) karena merupakan salah satu usaha yang tepat

Berdasarkan analisis masalah di atas, maka solusi yang dapat diusulkan adalah sebuah perangkat lunak pengembangan sistem klasifikasi stadium malaria Plasmodium

Berdasarkan pemantauan dan evaluasi Kementerian/Lembaga, perangkat daerah provinsi, perangkat daerah kabupaten/kota, Administrator KEK, atau Badan Pengusahaan KPBPB*)

a) Penanda hubungan penunjukan yaitu penggunaan kata atau frasa untuk menunjuk atau mengacu pada kata, frasa, atau satuan gramatikal yang lain dalam suatu wacana. Hubungan

Dalam mengelola data yang dibutuhkan oleh sekolah serta berbagai institusi pendidikan lainnya yang memegang peranan penting di dunia pendidikan, Telkom Solution mempunyai

Menteri ESDM, Gubernur atau Bupati/Walikota sesuai dengan kewenangannya berhak memberikan sanksi administratif kepada Badan Usaha Pertambangan Mineral dan

Kesehatan dan Keselamatan Kerja (K3) merupakan suatu keilmuan multidisiplin yang merupakan upaya pemeliharaan dan peningkatan kondisi lingkungan, keselamatan dan kesehatan

Bagian otak ini merupakan pengendalian Intelligence Quotient (IQ) sehingga daya ingat otak kiri bersifat short term memory. Mahasiswa merupakan pebelajar di tingkat perguruan