84
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 = CVRPTWInisialisasiPopulasiukpop,jumgen
for ii=1:ukpop
[X,Y] = sortrand1,jumgen; Populasiii,: = Y;
end
Perintah rand1,jumgen menyatakan pembangkitan matriks berukuran 1 x jumgen yang berisi bilangan random dalam interval [0,1. Pada perintah
[X, Y] = sortrand1,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 =
fitnesscvrptwkromosom,jumgen,waktuagen,waktudepot jalur=waktudepotkromosom1+waktudepotkromosomjumgen;
for ii=1:jumgen-1
85
jalur=jalur+waktuagenkromosomii,kromosomii+1; end
fitness=1jalur;
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
1jalur.
function LFR = linearfitnessrankingukpop,fitness,maxF,minF
[s,h] = sortfitness; for
rr=1:ukpop, LFRhukpop-rr+1=maxF-maxF-minFrr-1ukpop-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 nilai-
nilai fitness yang terlalu kecil pada semua individu dalam populasi.
3. Seleksi