BAB IV PEMBAHASAN
4.1 Prosedur Algoritma Genetik Untuk Permasalahan Job Shop
Prosedur Algoritma Genetik yang digunakan dalam menyelesaikan permasalahan Job Shop Scheduling adalah sebagai berikut :
Prosedur GA secara ringkas dapat dilihat pada Gambar 4.1. Misalkan P(t) dan C(t) masing-masing adalah induk dan anak pada generasi ke-t dan max_gen merupakan iterasi maksimum yang ditentukan.
Gambar 4.1 Prosedur untuk Genetic Algorithm Prosedur untuk Genetic Algorithm
begin t β 0; parameter setting; inisialisasi P(t); evaluasi P(t); while (t β max_gen) do
operasi genetik pada P(t) untuk mendapatkan C(t); pengaktifan schedule C(t);
evaluasi C(t);
pilih P(t+1) dari P(t) dan C(t);
t β t + 1;
end end
ADLN Perpustakaan Universitas Airlangga
Terdapat beberapa parameter yang digunakan dalam GA untuk menyelesaikan JSSP. Parameter tersebut antara lain jumlah job (n), jumlah mesin (m), urutan operasi mesin untuk tiap-tiap job (seqMachine), waktu proses untuk setiap operasi (processTime), duedate untuk setiap job (duedate), ukuran populasi (pop_size), batas derajat kesamaan kromosom awal (degree), probabilitas crossover (Pc), probabilitas mutasi (Pm), ukuran individu yang akan diturnamenkan (tour), dan maksimum generasi (max_gen). Prosedur penentuan parameter dapat dilihat pada Gambar 4.2.
Gambar 4.2 Prosedur untuk Parameter Setting
Flowchart penyelesaian dengan menggunakan GA dapat dilihat pada Lampiran 1.
Langkah I : Generate Populasi Awal
Populasi awal merupakan kumpulan dari individu atau kromosom yang dibangkitkan secara random. Kromosom tersebut merupakan solusi urutan scheduling dari permasalahan job shop.
Generate populasi awal merupakan proses pembangkitan sejumlah kromosom secara random dalam suatu ruang pencarian yaitu berupa kode urutan
Prosedur untuk Parameter Setting begin
jumlah job : n;
jumlah mesin : m;
urutan operasi mesin : seqMachine;
waktu proses : processTime;
duedate : duedate;
ukuran populasi : pop_size;
degree of similarity : degree; probabilitas crossover : Pc; probabilitas mutasi : Pm;
ukuran turnamen : tour;
maksimum iterasi : max_gen;
39
job yang merupakan himpunan solusi feasible. Sejumlah kromosom yang dibangkitkan akan dibentuk menjadi sebuah populasi pada masing-masing iterasi atau generasi dan diproses hingga mencapai max_gen yang ditentukan.
Pengkodean kromosom diberikan dalam bentuk permutasi dengan pengulangan (permutation with repetition) dari job-job sebanyak perkalian jumlah job yang dikerjakan dengan banyak mesin. Prosedur yang digunakan untuk melakukan generate populasi awal dapat dilihat pada Gambar 4.3. Misal ind adalah banyak kromosom yang telah dibangkitkan pada saat i dan degij
merupakan derajat kesamaan dari kromosom ke-i yang baru dibangkitkan dengan kromosom ke-j yang sudah dibangkitkan terlebih dahulu.
Gambar 4.3 Prosedur untuk Inisialisasi
Pada prosedur generate populasi awal terdapat langkah untuk generate sebuah kromosom. Prosedur generate kromosom dapat dilihat pada Gambar 4.4.
Gambar 4.4 Prosedur untuk Generate Kromosom
Prosedur untuk Inisialisasi π π
begin
i β 0;
while (i <pop_size ) do
j β 0;
membangkitkan sebuah kromosom(); pengaktifan schedule ();
if (i β 1) then ind = i; while ( j <ind) do
menghitung derajat kesamaan antar individu; if ( degij >degree) then i = i β 1; end
end i β i + 1;
end end
Prosedur untuk Generate Kromosom begin
generate urutan job (); menentukan operasi job (); menentukan urutan mesin (); end
ADLN Perpustakaan Universitas Airlangga
Prosedur generate kromosom dilakukan dengan cara membangkitkan kode urutan job secara random dengan menggunakan pengkodean permutasi yang mewakili gen-gen pembentuk kromosom. Gambar 4.5 menunjukkan prosedur pembentukan kode urutan job. Misalkan untuk jumlah gen disimbolkan dengan genes, jobk merupakan kode job ke-k, random (n-1) merupakan proses random bilangan integer antara 0 sampai (n-1), dan num, a, temp adalah variabel bantuan.
Gambar 4.5 Prosedur untuk Generate Urutan Job
Setelah didapatkan urutan dari job, langkah selanjutnya yang dilakukan adalah menentukan urutan operasi dari masing-masing job. Prosedur yang digunakan untuk menentukan urutan operasi dapat dilihat pada Gambar 4.6. Misalkan operationk menunjukkan operasi pada urutan job atau gen ke-k, jobOperjobk merupakan variable bantuan untuk menentukan jumlah operasi.
Gambar 4.6 Prosedur untuk Menentukan Operasi Job Prosedur untuk Generate Urutan Job
begin k β 0; genesβ n Γ m; num() β 0: n ; while (k<genes) do temp = random (n-1); a = numtemp +1; if ( a β€ m ) then jobk = temp;
numtemp = a; k β k + 1; end end
end
Prosedur untuk Menentukan Operasi Job begin k β 0; jobOper() β 0: m ; while (k <genes ) do operationk = πππππππππππ; πππππππππππ=πππππππππππ+ 1; k β k+ 1; end end
41
Setelah didapatkan urutan opebbrasi masing-masing job, selanjutnya ditentukan mesin yang digunakan dan waktu proses (Processing Time) untuk masing-masing job. Prosedur tersebut dapat dilihat pada Gambar 4.7. Misalkan machinek menunjukkan mesin yang digunakan untuk gen ke-k, dan karena waktu pemrosesan menggunakan tiga bilangan fuzzy maka processingTkl menunjukkan bilangan fuzzy ke-l untuk waktu pemrosesan gen ke-k, processTime menunjukkan waktu pemrosesan .
Gambar 4.7 Prosedur untuk Menentukan Urutan Mesin
Setelah pembangkitan kromosom selesai maka kromosom-kromosom yang mewakili sebuah schedule tersebut akan diaktifkan menggunakan algoritma Giffler-Thompson. Prosedur pengaktifan schedule dapat dilihat pada Gambar 4.8.
Gambar 4.8 Prosedur untuk Pengaktifan Schedule
Langkah awal yang dilakukan untuk mengaktifkan schedule adalah dengan menghitung waktu penyelesaian job pada masing-masing kromosom. Misalkan timeJobij dan timeMachineij masing-masing adalah waktu penyelesaian ke-j untuk
Prosedur untuk Pengaktifan Schedule begin
menghitung completion time dan delay time(); pengaktifan();
end
Prosedur untuk Menetukan Urutan Mesin begin k β 0; while (k < genes ) do πππβππππ=π πππππβπππππππππππππ‘ππππ; for l β 0to l < 3do ππππππ π ππππππ=ππππππ π ππππππππππππππ‘πππππ; end k β k + 1; end end
ADLN Perpustakaan Universitas Airlangga
job dan mesin pada gen ke-i, startingij merupakan waktu mulai ke-j untuk job pada gen ke-i dan delayij merupakan waktu luang ke-j pada gen ke-i. Prosedur untuk menghitung waktu penyelesaian dan waktu luang dapat dilihat pada Gambar 4.9.
Gambar 4.9 Prosedur untuk Menghitung Completion Time dan Delay Time Setelah terbentuk schedule untuk penghitungan waktu penyelesaian, selanjutnya adalah melakukan pengaktifan schedule dengan menggunakan informasi waktu luang yang telah didapat sebelumnya. Misalkan genes adalah jumlah gen, machinei dan jobi merupakan mesin dan job yang berproses pada gen ke-i, startingij dan completeij merupakan waktu mulai dan selesai ke-j untuk job pada gen ke-i, dan delayij merupakan waktu luang ke-j pada gen ke-i. Prosedur untuk mengaktifkan schedule dapat dilihat pada Gambar 4.10.
Prosedur untuk Menghitung Completion Time dan Delay Time begin i β 0; j β 0; timeJob β 0,π, 3 ; timeMachine β 0:π, 3 ; delayβ (0: genes, 3); while (i < genes ) do for j β 0to j < 3 do if (π‘ππππ½πππππππ<π‘ππππππβππππππβπππππ) then π π‘πππ‘πππππ =π‘ππππππβππππππβπππππ; else π π‘πππ‘πππππ =π‘ππππ½πππππππ; πππππ¦ππ =π‘ππππ½πππππππβπ‘ππππππβππππππβπππππ; end π‘ππππππβππππππβπππππ = π π‘πππ‘πππππ+ππππππ π ππππππ π‘ππππ½πππππππ=π‘ππππππβππππππβπππππ; end i β i + 1; end end
43
Gambar 4.10 Prosedur untuk Pengaktifan
Setelah individu yang dibangkitkan sesuai dengan pop_size maka langkah selanjutnya yang dilakukan yaitu mengevaluasi setiap individu.
Langkah II : Evaluasi
Proses evaluasi merupakan proses penghitungan nilai fungsi tujuan yang terdiri dari tiga fungsi yang masing-masing dinyatakan dengan z1, z2, z3 untuk masing-masing kromosom. Fungsi-fungsi tersebut kemudian dinyatakan dengan fungsi fitness (F).
Prosedur untuk Pengaktifan begin
a = (0:genes); c = (0: genes);
for iβ0 to i <genes do for jβ0 to j< 3 do if ( delayij β 0) then ai = ai+1; end if (ai= 3) then delayM = machinei; b = i; break end end for kβ (b+1) to k <genes do
if ( machinek= delayM) then if ( operationk= 0) then
for lβ0 to l< 3 do
if (delaybl β₯ processingTkl) then ck = ck +1; end
if (ck=3) then d = k; break end
end
else if ( operationk > 0) then for iiβ 0 to ii <genes do
if ( jobii= jobk && operationii= ( operationkβ1)) then for jjβ0 to jj< 3 do
if ( startingbjj - completeiij β₯ processingTkjj) thenck=ck +1; end
if (ck =3) then d=k; break end
end end
end reschedule jobd;
end
ADLN Perpustakaan Universitas Airlangga
Prosedur untuk Evaluasi z1
begin
i β 0; j β 0; k β 0; sum β 0;
for iβ0 to i<pop_sizedo
for jβ0 to j<n do
menentukan grafik completion time masing-masing job; menentukan grafik duedate masing-masing job;
menentukan daerah pertemuan antara completion time dan duedate; menghitung area pertemuan, misalkan dengan πΆππβ©π·ππ;
menghitung area completion time, misalkan dengan πΆππ;
agreementIndexij =C ijβ©D ij C ij ;
sum = sum + agreementIndexij ;end
π§1π =sumn ;end end
Misalkan pop_size adalah banyaknya populasi, n adalah banyaknya job, completion time adalah waktu penyelesaian untuk masing-masing job, duedate adalah waktu tenggat untuk masing-masing job, β© merupakan irisan dari completion time dengan duedate, agreementIndexij menyatakan nilai agreement indexjob j (j = 0, 1, β¦., n) dari kromosom ke-i (i = 0, 1, β¦., pop_size), dan 1 merupakan nilai fungsi tujuan pertama yaitu rata-rata dari agreement index kromosom ke-i. Prosedur evaluasi fungsi z1 dapat dilihat pada Gambar 4.11.
Gambar 4.11 Prosedur untuk Evaluasiz1
Misalkan merupakan nilai fungsi tujuan kedua yaitu minimal dari agreement index kromosom ke-i. Prosedur untuk menentukan nilai fungsi tujuan kedua dapat dilihat pada Gambar 4.12.
Gambar 4.12 Prosedur untuk Evaluasiz
Prosedur untuk Evaluasi z2
begin
for i=0 to i<pop_size do for j=0 to j<ndo
π§ π=min( agreementIndexij); end
end end
45
Misalkan completionTimeij menyatakan nilai waktu penyelesaian job j (j = 0, 1, β¦., n) pada keseluruhan mesin dari kromosom ke-i (i = 0, 1, β¦., pop_size), dan merupakan nilai fungsi tujuan ketiga yaitu waktu penyelesaian maksimal job-job pada kromosom ke-i. Prosedur untuk menentukan nilai fungsi tujuan ketiga dapat dilihat pada Gambar 4.13.
Gambar 4.13 Prosedur untuk Evaluasi z3
Setelah didapatkan nilai dari ketiga fungsi tujuan untuk masing-masing kromosom, maka selanjutnya ditentukan nilai fitness setiap kromosom. Misalkan dan 1 masing-masing menyatakan nilai fungsi tujuan ke-i (i = 0, 1, 2) yang terendah dan tertingi, degreeMemberkl merupakan derajat kenggotaan fuzzy untuk fungsi tujuan ke-l (l = 0, 1, 2) pada kromosom ke-k (k = 0, 1, .., pop_size), dan fa
merupakan nilai fitness dari kromosom ke-a (a = 0, 1, .., pop_size). Prosedur untuk menentukan nilai fitness dapat dilihat pada Gambar 4.14.
Gambar 4.14 Prosedur untuk Menghitung Fitness
Prosedur untuk Evaluasi z3
begin
for i = 0 to i < pop_size do
for j=0 to j<n do π§ π=max(completionTimeij); end
end end
Prosedur untuk Menghitung Fitness begin
for i=0 to i<3 do
for j=0 to j< pop_size do π§π=min (π§ππ); π§π1=max (π§ππ); end end
for k=0 to k< pop_size do
for l=0 to l<3 do calculate degreeMemberkl ; end
end
for a=0 to a< pop_size do
for b=0 to b<3 do fa = min(degreeMemberab); end
end end
ADLN Perpustakaan Universitas Airlangga
Langkah selanjutnya yaitu operasi genetik untuk memperoleh keturunan atau anak. Prosedur yang dilakukan untuk melakukan operasi genetik dapat dilihat pada Gambar 4.15. Misalkan P(t) dan C(t) masing-masing merupakan induk dan anak pada proses operasi genetik pada generasi ke-t.
Gambar 4.15 Prosedur Operasi Genetik untuk Mendapatkan
Langkah III : Seleksi
Tahapan seleksi merupakan tahapan untuk menyeleksi atau menentukan calon induk pada proses crossover dan mutasi pada kromosom-kromosom dalam satu populasi. Seleksi yang digunakan adalah seleksi tournament. Prosedur seleksi dapat dilihat pada Gambar 4.16.
Misalkan tour menyatakan banyanknya kromosom random yang akan diturnamenkan, rij (i = 0, 1, .., pop_size dan j = 0, 1, .., tour) merupakan angka random yang membangkitkan kromosom ke-rij untuk diturnamenkan, adalah nilai fitness dari kromosom ke-ril (l = 0, 1, .., tour), candidatei adalah calon induk ke-i , dan merupakan kromosom ke-ai atau kromosom terpilih.
Prosedur Operasi Genetik P(t) untuk Mendapatkan C(t)
begin
seleksi turnamen();
partial schedule exchange crossover(); swap mutation ();
47
Gambar 4.16 Prosedur untuk Seleksi Turnamen
Proses tournament diatas dilakukan sebanyak dua kali untuk memperoleh calon induk pada proses crossover dan mutasi. Setelah proses tersebut selesai maka langkah selanjutnya yang dilakukan yaitu seleksi induk untuk proses crossover dan mutasi.
1. Seleksi Crossover
Tahapan ini dilakukan untuk mendapatkan induk yang akan di crossover dari calon induk yang telah didapat dari hasil seleksi. Proses ini dilakukan dengan cara mengenerate bilangan random dengan interval [0,1] yang dinyatakan dengan rc dan c = 1, 2, β¦, pop_size. Pemilihan induk yang akan di crossover harus memenuhi ketentuan sebagai berikut :
Jika rc < pc, maka kromosom ke-c tersebut akan terpilih menjadi induk yang akan mengalami crossover. Prosedur untuk seleksi crossover dapat dilihat pada Gambar 4.17. Misalkan rc adalah bilangan random ke-c, Pc adalah probabilitas crossover, dan vc adalah kromosom ke-c.
Prosedur untuk Seleksi Turnamen begin
maks = (0: pop_size);
a = (0: pop_size); for i=0 to i< pop_size do
for j=0 to j< tourdo rij = random (pop_size-1); end for l=0 to l < tour do if (maksl<ππππ)then maksl=ππππ; ai= rij ; end candidatei = π£ππ; end end
ADLN Perpustakaan Universitas Airlangga
Gambar 4.17 Prosedur untuk SeleksiCrossover 2. Seleksi Mutasi
Seleksi induk mutasi dilakukan seperti pada seleksi crossover. Misalkan bilangan random yang digenerate dinyatakan dengan rq dan q = 1, 2, β¦, pop_size. Pemilihan induk yang akan di mutasi harus memenuhi ketentuan sebagai berikut :
Jika rq < pm, maka kromosom ke-q tersebut akan terpilih menjadi induk yang akan mengalami mutasi. Prosedur untuk seleksi mutasidapat dilihat pada Gambar 4.18. Misal rq adalah random ke-q, Pm adalah probabilitas mutasi, dan vq adalah kromosom ke-q.
Gambar 4.18 Prosedur untuk SeleksiMutasi
Dari proses diatas telah diperoleh induk yang akan mengalami crossover dan langkah selanjutnya yang dilakukan yaitu mengcrossover induk tersebut.
Prosedur untuk Seleksi Crossover begin
c β 0; crossover β 0;
while (c<pop_size) do rcο random [0,1];
if (rc<Pc) then
pilih vcsebagai induk crossover;
crossover β crossover + 1;
end c β c + 1;
end end
Prosedur untuk Seleksi Mutasi begin
q β 0; mutation β 0;
while (q < pop_size) do
rqο random [0,1]; if (rq<Pm) then
pilih vqsebagai induk mutation;
mutation β mutation + 1;
end q β q + 1;
end end
49
Langkah IV : Crossover
Setelah diperoleh induk yang akan di crossover, proses selanjutnya yang dilakukan adalah mengcrossover induk-induk tersebut menggunakan partial schedule exchange crossover. Jika dari seleksi crossover dihasilkan induk crossover yang jumlahnya gasal, maka induk pada urutan terakhir dibuang sehingga jumlah induk crossover menjadi genap. Selanjutnya induk tersebut akan mengalami crossover dengan cara mengambil dua induk yang akan dicrossover untuk menghasilkan dua anak. Proses tersebut dilakukan sampai semua induk mengalami crossover.
Jika pada proses seleksi crossover tidak diperoleh induk crossover maka proses crossover tidak dilakukan. Prosedur crossover menggunakan partial schedule exchange crossover dapat dilihat pada Gambar 4.19.
Gambar 4.19 Prosedur untuk Partial Schedule Exchange Crossover
Prosedur untuk menentukan partial schedule dari induk ke-0 dapat dilihat pada Gambar 4.20. Misalkan genes menyatakan jumlah gen pada satu kromosom, pos1 adalah posisi gen yang dibangkitkan secara acak, n1 adalah banyaknya partial schedule 0, parentC0j merupakan gen ke-j dari induk crossover ke-0, dan partial0ii merupakan partial schedule 0 ke-ii.
Prosedur untuk Partial Schedule Exchange Crossover begin
menentukan partial schedule dari parent 0(); menentukan partial schedule dari parent1(); menentukan exceeded dan missed genes (); menentukan offspring ();
end
ADLN Perpustakaan Universitas Airlangga
Gambar 4.20 Prosedur untuk Menetukan Partial Schedule dari Parent 0 Sedangkan prosedur untuk menentukan partial schedule dari induk ke-1 dapat dilihat pada Gambar 4.21. Misalkan genes menyatakan jumlah gen pada satu kromosom, pos1 adalah posisi gen yang diperoleh pada induk crossover pertama, pos2 adalah posisi gen yang bersesuaian dengan pos1, 2 adalah banyaknya partial schedule 1, parentC1i merupakan gen ke-i dari induk crossover ke-1, dan partial1jj merupakan partial schedule 1 ke-jj.
Gambar 4.21 Prosedur untuk Menetukan Partial Schedule dari Parent 1
Prosedur untuk Menetukan Partial Schedule dari Parent 0 begin
n1 β 0;
pos1= random (genes-1);
for j β (pos1 + 1) to j <genesdo n1++;
if (ππππππ‘πΆ0π=ππππππ‘πΆ0πππ 1) then break end
end ii β 0;
for k β pos1 to k β€ (pos1 + n1) do
partial0ii = parentC0k; ii β ii + 1;
end end
Prosedur untuk Menetukan Partial Schedule dari Parent 1 begin for i β 0to i <genesdo if(ππππππ‘πΆ1π=ππππππ‘πΆ0πππ 1) then pos2 = i; break end end n2 β 0;
for j βpos2 to j <genes don2++;
if(ππππππ‘πΆ1π=ππππππ‘πΆ1πππ ) then break
end end
jj β 0;
for k β pos2 to k β€(pos2 + n2) do
partial1jj = parentC1k; jj β jj + 1;
end end
51
Setelah diperoleh masing-masing partial schedule, maka langkah selanjutnya adalah menukarkan partial schedule1 ke calon anak ke-0 dan partial schedule0 ke calon anak ke-1 dan menentukan gen kurang dan berlebih pada masing-masing calon anak. Prosedur untuk menentukan gen kurang dan lebih dapat dilihat pada Gambar 4.22. Misalkan ii dan jj merupakan jumlah partial schedule 0 dan jumlah partial schedule 1, partial0i dan partial1j merupakan partial schedule 0 ke-i dan partial schedule 1 ke-j, missed0i dan missed1i
merupakan gen kurang ke-i pada calon anak 0 dan calon anak 1, dan exceed0i dan exceed1i merupakan gen lebih ke-i pada calon anak 0 dan calon anak 1.
Gambar 4.22 Prosedur untuk Menentukan Exceeded dan Missed Genes Prosedur untuk Menentukan Exceeded dan Missed Genes
begin
for i β 0 to i <ππdo
for j β 0to j <ππdo
if (partial0i = partial1j) then
partial0i = partial1j= -1; break end end n3= 0; n4 = 0; for k β 0to k <ππdo if (partial0kβ -1) then n3++; end for l β 0to l <ππdo if (partial1lβ -1) then n4++; end i2 = 0; if (n3!=0) then for j β 0to j <ππdo
if (partial0jβ -1) then missed0i2 = exceed1i2 = partial0j; i2++; end
i3 = 0;
if (n3!=0) then
for k β 0to k <ππdo
if (partial1kβ -1) then missed1i3 = exceed0i3 = partial1k ; i3++; end
end
ADLN Perpustakaan Universitas Airlangga
Langkah selanjutnya yaitu membentuk offspring crossover. Prosedur pembentukan offspring dapat dilihat pada Gambar 4.23. Misalkan offspringC0 dan offspringC1 merupakan anak hasil crossover ke-0 dan anak hasil crossover ke-1.
Gambar 4.23 Prosedur untuk Menentukan Offspring
Setelah melakukan proses crossover, langkah selanjutnya yang dilakukan yaitu proses mutasi induk yang telah diperoleh pada proses seleksi mutasi.
Langkah V : Mutasi
Langkah selanjutnya yaitu melakukan proses mutasi pada induk yang terpilih pada seleksi mutasi. Mutasi merupakan proses perubahan sifat kromosom secara acak sehingga dihasilkan struktur kromosom yang baru. Jika dari seleksi mutasi tidak diperoleh induk mutasi maka proses mutasi tidak dilakukan. Prosedur mutasi menggunakan swap mutation dapat dilihat pada Gambar 4.24.
Misalkan pos1 dan pos2 adalah dua posisi gen yang dibangkitkan secara acak, mutation adalah banyak kromosom yang akan mengalami mutasi, parentm merupakan induk yang akan di mutasi, offspringmipos1 dan offspringmipos2 masing-masing merupakan gen pada posisi pos1 dan pos2 individu atau anak ke-i.
Prosedur untuk Menentukan Offspring begin
for i β 0 to i <genesdo
offspringC0 = parent0i ;
offspringC1 = parent1i ; end
hapus partial schedule 0 dari offspringC0; tambahkan partial schedule 1 ke offspringC0; hapus partial schedule 1 dari offspringC1; tambahkan partial schedule 0 ke offspringC1; hapus exceed gen pada offspringC0dan offspringC1; tambahkan missed gen pada offspringC0dan offspringC1; end
53
Gambar 4.24 Prosedur untuk Swap Mutation
Setelah individu baru hasil proses crossover dan mutasi diperoleh, maka dibentuk populasi baru yang akan diproses pada iterasi selanjuntnya.
Langkah VI : Pembentukan Populasi Baru
Untuk membentuk populasi baru, langkah awalnya yaitu mengumpulkan populasi awal, anak hasil crossover dan anak hasil mutasi. Kemudian kromosom tersebut diurutkan sesuai fitnessnya. Kromosom yang terbaik dipilih sebanyak pop_size untuk membentuk populasi baru. Sedangkan kromosom yang tidak terpilih akan dikeluarkan dari populasi. Prosedur untuk membentuk populasi baru dapat dilihat dalam Gambar 4.25.
Gambar 4.25 Prosedur untuk Membentuk Populasi Baru
Prosedur untuk Swap Mutation begin
i β 0;
pos1 = random (genes-1);
pos2 = random (genes-1);
while (pos1= pos2) do pos2 = random (genes-1);
end
offspringm β parentm; while (i<mutation ) do
temp = offspringmipos1;
offspringmipos1 = offspringmipos2;
offspringmipos2 = temp;
i β i + 1;
end end
Prosedur untuk Membentuk Populasi Baru begin
menggabungkan kromosom; mengurutkan kromosom;
mengambil kromosom terbaik sebanyak pop_size; end
ADLN Perpustakaan Universitas Airlangga
Dalam pembentukan populasi baru, langkah pertama yang dilakukan yaitu menggabungkan individu atau kromosom awal dan anak hasil crossover dan mutasi. Misalkan sumOffS merupakan jumlah offspring hasil crossover dan mutasi, sumChrom merupakan jumlah kromosom dari populasi awal dan offspring, mutation dan crossover merupakan banyanknya offspring hasil crossover dan mutasi, offspringci dan offspringmj masing-masing menyatakan offspring hasil crossover ke-i dan mutasi ke-j, chromk merupakan kromosom ke-k dari populasi awal dan nChromk merupakan kromosom ke-k dari populasi gabungan. Prosedur penggabungan populasi awal dengan offspring hasil crossover dan mutasi dapat dilihat pada Gambar 4.26.
Gambar 4.26 Prosedur untuk Menggabungkan Kromosom
Langkah kedua yang dilakukan yaitu mengurutkan seluruh kromosom gabungan berdasarkan nilai fitness masing-masing kromosom. Prosedur pengurutan kromosom dapat dilihat pada Gambar 4.27. Misalkan fitnessi dan fitnessj adalah nilai fitness untuk kromosom ke-i dan ke-j.
Prosedur untuk Menggabungkan Kromosom begin
j β 0;k β 0;l β 0;
sumOffS βmutation + crossover;
sumChrom β pop_size +sumOffS;
for i β 0to i <sumOffSdo
if (i<crossover) then sumO = offspringci;
else sumOi= offspringmj ;
j β j + 1;
end end
for k β 0 to k < sumChromdo
if (k<pop_size) then nChromk = chromk;
else nChromk = sumOl;
l β l + 1;
end end end
55
Gambar 4.27 Prosedur untuk Mengurutkan Kromosom
Setelah diurutkan, langkah terakhir yaitu kromosom-kromosom gabungan tersebut dipilih yang terbaik sebanyak pop_size untuk membentuk populasi baru. Prosedur pemilihan kromosom untuk populasi baru dapat dilihat pada Gambar 4.28. Misalkan newChromi adalah kromosom ke-i pada populasi baru.
Gambar 4.28 Prosedur untuk Mengambil Kromosom Terbaik
Setelah diperoleh individu pada populasi baru, maka selanjutnya populasi baru tersebut akan diuji.
Prosedur untuk Mengurutkan Kromosom begin for iβ 0to i <(sumChrom-1) do for j βi + 1 to j < sumChrom do if ( fitnessi < fitnessj) do temp = fitnessi; fitnessi = fitnessj; fitnessj = temp; temp = nChromi; nChromi = nChromj; nChromj = temp; end end end
Prosedur untuk Mengambil Kromosom Terbaik begin
for iβ 0to i <pop_size do
newChromi = nChromi ; end
end
ADLN Perpustakaan Universitas Airlangga
Langkah VII : Menguji Populasi Baru
Pada langkah ini dilakukan proses pengujian untuk menguji populasi baru dengan kriteria yang telah ditentukan yaitu max_gen. Jika kriteria tersebut dipenuhi, maka proses iterasi berhenti dan diperoleh solusi terbaik dari populasi terakhir tersebut. Sebaliknya, jika tidak dipenuhi, maka kembali ke Langkah III, dan populasi baru pada Langkah VI akan dijadikan populasi awal pada generasi selanjutnya. Prosedur pengujian dapat dilihat pada Gambar 4.29.