Membangkitkan Populasi Awal Menghitung Nilai Fitness

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