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 1 6 12 2
1 2 5 15 3
1 1
1 3 10 50 5
1 1
4 5 10 2 1
Total bobot 15
16 15
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
01 Knapsack secara exhaustive search dirangkum dalam table di bawah ini dengan sebagai data pengujian diberikan data-data untuk w Weight dan P Profit :
Dengan kapasitas knapsack W = 16 10
5 50
; 10
15 ;
5 12
; 2
1 4
1 3
1 2
1 1
= =
= =
= =
= =
p w
p w
p w
p w
Universitas Sumatera Utara
Tabel 2.6 Exhaustive search
Himpunan Bagian
Total Bobot w
Total Keuntungan P
{} {1}
{2} {3}
{4} {1, 2}
{1, 3} {1, 4}
{2, 3} {2, 4}
{3, 4} {1, 2, 3}
{1, 2, 4} {1, 3, 4}
{2, 3, 4} {1, 2, 3, 4}
6 5
10 5
11 16
11
15
10 15
21 16
21 20
26 12
15 50
10 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.
Universitas Sumatera Utara
2.4 Problema Knapsack dengan Algoritma Genetika 2.4.1. 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. Kromosom-
kromosom 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 kromosom- kromosom yang nilai gennya konvergen ke suatu nilai tertentu yang merupakan solusi
Universitas Sumatera Utara
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 :
1 2 3 4 5 6 7 8 9 10 11
12 13
14 15 16 17 18
19 20
180 170 100 150 270 120 190 140 180 100 140 70 150 120 190 140 80 150 200 130
Profit : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
200 150 90 220 250 80 170 120 190 70 160 110 120 160 220 140 120 110 160 180
• Constraint
Universitas Sumatera Utara
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 1 dimensi yang berisi 1 atau 0.
Misal: Kromosom
: 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 Art
: Barang 1, 4, 8, 9, 10, 12, 14, 16, 18 diambil Barang 2, 3, 5, 6, 7, 11, 13, 15, 17, 19, 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 1000. •
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 fitness nya. 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 1 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.
Universitas Sumatera Utara
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 bit bit 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 1 akan diganti dengan 0
sampai kromosom tersebut tidak melanggar constraint. Jadi dapat disimpulkan, aplikasi kami akan selalu menemukan solusi.
Universitas Sumatera Utara
2.4.3. Flowchart
Gambar 2.6 Flowchart Algoritma Genetika
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
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 No
Yes
Universitas Sumatera Utara
BAB 3 PEMBAHASAN
3.1. Pendekatan Basis
Sebelum kita memproses kasus Problema Knapsack, terlebih dahulu kita membahas ide dasarnya adalah pandang Problema Program Integer PI :
Minimum x
c P
T
= 1
Kendala b
Ax ≤
2 ≥
x 3
J j
berbagai untuk
cacah ∈
j
x 4
Komponen vektor
k B
x layak basis terhadap PI yang diselesaikan sebagai
problema kontinu dapat ditulis sebagai :
m n
N m
n k
j N
kj i
N ki
k k
B
x x
x x
− −
∗ ∗
− −
− −
− =
,
... ...
α α
α β
5 Catatan bahwa, pernyataan ini dapat ditemukan pada Tabel Akhir Simpleks.
Andaikan
k B
x adalah sebuah variabel integer dan kita asumsikan bahwa
k
β dipartisi menjadi komponen integer dan sebagian kecil komponen telah diberikan
yaitu:
[ ]
1 ,
≤ ≤
+ =
k k
k k
f f
β β
6 andaikan kita ingin menaikkan
k B
x ke integer terdekat,
[ ]
1 +
β . Ide dasar dari
solusi yang baik kita boleh menaikkan variabel non basis, misalnya
∗ j
N
x diatas
batasannya dari Nol, asalkan
∗ kj
α yaitu salah satu elemen vektor
∗ kj
α adalah negatif. Ambil
∗
∆
j
dijumlahkan dari bukan variabel
∗ j
N
x . Sedemikian hingga nilai
numerik dari skalar
k B
x adalah integer.
∗
∆
j
dapat ditunjukkan sebagai :
Universitas Sumatera Utara
∗ ∗
− −
= ∆
kj k
j
f α
1 7
ketika hasil bukan basis tetap Nol. Dapat dilihat setelah mensubstistusikan ke persamaan 7 untuk
∗ j
N
x dan dimasukkan ke perhitungan partisi dari
k
β diberikan pada persamaan 6, kita tunjukkan :
k B
x =
[ ]
1 +
β Maka,
k B
x sekarang adalah integer.
Sekarang jelas bahwa bermain dengan varibel non basis adalah tugas yang sangat penting untuk integer yang cocok dengan variabel non-basis. Maka, hasilnya
adalah untuk menjelaskan bahwa harus menjadi variabel non-integer untuk pembulatan,
Theorema 1. Tunjukkan bahwa IP 1-4 mempunyai solusi optimal, kemudian
beberapa dari variabel non basis
∗ j
N
x = 1, … ,
n harus menjadi variabel non integer.
Bukti.
Menyelesaikan masalah slack variabel kontinu bukan integer, kecuali pada kasus persamaan kendala. Jika kita mengesumsikan bahwa vektor variabel basis
B
x terdiri
dari seluruh slack variabel kemudian seluruh variabel integer akan menjadi vektor non-basis
N
x dan karena itu bernilai integer.
3.2. Metode derivative