BAB 2
TINJAUAN PUSTAKA
2.1 Program Integer
2.1.1 Definisi Program Integer
Program Integer adalah program linier (Linear Programming) di mana variabel-variabelnya bertipe integer(bulat). Program Integerdigunakan untuk memodelkanpermasalahan yang variabel-variabelnya tidak mungkin berupa
bilangan yang tidak bulat (bilangan riil), seperti variabel yang merepresentasikan
jumlah orang atau benda,karena jumlah orang atau benda pasti bulat dan tidak
mungkin berupa pecahan. Program Integer juga biasanya lebih dipilih untuk
memodelkan suatu permasalahan karena program linier dengan variabel berupa
bilangan riil kurang baik dalammemodelkan permasalahan yang menuntut solusi
berupa bilangan integer, misalnya variabel-variabel keputusannya jumlah cabang
Bank di daerah berbeda di suatu Negara. Solusi pecahan tentu tidak dapat diterima dalam keputusan Bank.
Program Integermerupakan bentuk khusus atau variasi dari program linier,
di mana salah satu atau lebih dalam vektor penyelesaiannya memiliki nilai
integer.Program Integer yang membatasi variabel keputusan pada sebagian saja yang dibatasi pada nilai integer disebut Program IntegerCampuran (Susi, Astuti H. 1999). Pokok pikiran utama dalam Program Integer adalah merumuskan
masalah dengan jelas dengan menggunakan sejumlah informasi yang tersedia.
Sesudah masalah terumuskan dengan baik, maka langkah berikut ialah
menerjemahkan masalah ke dalam bentuk model matematika. .
Pada masalah Program Integer untuk pola memaksimumkan, nilai tujuan
dari Program Integer tidak akan pernah melebihi nilai tujuan dari program linier
2.1.2 Jenis-Jenis Program Integer
Terdapat tiga jenis Program Integer, yaitu sebagai berikut:
1. Program Integer Murni (Pure Integer Programming), yaitu program linier yang menghendaki semua variabel keputusan harus merupakan bilangan bulat
non-negatif.
2. Program Integer Campuran (Mixed Integer Programming), yaitu program linier yang menghendaki beberapa, tetapi tidak semua variabel keputusan
harus merupakan bilangan bulat non-negatif.
3. Program Integer Biner (Zero One Integer Programming), yaitu program linier yang menghendaki semua variabel keputusan harus bernilai 0 dan 1.
Bentuk umum dari masalah Program Integer Murni adalah sebagai
berikut(Susanta, B. 1994):
Menentukan
xj
, j= 1, 2, ... , nMaksimumkan atau Minimumkan:Z =
∑
𝑛𝑗=1𝑐
jx
j Kendala:≥
∑ 𝑎
jx
j =b
≤
𝑥
j≥ 0danx
j𝜖bilangan bulat 2.1 untukj
=1,2, … ,ndi mana:
Z = fungsi sasaran atau fungsi tujuan
x
j = variabel keputusanc
j= koefisien fungsi tujuan𝑎
j = koefisien kendalab
= nilai ruas kananBentuk 2.1 di atas merupakan bentuk umum dari Program Integer Murni. Jika
Programming).Program Integer Campuran merupakan Program Integer tapi variabel keputusannya tidak semua merupakan bilangan bulat ada variabel
keputusan yang bernilai pecahan (Yamit, Zulian. 1991).
Bentuk umum dari masalah Program Integer Biner adalah sebagai berikut:
Maksimum atau Mininimum: Z =
∑
𝑛𝑗=1𝑐
𝑗𝑥
𝑗Kendala:
∑
𝑛𝑗=1𝑎
𝑗x
j≤
=
≥
b
j= 1, 2, … , n
x
j≥ 0danx
j𝜖{0, 1} 2.22.1.3 Sifat Umum Program Integer
Semua persoalan Program Integer mempunyai empat sifat umum yaitu, sebagai
berikut (Susanta, B. 1994):
1. Fungsi Tujuan (objective function)
Persoalan Program Integer bertujuan untuk memaksimumkan atau
meminimumkan pada umumnya berupa laba atau biaya sebagai hasil yang
optimal.
2. Adanya kendala atau batasan (constrains) yang membatasi tingkat sampai di mana sasaran dapat dicapai. Oleh karena itu, untuk memaksimumkan atau
meminimumkan suatu kuantitas fungsi tujuan bergantung kepada sumber daya
yang jumlahnya terbatas.
3. Harus ada beberapa alternatif solusi layak yang dapat dipilih.
4. Tujuan dan batasan dalam permasalahan Program Integer harus dinyatakan
dalam hubungan dengan pertidaksamaan atau persamaan linier.
Algoritma atau Metode yang cukup baik untuk memberikan solusi dalam Program
Integeryaitu:
1. Pencabangan dan Pembatasan (Branch and Bound)
Cara ini mula-mula dipakai untuk menyelesaikan program bilangan bulat.
Ternyata cara ini tidak saja hanya dapat digunakan untuk program bilangan
cacah, tetapi juga dapat digunakan untuk program matematika yang lain.
Menurut (Taha, H.A.2007),untuk melaksanakan teknikpencabangan dan pembatasan (Branch and Bound) ada dua operasi dasar, yaitu:
a. Pencabangan (Branching)
Pencabangan merupakan langkah yang dilakukan pada persoalan yang
tidak integer menjadi subpersoalan yang integer. b. Pembatasan (Bounding)
Pembatasan merupakan pembatasan setiap subpersoalan yang dibuat
dengan pencabangan.Batas ini penting untuk tingkatan jawaboptimal dari
subpersoalan dan penemuan jawab optimal bilangan bulat.
Teknik pencabangan dan pembatasan (Branch and Bound) mencari solusi optimal dari suatu persoalanProgram Integerdenganmenumerasi titik-titik
dalam daerah fisibel dari suatu subpersoalan.
Keuntungan dari cara pencabangan dan pembatasanadalah cara yang
efisien untuk mendapatkan seluruh jawaban layak (fisibel), sedangkan
kerugian cara ini adalah akan mencari seluruh jawaban program linier pada
setiap titik. Pada persoalan yang besar akan memerlukan waktu yang cukup
lama, terutama bila yang dibutuhkan hanya keterangan mengenai nilai
objektif yang optimum.
Langkah-langkah Metode Branch and Bound: 1. Pembatasan(Bound)
Pada algoritma branch and bound terdapat dua batas yaitu batas atas (upper bound) dan batas bawah (lower bound).
2. Pencabangan(Branching)
Pencabangan dilakukan jika masih terdapat variabel keputusan yang harus
bernilai bulat namun memiliki solusi yang tidak bulat. Pencabangan
Penambahan pembatas ini ditujukan untuk membuat variabel keputusan
ang belum bernilai integersupaya bernilai integer. 3. Penghentian pencabangan(Fathoming)
Pencabangan atau pencarian solusi pada suatu submasalah dihentikan jika:
a. Infeasible atau tidak mempunyai daerah layak.
b. Semua variabel keputusan yang harus bernilai bulat sudah bernilai
bulat.
c. Pada masalah maksimisasi, penghentian pencabangan pada suatu
submasalah dilakukan jika batas atas dari submasalah tersebut tidak
lebih besar atau sama dengan batas bawah.
d. Pada masalah minimisasi penghentian pencabangan pada suatu
submasalah dilakukan jika batas bawah tidak lebih lebih kecil atau
sama dengan batas atas.
2. Pemotongan Bidang Datar (Cutting Plane)
Pendekatan yang dilakukan dalam teknik pemotonganbidang datar (Cutting Plane) adalah denganmembuat pembatas tambahan yang memotong ruang layak dari program linier sehingga dapat mengeliminasi solusi yang tidak
integer. Proses pemotongan akan terus berlangsung sehingga diperoleh jawaban dengan seluruh variabel (yang dikehendaki) berharga bilangan bulat
(integer). Keberhasilan teknikini sangat terbatas, bergantung pada struktur persoalan yang dihadapi. Artinya hanya persoalan tertentu yang dapat
diselesaikan dengan teknik ini. Karena itu, sekarang teknik ini hampir tidak
pernah digunakan lagi.
Kelemahan dari algoritma pemotongan bidang datar adalah kesalahan-
kesalahan pada pembulatanyang dilakukan dalam perhitungan dapat
menghasilkanjawaban bilangan bulat yang salah. Selanjutnya jawaban dari
persoalan masih belum fisibel berarti tidak ada jawaban bilangan bulat yang
diperoleh sampaijawaban bilangan bulat yang optimal dicapai tadi,dan ini
berarti bahwa tidak ada jawaban integer yang baik jika perhitungan dihentikan lebih awal sebelum mencapai hasil jawaban yang optimal.
1. Selesaikan masalah Program Integerdengan Metode Simpleks.
2. Periksa solusi optimum. Jika semua variabel basis memiliki nilai bulat,
solusi optimum integer telah diperoleh dan proses solusi telah berakhir. Jika satu atau lebih variabel basis masih memiliki nilai pecahan, lanjut
langkah 3.
3. Buatlah suatu skala gomory dan cari solusi optimum dengan dual
Simpleks.
3. Metode Balas
Egon Balas mengembangkan satu cara atau algoritma untuk menyelesaikan
problema program bilangan cacah nol-satu (0-1). Pendekatan yang digunakan
ialah pendekatan enumerasi, baik yang total maupun implisit, terhadap setiap
kombinasi variabel yang diatur sama dengan 0 dan 1. Kombinasi 0 dan 1 yang
memenuhi semua kendala dan meminimumkan fungsi tujuan dinyatakan
sebagai jawaban optimal (Benjamin, Lev dan Weiss, Howard J. 1982).
Kalau terdapat sejumlah n variabel, maka ada 2n kombinasi yang mungkin. Tetapi, sangatlah sulit untuk memeriksa semua 2n kombinasi variabel yang
memenuhi semua kendala. Oleh karena itu, diperlukan suatu prosedur yang
secara sistematis mampu memeriksa hanya sebagian dari semua kombinasi
yang ada, sebelum mencapai satu jawaban optimal. Inilah yang disebut
sebagai enumerasi implisit (Taha H.A.2007).
Prosedur pokok dari cara enumerasi implisit ini dapat dinyatakan sebagai
berikut:
1. Dimulai dengan mengatur semua variabel sama dengan 0.
2. Tetapkan secara sistematis variabel tertentu untuk dijadikan berharga 1
hingga ditemukan jawaban layak.
3. Periksa dengan cermat kombinasi mana yang bisa dikembangkan hingga
dapat dijadikan sebagai jawaban optimal.
Bentuk umum Metode Balas (Martello Silvano, Psinger, David dan Toth,
MinimumkanZ =
∑
𝑛𝑗=1𝑐
jx
jKendala:
∑ 𝑎
jx
j≥b
2.3di mana:
Z = fungsi tujuan atau fungsi objektif.
c
jx
j =variabel dan koefisien keputusan.untuk
j
=1,2, … ,nx
j≥ 0 danx
j𝜖{0, 1}Kondisi yang tidak mengikuti bentuk umum dari Metode Balas akan
dilakukan beberapa perubahan, antara lain:
1. Fungsi objektif yang setiap variabel xjmempunyai nilai koefisien negatif,
untuk variabel xjdiganti menjadi (1 - xj).
2. Kendala dengan bentuk pertidaksamaan ≤, kendala ini akan diubah ke
dalam bentuk pertidaksamaan ≥ dengan cara mengalikan ruas kiri dan
kanan dengan (-1).
Adapun sistematika cara Balas adalah sebagai berikut:
1. Tetapkan: 𝑆= {1, 2, ... , n}
Sc= Ø
Zmin = 1010
2. Hitung 𝑍=∑ 𝑐𝑖𝜖𝑠̅ 𝑖𝑥𝑖
Beberapa dari xiditetapkan berharga 0.
3. Hitung tiap kendala Qi (i = 1, 2, ... , n) dengan menggunakan variabel dalam Sc
dengan harga-harga yang telah ditetapkan ditambah dengan variabel dalam S
yang masing-masing himpunan sama dengan 0. Jika tiap kendala layak, maka
harga variabel yang digunakan untuk menghitung kendala membentuk suatu
jawab layak. Misalkan K merupakan himpunan kendala yang tidak layak. 4. Bila Khimpunan kosong, maka teruskan ke langkah 12, kalau tidak teruskan
ke langkah 5.
6. Pilih variabel dalam S yang mempunyai kesempatan yang membuat semua kendala menjadi layak, yaitu misalkan T himpunan variabel dalam S yang mempunyai:
a. Koefisien positif dalam beberapa kendala dalam K. b. Koefisien fungsi tujuan <B.
Kendala yang tidak terpenuhi hanya dapat dibuat lebih tidak layak dengan
menetapkan harga 1 terhadap variabel dengan koefisien negatif dalam
kendala, jadi hanya variabel dengan koefisien positif dalam kendala yang
diketahui yang mempunyai kesempatan membuat kendala jadi layak (≥ 0).
Begitu juga , suatu variabel xk dalam S sedemikian hingga:
𝑍=� 𝐶𝑖𝑥𝑖
𝑖𝜖𝑆
+ 𝐶𝑘 ≥ 𝑍𝑚𝑖𝑛
tidak termasuk dalam S karena jawab layak yang bersesuaian dengan Zmin
sekurang-kurangnya sudah cukup bagus.
7. Bila T himpunan kosong, teruskan ke langkah 14 kalau tidak teruskan ke langkah 8.
8. Untuk setiap kendala dalam 𝐾, tetapkan harga 1 bagi variabel bebas dalam 𝑇
yang mempunyai koefisien positif dalam kendala yang diketahui. Tetapkan
variabel dalam Sc sama dengan harga yang sudah ditentukan.
9. Bila masih ada dari kendala tetap tidak dipenuhi, maka terus ke langkah 11
kalau tidak terus ke langkah 10.
10.Pindahkan dari Scdan tambahkan ke S variabel dalam T yang meminimumkan jarak total dari kelayakan untuk seluruh kendala. Proses ini digarap dalam
langkah a sampai c.
a. Hitung tiap kendala Qi (𝑖= 1, ... , n) untuk tiap variabel, misalkan xkdalam
𝑇 dengan menggunakan variabel Sc dengan harga yang telah ditetapkan, xk
= 1 dan tiap variabel S yang tersisa samakan dengan 0.
b. Harga absolut dari hasil negatif adalah solusi yang dikembangkan menjadi
layak.
11.Kalau Sc kosong, teruskan kelangkah 21. Kalau tidak, tidak ada jawab parsial layak yang disajikan oleh S mempunyai harga yang lebih kecil dari
Zmin,teruskan ke langkah 16.
12.Variabel dalam Sc dengan harga yang sudah ditetapan, bersama-sama dengan variabel dalam S yang ditetapkan sama dengan 0, membentuk jawab yang lengkap. Terus ke langkah 13.
13.Bila Z < Zmin. Maka terus ke langkah 14, kalau bukan maka terus kelangkah 15.
14.Buat Zmin = Z. Simpan dulu jawab lengkap ini dan terus ke langkah 15.
15.Jajakan ulang
Bila Sc kosong maka jawaban layak xi = 0 (i = 1, 2, ... , n) adalah optimal, lalu
terus ke langkah 20. Bila tidak, terus kelangkah 16.
16.Bila anggota terakhir dalam Sc negatif, terus kelangkah 18, kalau tidak terus kelangkah 17. Anggota terkanan dalam 𝑆̅ adalah anggota terakhir dalam Sc.
17.Jadikan anggota terakhir (paling kanan) dalam Sc negatif dan kembali kelangkah 2. Variabel yang bersesuaian dengan anggota terakhir telah
ditetapkan berharga 1 (indeks yang sesuai dalam Sc sudah positif). Sekarang kita menetapkan variabel jadi 0 (ubah tanda anggota terakhir dalam Sc menjadi negatif).
18.Bila semua anggota dalamSc bertanda negatif, maka jawab optimal telah ditemukan sehingga terus kelangkah 20,kalau belum terus kelangkah 19.
19.Jadikan anggota positif terkanan dalam Sc menjadi negatif dan pindahkan anggota yang sisa kesebelah kanan dalam Sc. Tambahkan anggota yang sudah keluar, masuk kedalam S. kembali kelangkah 2.
20.Jawab lengkap sesuai dengan Zmin adalah optimal. Bila Zmin = 10 10
maka
jawaban optimal tidak ada.
21.Tidak ada jawab optimal untuk problemnya.
2.2Knapsack
Knapsack adalah tas atau karung yang digunakan untuk memasukan sesuatu, tetapi tidak semua barang dapat ditampung dalam karung tersebut. Karung
tersebut hanya dapat menampung beberapa objek dengan total ukuran atau
beratnya lebih kecil atau sama dengan kapasitas karung.
2.2.2 Permasalahan Knapsack
Permasalahan knapsack adalah permasalahan program linier yang hanya memiliki satu kendala. Program Integer merupakan salah satu bentuk program linier dengan
penambahan syarat bahwa semua variabel keputusan bernilai bulat (integer). Permasalahan knapsack bilangan bulat adalah permasalahan program bilangan bulat yang hanya memiliki satu kendala. Salah satu dari banyak benda akan
dimasukan ke dalam suatu benda yang berkapasitas. Masing-masing benda
memiliki harga dan berat yang mana akan dimasukan untuk mendapatkan hasil
maksimum (Martello Silvano, Psinger, David dan Toth, Paolo. 2000). Sebagai
contoh, misalnya perusahaan properti dalam menggunakan modalnya dalam 1
tahun untuk pembelian barang. Tujuan dari perusahaan yaitu mencari keuntungan
optimal selama setahun dan banyaknya barang. Harga dasar digunakan sebagai
kendala, sedangkan keuntungan barang sebagai fungsi tujuan. Pada masalah ini
diasumsikan persediaan barang sebelumnya habis terjual. Jika variabel keputusan
mewakili banyaknya pembelian dari kelompok barang, maka jawaban berupa
pecahan tidak tepat dalam menyelesaikan masalah. Jadi diperlukan penambahan
syarat yaitu syarat yang menyatakan variabel-variabel yang harus bernilai bulat.
2.2.3 Jenis-Jenis PermasalahanKnapsack
Terdapat tiga jenis permasalahan pada Knapsack berdasarkan kasus yang ingin dibahas, yaitu:
1. Permasalahan Knapsack untuk bidang transportasi
Permasalahan Knapsack untuk bidang transportasi merupakan suatu permasalahan yang sering dihadapi oleh perusahaan dalam pengiriman dan
pengelolaan barang. Permasalahan ini sering juga terjadi pada media
transportasi ketika akan mengangkut banyak barang, di mana berat barang
media transportasi tersebut, dan diharapkan dari pengangkutan barang tersebut
didapatkan profit atau keuntungan yang semaksimal mungkin.
2. Permasalahan Knapsackatau permasalahan ransel
Permasalahan Knapsack itu sendiri merupakan persoalan yang menarik di mana dihadapkan dengan persoalan optimasi pemilihan pemasukan benda ke
dalam wadah yang memiliki keterbatasan ruang dan daya tampung di mana
benda yang dimasukan harus dalam keadaan utuh. Masing-masing benda yang
ada di dalam memiliki sebuah nilai yang memiliki berat, harga dan lain-lain
sebagai penentu dalam proses pemilihan. Pada akhir proses diinginkan
memiliki solusi optimum dengan benda yang ada di dalamnya.
3. Permasalahan Knapsack untuk bidang investasi
Permasalahan Knapsack untuk bidang investasi yaitu di mana seorang investor akan menginvestasikan uangnya kepada berbagai perusahaan untuk
mendapatkan keuntungan maksimum, dari hasil keuntungan tersebut di mana
investor akan menentukan perusahaan mana yang lebih memberikan untung
yang besar kepadanya (dipilih) dibandingkan dengan perusahaan lain (tidak
dipilih).
2.2.4 Jenis-Jenis Knapsack
Permasalan Knapsack memiliki tiga jenis persoalan, yaitu: 1. Knapsack0-1
Sesuatu yang dimasukkan ke dalam karung dimensinya harus dimasukkan
semua atau tidak sama sekali.
2. KnapsackBounded
Sesuatu yang dimasukkan ke dalam karung dimensinya bisa dimasukkan
sebagaian atau seluruhnya.
3. KnapsackUnbounded
Setiap barang tersedia lebih dari satu unit, jumlahnya tidak terbatas.
4. Fractional Knapsack Problem
Barang boleh dibawa sebagian saja (unit dalam pecahan).
Bagian terpenting dari penelitian adalah bagaimana menerjemahkanpermasalahan
sehari-hari ke dalam model matematis. Faktor-faktor yangmempengaruhi
pemodelan harus disederhanakan dan apabila ada data yangkurang, kekurangan
tersebut dapat diasumsikan atau diisi dengan pendekatan yangbersifat rasional.
Permasalahan knapsack bilangan bulat merupakan permasalahan programbilangan bulat yang memiliki satu kendala tunggal, sehingga pada
modelnyaditambahkan batasan untuk variabel keputusan yang dihasilkan harus
bernilai bulat (integer).Karena permasalahan knapsack bilangan bulat merupakan permasalahanprogram linier bilangan bulat, maka dalam model matematika dapat
ditulissebagai berikut:
Maksimum atau Minimum Z =
∑
𝑛𝑗=1𝑐
jx
jKendala:
∑
𝑛𝑗=1𝑎
𝑗x
j≤
=
≥
b
x
j≥ 0 danx
j𝜖bilangan bulat 2.4di mana:
Z = nilai optimal dari fungsi tujuan