5 BAB 2 LANDASAN TEORI Pada bab ini akan dibicarakan beberapa model penyelesaian problema Knapsack dengan memakai beberapa metode yang telah ada yang akan digunakan pada bab pembahasan. 2. Problema Knapsack dengan Algoritma Branch and Bound. 2... Algoritma Branch and bound Sebagaimana pada algortima runut-balik, algoritma Branch & Bound juga merupakan metode pencarian didalam ruang solusi secara sistematis. Ruang Solusi diorganisasikan ke dalam pohon ruang status. Pembentukan pohon ruang status. Pembentukan pohon ruang status pada algoritma Branch & Bound berbeda dengan pembentukan pohon pada algoritma runut balik. Bila pada algoritma runut-balik ruang solusi dibangun secara Depth-First Search (DFS), maka pada algoritma Branch & Bound ruang solusi dibangun dengan skema Breadth-First Search (BFS). Pada algoritma Branch & Bound, pencarian ke simpul solusi dapat dipercepat dengan memilih simpul hidup berdasarkan nilai ongkos (cost). Setiap simpul hidup diasosiasikan dengan sebuah ongkos yang menyatakan nilai batas (bound). Pada prakteknya, nilai batas untuk setiap simpul umumnya berupa taksiran atau perkiraan. Fungsi heuristik untuk menghitung taksiran nilai tersebut dinyatakan secara umum sebagai : () i = f () i gˆ () i cˆ + yang dalam hal ini, cˆ () i () i = ongkos untuk simpul i f = ongkos untuk mencapai simpul i dari akar gˆ () i = ongkos mencapai simpul tujuan dari simpul akar i (diperkirakan)
6 Nilai ĉ digunakan untuk mengurutkan pencarian. Simpul berikutnya yang dipilih untuk diekspansi adalah simpul yang memiliki ĉ minimum (Simpul-E). Strategi memilih simpul-e seperti ini dinamakan strategi pencarian berdasarkan biaya terkecil (least cost search). Prinsip dari algoritma branch and bound ini adalah :. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar adalah simpul solusi (goal node), maka solusi telah ditemukan. Stop. 2. Jika Q kosong, tidak ada solusi. Stop. 3. Jika Q tidak kosong, pilih dari antrian Q simpul i yang mempunyai ĉ ( i) paling kecil. Jika terdapat beberapa simpul i yang memenuhi, pilih satu secara sembarang. 4. Jika simpul i adalah simpul solusi, berarti solusi sudah ditemukan, stop. Jika simpul i bukan simpul solusi, maka bangkitkan semua anak-anaknya. Jika i tidak mempunyai anak, kembali ke langkah 2. 5. Untuk setiap anak j dari simpul i, ĉ ( j) hitung, dan masukkan semua anakanak tersebut ke dalam antrian Q. 6. Kembali ke langkah 2. 2..2. Pohon Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. Dengan setiap kemungkinan solusi dianggap sebagai sebuah simpul dan akar dari pohon, banyak algoritma yang menggunakan ruang solusi berupa pohon ini karena akan lebih memudahkan dalam penelusuran solusi yang ada berupa simpul-simpul pohon. 2..3. Metode Untuk lebih memahami tahap-tahap penyelesaian problema Knapsack ini, kita ambil contoh persoalan seperti yaitu dimana seorang pedagang keperluan rumah
7 tangga keliling harus memilih barang-barang yang akan dijual setiap harinya dengan batas daya angkut gerobak yang dimilikinya. Untuk mempermudah, kita misalkan pedagang keliling tersebut hanya memiliki 4 jenis barang untuk dijual dengan berat dan keuntungan penjualan yang berbeda-beda untuk tiap jenisnya. Gerobak yang akan dipakai untuk mengangkut barang-barang tersebut hanya mampu menampuk beban seberat 6kg. Berikut merupakan tabel penggambaran berat dan keuntungan yang akan diperoleh untuk tiap penjualan barang tersebut. Barang Berat Keuntungan P/W ke- (W) (P) 2 2 6 2 5 5 3 3 0 50 5 4 5 0 2 Tabel 2. Keterangan berat, keuntungan dan P/W tiap jenis barang Dalam algoritma ini, kita akan menentukan cost dari tiap tiap simpul anak untuk dapat menentukan simpul mana yang kelak akan dibangkitkan yaitu simpul dengan cost tertinggi dalam penelusuran pohon untuk mencapai solusi dari permasalahan ini. Dalam permasalahan ini, kita akan mencari simpul-simpul yang akan membawa kita pada keuntungan terbesar oleh karena itu urutan pembangkitan simpul akan ditentukan oleh simpul mana yang memiliki cost tertinggi. Cost dari tiap simpul akan ditentukan dengan perhitungan : () i = f () i gˆ () i cˆ + yang dalam hal ini, ĉ()= i cost untuk simpul i f ()= i cost untuk sampai ke simpul i dalam hal ini merupakan keuntungan dari simpul akar ke simpul i. ĝ ()= i cost dari simpul i untuk sampai ke simpul tujuan, dalam hal ini dapat diperoleh dengan menggunakan rumus : (P/W) max * daya angkut yang tersisa
8 Pada tahap awal kita akan melakukan perhitungan dengan menggunakan rumus diatas untuk memperoleh batas awal atau akar dari pohon yang juga merupakan simpul pertama. Pada keadaan ini, batas dihitung dengan pemikiran bahwa belum ada satupun barang yang dimasukan kedalam alat pengangkut maka kita dapat memilih 6 sebagai (P/W) terbesar karena belum ada satu barangpun yang dimasukan kedalam alat pengangkut dan kapasitas daya angkutpun masih utuh yaitu seberat 6 kg. cˆ i = f i + gˆ i () () () ĉ()= i keuntungan yang diperoleh sampai disimpul awal + (P/W0max*daya angkut yang tersisa = 0 + 6 * = 96 Maka kita memperoleh 96 batas awal atau cost dari simpul awal. 96 Gambar 2. Akar Pohon Problema Knapsack dengan n-4 Selanjutnya kita akan membangkitkan simpul-simpul anak dari akar pohon yaitu dengan membangkitkan simpul, simpul 2, simpul 3 dan simpul 4 sebagai gambaran dari 4 pilihan barang yang akan dimasukan pertama kali pada alat pengangkut dengan x merupakan keuntungan yang akan diperoleh pada penjualan tiap barang tersebut. Kemudian kita akan menghitung cost dari tiap simpul anak yang hidup dan juga kelayakannya untuk tetap hidup atau harus dibunuh. Dalam hal ini, simpul yang jumlah dari lintasannya tidak bisa lagi dibangkitkan (jika ditambah barang lagi kedalam alat pengangkut maka beratnya akan melebihi daya angkut) akan dibunuh. cˆ cˆ cˆ cˆ ( 2) = 2 + 5* ( 6 2) = 82 () 3 = 5 + 6 *( 6 5) = 8 () 3 = 50 + 6 *( 6 0) = ( 4) = 0 + 6 *( 6 5) = 76 86
9 x = 2 96 x = 0 x = 5 x = 50 2 3 4 5 82 8 86 76 Gambar 2.2 Pohon status problema Knapsack tahap awal Dari simpul-simpul yang telah dibangkitkan dan dihitung cost nya, maka diperoleh bahwa simpul 4 lah yang memiliki cost tertinggi oleh karena itu maka simpul 4 akan di perluas lagi. Simpul 6,7,8 akan dibangkitkan sebagai perluasan dari simpul 4 dengan barang yang mungkin dimasukan kedalam alat pengangkut adalah barang ke,2 dan 4. kemudian kita akan mengkitung cost dari simpul 6,7dan 8. cˆ cˆ cˆ ( 6) = ( 50 + 2) + 3( 6 0 2) = 74 ( 7) = ( 50 + 5) + 6 * ( 6 0 5) = 7 () 8 = ( 50 + 0) + 6 * ( 6 0 5) = 66 Setelah melakukan perhitungan, kita dapat melihat bahwa ketiga simpul yaitu simpul 6,7 dan 8 tidak bias lagi diperluas oleh karena itu ketiga simpul ini akan dibunuh dengan menambahkan keterangan huruf B pada bagian bawah simpulnya. Simpul x = 2 2 96 x = 0 x = 5 x = 50 3 4 5 80 8 86 76 x = 2 x = 5 x = 0 2 2 2 7 8 74 7 66 B B B Gambar 2.3 Pohon status problema Knapsack tahap kedua
0 Gambar 2.4 Pohon status problema Knapsack tahap ketiga Sekarang kita hanya memiliki simpul 2,3 dan 5 sebagai simpul hidup. Diantara simpul-simpul tersebut, simpul 2 lah yang memiliki cost terbesar sehingga selanjutnya akan dilakukan perluasan pada simpul 2 dengan metode yang serupa dan diperoleh simpul 9,0, dan dengan cost 72,74, dan 67. pada simpul 2, dapat dilihat bahwa simpul tersebut tidak dapat lagi diperluas oleh karena itu makan simpul ini akan dibunuh. Gambar 2.5 Pohon status knapsack problem Sekarang kita memiliki simpul 3,5,9 dan sebagai simpul hidup dan diantar simpul-simpul tersebut, simpul 3 lah yang memiliki cost terbesar sehingga simpul tersebut akan diperluas dengan metode yang diterapkan pada perluasan simpul-simpul sebelumnya. Perluasan simpul-simpul hidup terus dilakukan sampai tidak ada lagi simpul hidup yang ditemukan dan dapat diperluas atau semua simpul telah dibunuh. Hal ini dilakukan karena pencarian solusi pada permasalahan ini tidak dapat diketahui
kapan kita harus berhenti karena telah sampai kepada solusi tetapi penyelesaian masalah akan dilakukan dengan membandingkan solusi pada tiap daun. Dalam persoalan ini, akan dibandingkan jumlah keuntungan yang diperoleh pada tiap daun dan solusi permasalah merupakan lintasan yang menuju daun yang memiliki keuntungan terbesar. Dari gambar diatas dapat disimpulkan bahwa solusi permasalahan dibentuk oleh lintasan yang menuju simpul 3 dan 7 dimana keduanya merupakan solusi yang serupa yaitu memilih barang 2 dengan berat 5 kg, keuntungan 5 dan barang 3 dengan berat 0 kg, keuntungan 50 sebagai solusi permasalahan dan akan menghasilkan keuntungan yang maksimal pada penjualan yaitu sebesar 65. 2.2 Problema Knapsack dengan Algoritma Greedy Problema knapsack 0/ pada bab ini akan dibahas dengan menggunakan strategy greedy. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang tampaknya memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum local (local optimum) pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global (global optimum) Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah, pada setiap langkah :. Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip take what you can get now! ) 2. Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Dengan algoritma greedy, persoalan knapsack dapat dipecahkan dengan memasukkan objek satu per satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bias dikeluarkan lagi. Terdapat beberapa strategy greedy yang heuristik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack.
2 2.2.. Greedy by profit Pada setiap langkah, knapsack diisi dengan objek yang mempunyai keuntungan terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu. Pertama kali yang dilakukan adalah secara menurun objek objek berdasarkan profitnya. Kemudian baru diambil satu persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritmanya yaitu : procedure Giby Profit (var dt3 : arraydata;w : real); Var i,j: integer temp: data cw: real tukar:boolean program UrutkanDataBerdasarkanProfit(dt3) While((cW<W)and(i<=length(dt3))do if(dt3[i].w<=w-cw)then cw cw+dt3[i].w dt3[i].status True inc(i) Berdasarkan algoritma diatas maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n) Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w = 2; w = 5; w 3 2 = 0; p p = 2 p = 5 = 50 w4 = 5 p = 0 Dengan kapasitas knapsack W = 6
3 Tabel 2.2 Greedy by profit Properti I w i p i Pi/w i Status 3 0 50 5 Diambil 2 5 5 3 Diambil 6 2 2 Tidak 4 5 0 2 Tidak 2.2.2. Greedy by weight. Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan. Strategi ini mencoba memaksimumkan keuntungan dengan memasukkan sebanyak mungkin objek ke dalam knapsack. Pertama kali yag dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weightnya. Kemudian baru diambil satu persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritma greedy by profit sebagai berikut : procedure Giby Weight (var dt3 : arraydata;w : real); Var i,j: integer temp: data cw: real tukar:boolean program UrutkanDataBerdasarkanWeight(dt3) While((cW<W)and(i<=length(dt3))do if(dt3[i].w<=w-cw)then cw cw+dt3[i].w dt3[i].status True inc(i) Berdasarkan algoritma di atas maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n)
4 w = 2; w = 5; w 3 2 = 0; Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : p = 2 p = 5 p = 50 w4 = 5 p = 0 Dengan kapasitas knapsack W = 6 Tabel 2.3 Greedy by weight Properti I w i p i pi/w i Status 2 5 5 3 Diambil 4 5 0 2 Diambil 6 2 2 Diambil 3 0 50 5 Tidak 2.2.3. Greedy by density Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar. Pertama kali yang dilakukan adalah mencari nilai profit per unit (density) dari tiap-tiap objek. Kemudian objek-objek tersebut diurutkan berdasarkan densitynya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan. Pemilihan objek berdasarkan salah satu dari ketika strategi di atas tidak menjamin akan memberikan solusi optimal. Berbeda dengan strategi brute force yang selalu dapat memberikan hasil yang optimal. Tetapi greedy mengurangi jumlah langkah (kompleksitas) pencarian.
5 procedure GbyPW (var dt3 : arraydata;w : real); Var i,j: integer temp: data cw: real tukar:boolean program UrutkanDataBerdasarkanWeight(dt3) //Mengurutkan data berdasarkan while((cw<w)and(i<=length(dt3))do //nilai density yang terbesar if(dt3[i].w<=w-cw)then //ke nilai yang terkecil cw cw+dt3[i].w dt3[i].status True inc(i) Berdasarkan algoritma diat maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n) Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w = 2; p = 2 w2 = 5; p= 5 w3 = 0; p = 50 w4 = 5 p = 0 Dengan kapasitas knapsack W = 6 Tabel 2.4 Greedy by density Properti I w i p i pi/w i Status 3 0 50 5 Diambil 2 5 5 3 Diambil 4 5 0 2 Tidak 6 2 5 Tidak
6 Maka, hasil akhirnya kita mendapatkan dta seperti di bawah ini: Tabel 2.5 Greedy by density Properti objek Greedy by i w i p i p i /w i profit weight Density 6 2 2 0 0 2 5 5 3 3 0 50 5 0 4 5 0 2 0 0 Total bobot 5 6 5 Total keuntungan 65 37 65 2.3 Problema Knapsack dengan Exhaustive Search Exhaustive Search merupakan salah satu strategi dalam Brute Force atau pendekatan secara langsung pada permasalahannya. Langkah-langkah pencarian solusi 0/ Knapsack secara exhaustive search dirangkum dalam table di bawah ini dengan sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w = 2; w = 5; w 3 2 = 0; p p = 2 p = 5 = 50 w4 = 5 p = 0 Dengan kapasitas knapsack W = 6
7 Tabel 2.6 Exhaustive search Himpunan Bagian {} {} {2} {3} {4} {, 2} {, 3} {, 4} {2, 3} {2, 4} {3, 4} {, 2, 3} {, 2, 4} {, 3, 4} {2, 3, 4} {, 2, 3, 4} Total Bobot (w) 0 6 5 0 5 6 5 0 5 2 6 2 20 26 Total Keuntungan (P) 0 2 5 50 0 27 62 22 65 25 60 tidak layak 37 tidak layak tidak layak tidak layak Himpunan bagian objek yang memberikan keuntungan maksimum adalah {2, 3} dengan total keuntungan adalah 65. Dari keempat cara diatas didapatkan keuntungan optimum yaitu 65 dengan objek yang diambil no. 2 dan 3. Namun, dilihat dari kecepatan atau banyaknya data yang diproses terlihat greedy lebih efisien terutama greedy profit karena tujuan dari knapsack sendiri mencari keuntungan yang maksimal.
8 2.4 Problema Knapsack dengan Algoritma Genetika 2.4.. Algoritma Genetika Algoritma genetika adalah algoritma komputasi yang diinspirasi oleh teori evolusi yang kemudian diadopsi menjadi algoritma komputasi untuk mencari solusi suatu permasalahan dengan cara yang alamiah. Algoritma ini dikembangkan oleh Goldberg yang terinspirasi dari teori evolusi Darwin yang menyatakan bahwa kelangsungan hidup suatu makhluk dipengaruhi oleh aturan yang kuat adalah yang menang. Darwin juga menyatakan bahwa kelangsungan hidup suatu makhluk dapat dipertahankan melalui proses reduksi, crossover, dan mutasi. Sebuah solusi yang dibangkitkan dalam Algoritma Genetika disebut sebagai kromosom, sedangkan kumpulan kromosom-kromosom tersebut disebut sebagai populasi. Sebuah kromosom dibentuk dari komponen komponen penyusun yang disebut sebagai gen dan nilainya dapat berupa bilangan numeric, biner, symbol atau pun karakter tergantung dari permasalahan yang ingin diselesaikan. Kromosomkromosom tersebut akan berevolusi secara berkelanjutan yang disebut dengan generasi. Dlam tiap generasi, kromosom-kromosom tersebut dievaluasi tingkat keberhasilan solusinya terhadap masalah yang ingin diselesaikan (fungsi_objektif) menggunakan ukuran yang disebut fitness. Untuk memilih kromosom yang tetap dipertahankan untuk generasi selanjutnya, dilakukanlah proses seleksi. Kromosom dengan nilai fitness tinggi akan memiliki peluang lebih besar untuk terpilih lagi pada generasi selanjutnya. Offspring merupakan kromosom-kromosom baru yang dibentuk dengan cara melakukan perkawinan antar kromosom dalam satu generasi, atau sering disebut sebagai proses crossover. Jumlah kromosom yang mengalami crossover ditentukan oleh parameter Pcrossover. Mekanisme perubahan susunan unsur penyusun makhluk hidup akibat adanya faktor alam disebut dengan mutasi. Jadi, mutasi direpresentasikan sebagai suatu proses berubahnya satu atau lebih nilai gen dalam kromosom dengan suatu nilai acak. Jumlah gen dalam populasi yang mengalami mutasi ditentukan oleh parameter Permutasi. Setelah beberapa generasi akan dihasilkan kromosomkromosom yang nilai gennya konvergen ke suatu nilai tertentu yang merupakan solusi
9 terbaik yang dihasilkan oleh Algoritma Genetika terhadap permasalahan yang ingin diselesaikan. Algoritma Genetika sangat cocok untuk menyelesaikan masalah optimasi dengan ruang lingkup yang besar, karena Algoritma Genetika selalu bergerak dengan mencari sejumlah solusi sekaligus, selama solusi tersebut masih bersifat feasible (tidak melanggar constraint). Dengan setting parameter yang tepat, diharapkan salah satu dari sekian banyak solusi yang dibangkitkan oleh Algoritma Genetika merupakan solusi optimum global. Akan tetapi, Algoritma Genetika ini juga masih memiliki kelemahan yaitu ketidakpastian untuk menghasilkan solusi optimum global, karena sebagian besar dari algoritma ini berhubungan dengan bilangan random yang bersifat probabilistik. Peranan programer disini adalah memaksimalkan probabilitas dalam menghasilkan solusi optimum global dengan cara membuat suatu skema pengolahan input argumen (fungsi fitness) dan setting parameter yang tepat. 2.4.2. Penerapan Algoritma Genetika dalam Problema Knapsack Berikut adalah pengolahan fitness dan setting parameter yang kami terapkan : Representasi Barang Kami merepresentasikan barang dalam dua array, dimana array pertama berisi weight (berat) barang, dan array kedua berisi profit (keuntungan) barang. Weight : 2 3 4 5 6 7 8 9 0 2 3 4 5 6 7 8 9 20 80 70 00 50 270 20 90 40 80 00 40 70 50 20 90 40 80 50 200 30 Profit : 2 3 4 5 6 7 8 9 0 2 3 4 5 6 7 8 9 20 200 50 90 220 250 80 70 20 90 70 60 0 20 60 220 40 20 0 60 80 Constraint
20 Adapun constraint yang digunakan dalam aplikasi ini adalah weight. Jadi, total berat dari sekumpulan barang yang dipilih tidak boleh melebihi kapasitas Knapsack. Enconding Kromosom Untuk mempresentasikan kromoso, kami menggunakan array dimensi yang berisi atau 0. Misal: Kromosom : 0 0 0 0 0 0 0 0 0 0 0 Art : Barang, 4, 8, 9, 0, 2, 4, 6, 8 diambil Barang 2, 3, 5, 6, 7,, 3, 5, 7, 9, 20 tidak diambil. Termination Conditions Pencarian solusi berhenti jika terdapat > 60% kromosom yang mempunyai nilai fitness maksimum ATAU jumlah lebih besar limit evolusi yang telah ditentukan (jika jumlah evolusi > 000). Fitness Function Pada evolusi di dunia nyata, individu bernilai fitness tinggi akan bertahan hidup. Sedangkan individu bernilai fitnesss rendah akan mati. Pada AG, suatu individu dievaluasi berdasarkan suatu fungsi tertentu sebagai ukuran niali fitnessnya. Pada aplikasi ini, fitness dihitung dengan menjumlahkan profit tiap barang yang masuk ke dalam knapsack. Jika berat total dalam satu kromosom lebih besar daripada kapasitas maksimum knapsack, maka nilai fitnessnya diassign 0. Selain dihitung nilai fitnessnya, dihitung pula berat total dari tiap kromosom untuk kemudian dilakukan pengecekan, dimana apabila ada kromosom yang berat totalnya melebihi kapasitas dari knapsack, maka akan dilakukan pencarian gen dalam kromosom tersebut yang bernilai untuk diganti dengan nilai 0. Hal ini dilakukan terus menerus sampai dipastikan bahwa semua kromosom tidak ada yang melanggar constraint. Untuk mencegah adanya individu yang dominan dalam suatu populasi (dalam pemilihan parent untuk dicrossover), maka diperlukan suatu fungsi Linier Fitness Ranking. Fungsi ini akan menurunkan perbedaan nilai fitness antar individu, sehingga perbedaan antara nilai fitness terbaik dengan nilai fitness terendah dapat diperkecil.
2 Dengan begitu setiap kromosom memiliki kemungkinan untuk terpilih menjadi parent secara lebih merata (lebih adil). Selection Function Aplikasi ini menggunakan metode seleksi Roulette Wheel yang dikombinasikan dengan Elitism. Roulette Wheel merupakan suatu metode pemilihan kromosom untuk dijadikan parent, dimana komosom dengan fitness tinggi mempunyai peluang lebih besar untuk dijadikan parent. Sedangkan Elitism adalah suatu metode yang berguna untuk mempertahankan nilai best fitness suatu generasi agar tidak turun di generasi berikutnya.dalam AG caranya adalah dengan mengcopykan individu terbaik (maxfitness) sebanyak yang dibutuhkan Crossover Crossover merupakan proses mengkombinasikan bitbit dalam satu kromosom dengan kromosom lain yang terpilih sebagai parent. Jumlah kromosom yang mengalami crossover ditentukan oleh parameter Pcrossover. Dimana Pcrossover ini kami assign sebesar 80%, karena kami mengharapkan 80% dari populasi mengalami crossover agar populasi individu menjadi lebih variatif. Mutation Mutation diperlukan untuk mengembalikan informasi bit yang hilang akibat crossover. Mutasi ini dilakukan pada tingkat gen, dan jumlah gen yang dimutasi kami batasi dalam suatu variable Permutasi sebesar 5%. Nilai ini kami rasa cukup karena semakin banyak gen yang dimutasi maka kualitas dari suatu individu bisa mengalami penurunan. Setelah dilakukan mutasi, kembali dicek untuk tiap kromosomnya apakah melanggar constraint atau tidak. Jika ada kromosom yang total beratnya melebihi kapasitas Knapsack, maka secara random, gen yang bernilai akan diganti dengan 0 sampai kromosom tersebut tidak melanggar constraint. Jadi dapat disimpulkan, aplikasi kami akan selalu menemukan solusi.
22 2.4.3. Flowchart Start Inisialisasi populasi pertama secara random Hitung nilai fitness dan volume dari tiap kromosom, cari juga nilai fitness maks Secara random, pilih 2 kromosom untuk dijadikan parent Crossover 2 kromossom terpilih tadi No Lakukan mutasi Pengecekkan coinstraint (kapasitas knapsack) Apakah terdapat > 60% kromosom yang mempunyai nilai fitness maksimum Jumlah evolusi lebih besar limit evolusi yang telah ditentukan?? STOP Yes Gambar 2.6 Flowchart Algoritma Genetika