PENDAHULUAN
tugas uts ini yang digunakan sebagai contoh dari study kasus yaitu dengan menggunakan
algoritma program dinamis untuk menyelesaikan permasalahan 0/1 knapsack.
1.2.
Rumusan Masalah
Berdasarkan latar belakang di atas maka masalah yang akan diselesaikan dalam penelitian ini
adalah:
1.
2.
3.
4.
1.3.
Tujuan
2.
3.
4.
BAB II
PEMBAHASAN
akan
dimasukkan
ke
dalam
wadah
Wadah yang
dimaksud di sini juga memiliki nilai konstanta yang merupakan nilai pembatas untuk
benda-benda yang akan dimasukkan ke dalam wadah tersebut sehingga harus diambil
sebuah cara memasukkan benda-benda tersebut ke dalam wadah sehingga menghasilkan
hasil optimum tetapi tidak melebihi kemampuan wadah untuk menampungnya. Terdapat
beberapa variasi Knapsack problem:
A. 0/1 Knapsack problem
Setiap barang hanya tersedia 1 unit, take it or leave it.
B. Fractional Knapsack problem
Barang boleh dibawa sebagian saja (unit dalam pecahan). Versi problem ini menjadi
masuk akal apabila barang yang tersedia dapat dibagi-bagi misalnya gula, tepung, dan
sebagainya.
C. Bounded Knapsack problem
Setiap barang tersedia sebanyak N unit (jumlahnya terbatas).
D. Unbounded Knapsack problem
Setiap barang tersedia lebih dari 1 unit, jumlahnya tidak terbatas.
item-item tersebut untuk ditempatkan di Knapsack. Sebuah item dapat terpilih atau
tidak dalam kombinasi tersebut. Angka 0 dan 1 akan dibangkitkan sepanjang n.
Jika I
menunjukkan 0 maka item tersebut tidak terpilih dan jika 1 maka item
tersebut dipilih.
b. Algoritma Greedy
Teknik pemrograman dengan menggunakan Greedy sering digunakan untuk
permasalahan optimasi. Secara umum teknik ini menggunakan heuristic untuk
mencari solusi suboptimum sehingga diharapkan solusi optimum.
Pada Greedy Algorithm ada beberapa strategi yang digunakan untuk memilih objek
yang akan dimasukkan ke dalam knapsack:
1. 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
mengurutkan secara menurun objek-objek berdasarkan profit-nya.
Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack
sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan.
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 yang
dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weight-nya.
Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack
sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan.
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.
Setelah tiga strategi tersebut diterapkan dan diuji, maka didapat hasil terbaik
dating dari aturan ketiga, yaitu memilih item bernilai tinggi dari rasio bobot
terhadap berat.
Pemilihan objek berdasarkan salah satu dari ketiga strategi di atas tidak
menjamin akan memberikan solusi optimal. Berbeda dengan strategi brute
force
yang
selalu
c. 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 mengatakan bahwa kelangsungan hidup suatu makhluk dapat
dipertahankan melalui proses reduksi, crossover, dan mutasi.
Sebuah solusi yang dibangkitkan dalan Algoritma Genetika disebut sebagai
kromosom, sedangkan kumpulan kromosom-kromosom tersebut disebut sebagai
populasi. Sebuah kromosom dibentuk dari komponen-komponen penyusun yang
disebuat sebagai gen dan nilainya dapat berupa bilangan numerik, biner, simbol atau
pun karakter tergantung dari permasalahan yang ingin diselesaikan. Kromosomkromosom tersebut akan berevolusi secara berkelanjutan yang disebut dengan generasi.
Dalam tiap generasi, kromosom-kromosom tersebut dievaluasi tingkat keberhasilan
nilai solusinya terhadap masalah yang ingin diselesaikan (fungsi_objektif)
menggunakan ukuran yang disebut fitness.
genetik
dimulai
kromosom) yang biasa disebut populasi. Suatu populasi baru diciptakan dari solusisolusi yang ada dalam suatu populasi tua diharapan dapat menjadi suatu populasi
lebih baik. Solusi-solusi yang telah dipilih dalam membentuk solusi baru
(anak/offspings) akan diseleksi menurut fitness mereka. Semakin solusi-solusinya
tersebut cocok maka akan lebih banyak kesempatan mereka dalam produksi kembali.
Proses ini diulangi sampai kondisi yang diinginkan didapat.
d. Programan Dinamis
Metode ini merupakan metode yang sering digunakan untuk menyelesaikan
masalah knapsack baku. Algoritmanya sesuai untuk menyelesaikan kasus di mana
volume total atau V tidak terlalu besar. Metode ini menangani masalah knapsack
dengan menyelesaikan persamaan fungsi dari suatu masalah. Pemrograman dinamik
(PD) merupakan teknik matematika untuk menentukan penyelesaian optimal suatu
fungsi keuntungan pada masalah optimasi dengan n variabel yang dapat dikomposisi
menjadi n submasalah melalui n tahapan. Pada setiap tahapan dimasukkan satu variabel
kedalam sub masalah. Prinsip dasar pemrograman dinamik
adalah optimalitas,
BAB III
STUDI KASUS
3.1 Studi Kasus
Pada studi kasus diambil yaitu pada permasalahan 0/1 knapsack, dimana pada studi
kasus ini yaitu kita mempunyai sebuah tas yang memiliki batasan kapasitas yang dimilikan,
yang akan dimasukin oleh benda-benda yang memiliki berat yang beragam-ragam. Dari tiap
benda tersebut memiliki sebuah protif/valuenya. Pada kasus ini diupayakan yaitu bagaimana
memasukan benda-benda tersebut kedalam sebuah tas yang memiliki kapasitas maksimum
berat yang dapat ditampung, sehingga mendapatkan benda yang pas sesuai dengan kapasitas
yang ada dan memiliki profit/value yang besar pada akhir penghitungannya. Pada proses ini
yang digunakan adalah algoritma programan dinamis.
Dimana apabila berat benda lebih besar dari berat kapasitas maka nilai dari knapsack
adalah Knapsack(k-1,w), sedangkan sebalikan akan mendapatkan nilai maksimal dari
diperoleh
dari
knapsack
yaitu
max(Knapsack(k-1,w),
Knapsack(k-1,w-
WeighBenda[k])+value(k)). Sehingga pada studi kasus ini, pada program akan memiliki 3 buah
4 buah inputan yan dimana inputan yang dimasukan speerti dbawah ini:
a. Kapasitas Tas
b. Jumlah benda
c. Berat benda
d. Value Benda
Dari inputan tersebut maka akan dicari value profit keuntungan yang akan dicari
semaksimal mungkin dengan menggunakan metodi programan dimanis tersebut.
BAB IV
PROGRAM
4.1 Program
Pada tugas uts ini saya membuat 2 program dimana program yang dibuat
menggunakan compiler Microsoft Visual C++, program pertama saya membuat dengan
menggunakan outputan text yang dimana untuk memudahkan saya dalah memindahkan
program yang saya buat nantinya ke dalam form windows application. Program yang terdapat
pada win32 nantinya sama persis dengan program pada formnya.
Terdapat pula backtracking() yaitu dimana fungsi ini akan berfungsi sebagai menampilkan dari
benda apa saja yang akan dimasukan kedalam tas.
void backtracking()
{
int j1,i;
j1=W;
printf("\nMasukan Benda \t weight \t value");
printf("\n-----------------------------------------------------------------");
for(i=no;i >=0;i--)
{
if(v[i][j1]!=v[i-1][j1] && (v[i][j1]==v[i-1][j1-weight[i]]+value[i]))
{
printf("\n%2d \t\t\t %2d
\t\t %2d",i,weight[i],value[i]);
j1=j1-weight[i];
}
}
}
Berikut adalah program dari fungsi backtracking yang berisi informasi yang digunakan
program untuk memanggi benda apa saja yang bisa masuk dalam tas. Sehingga dengan
program ini selain mengetahui kapasitas maksimun value yang didapat, akan dilihatkan juga
benda-benda apa saja yang termasuk didalamnya.
Pada percobaan yang kita buat untuk melihat hasil dari program diatas kita masukan
nilai-nilai seperti berikut:
a. Jumlah benda yang dimasukan = 6
b. Kapasitas tas adalah = 10
c. Berikut susan berar dan value dari tiap benda:
1. Berat 6, Value 10
2. Berat 1, Value 5
3. Berat 2, Value 7
4. Berat 5, Value 12
5. Berat 4, Value 8
6. Berat 3, Value 6
Dapat dilihat bahwa maksimum value yang didapatkan dari pengisian tas yang
memiliki kapasita 10, tersebut adalah 26.
4.3 Program Form Windows Application
Pada program ini hampir sama dengan program diatas tapi pada program ini hanya
berubah yaitu penampilan dari cara menampilkan pada textbox atau listbox. Berikut adalah
tampilan awal dari program windows form application yang dibuat.
Pada program ini masukan benda hanya ada 6 buah. Dan kapasitas benda kita inputkan
sendiri. Juga terdapat kolom textbox yang akan menampilakn hasil dari keuntungan maksimal
dari benda. Ada juga item yang diambil pada listbox2. Pada listbox1 adalah deretan dari
inputan benda yang dimasukan dari benda yang pertama sampai terakhir yang dimana terdapat
berat dan value benda.
Berikut yaitu melakukan percobaan dengan data yang sama dengan pada percobaan
win32 dimana:
a.
b.
c.
1.
Berat 6, Value 10
2.
Berat 1, Value 5
3.
Berat 2, Value 7
4.
Berat 5, Value 12
5.
Berat 4, Value 8
6.
Berat 3, Value 6
Dari percobaan diatas makan keuntungan maksimal dari proses memasukan benda
kedala tas yang memiliki kapasitas 10 adalah 26. Dan item yang diambil dapat dilihat dari
gambar diatas. Data nilai dari percobaan win32 dan form sama dikarena fungsinya sama.
BAB V
KESIMPULAN