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 = RouletteWheelukpop,linearfitness;
jumfitness=sumlinearfitness; kumulatiffitness = 0;
RN = rand; ii=1;
while ii=ukpop,
kumulatiffitness = kumulatiffitness+linearfitnessii; if
kumulatiffitnessjumfitnessRN, 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
p indeks dari individu yang terpilih sebagai induk.
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 = CVRPpindahsilangbapak,ibu,jumgen
cp1=1+fixrandjumgen-1; cp2=1+fixrandjumgen-1;
while cp2==cp1,
cp2=1+fixrandjumgen-1; end
if cp1cp2,
cps=cp1; cpd=cp2;
else cps=cp2;
cpd=cp1; end
anak1,cps+1:cpd=ibucps+1:cpd; anak2,cps+1:cpd=bapakcps+1:cpd;
sisagenbapak=[]; sisagenibu=[];
for ii=1:jumgen,
if ~ismemberbapakii,anak1,:,
sisagenbapak=[sisagenbapak bapakii]; end
if ~ismemberibuii,anak2,:,
sisagenibu=[sisagenibu ibuii]; end
end
91
anak1,cpd+1:jumgen=sisagenbapak1:jumgen-cpd; anak1,1:cps=sisagenbapak1+jumgen-cpd:lengthsisagenbapak;
anak2,cpd+1:jumgen=sisagenibu1:jumgen-cpd; anak2,1:cps=sisagenibu1+jumgen-cpd:lengthsisagenibu;
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