Pindah Silang dengan Order Crossover Mutasi dengan Swapping Mutation

87 Indlainnya = [Indlainnya Indterbaik+1:uktour]; end if rand probtour, Indterpilih = ItempIndterbaik; else Indterpilih = ItempIndlainnya1+fixranduktour-1; end Variabel yang digunakan dalam TourSelection.m yaitu ukpop banyaknya individu dalam populasi, linearfitness merupakan hasil dari linearfitness.m, uktour tournament size, dan probtour probabilitas turnamen. Itemp merupakan indeks dari individu terpilih dan Ftemp merupakan nilai fitness dari individu yang terpilih tersebut. Individu terbaik dipilih dari individu terpilih yang memiliki nilai fitness terbesar.

4. Pindah Silang dengan Order Crossover

Operator pindah silang dari populasi awal yang sudah terbentuk diimplementasikan dalam fungsi CVRPTWpindahsilang.m berikut ini. function anak = CVRPTWpindahsilangbapak,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,:, 88 sisagenbapak=[sisagenbapak bapakii]; end if ~ismemberibuii,anak2,:, sisagenibu=[sisagenibu ibuii]; end end 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 yang digunakan dalam fungsi CVRPTWpindahsilang.m adalah bapak induk pertama yang terpilih, ibu induk kedua yang terpilih, dan jumgen jumlah gen. Pertama-tama 2 buah bilangan dibangkitkan secara random untuk menentukan titik potong kedua induk yang telah terpilih. 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 tahap ini yaitu dua kromosom baru yang membawa sifat dari induknya.

5. Mutasi dengan Swapping Mutation

Operator mutasi dari populasi awal yang sudah terbentuk diimplementasikan dalam perintah CVRPTWmutasi.m berikut ini. function mutkrom = CVRPTWmutasikromosom,jumgen,pmutasi mutkrom=kromosom; for ii=1:jumgen, if randpmutasi, TM2=1+fixrandjumgen; while TM2==ii, TM2=1+fixrandjumgen; end tempopulasi=mutkromii; mutkromii=mutkromTM2; mutkromTM2=tempopulasi; end 89 end Variabel dari fungsi CVRPTWmutasi.m diatas adalah kromosom anak hasil dari crossover, jumgen jumlah gen, serta pmutasi probabilitas mutasi. Pertama-tama yang dilakukan yaitu membangkitkan bilangan randomdalam 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 diperoleh kromosom baru hasil dari proses mutasi mutkrom.

6. Program Utama