3. PROGRAM BILANGAN BULAT (INTEGER PROGRAMMING)
3.1 PENDAHULUAN : Formulasi Program Bilangan Bulat dan Aplikasinya
Program Linear (LP)
Program Linear biasa diformulasikan secara matematis dengan cara sebagai berikut :
(LP) max cX
kendala : A X ≤ b X ≥ 0
atau secara singkat dapat dituliskan menjadi : max { cX : AX ≤ b, X ∈ R+n }
Program Linear Bilangan Bulat Linear Integer Programming (ILP)
Program linear bilangan bulat memiliki formulasi mirip dengan (LP) hanya saja kendala bahwa peubah bebasnya merupakan bilangan real positif diubah menjadi bilangan bulat positif, yaitu :
(ILP) max cX
kendala : A X ≤ b X ≥ 0
X Bilangan Bulat Atau secara singkat dapat dituliskan menjadi :
max { cX : AX ≤ b, X ∈ Z+n }
Bila batasan bahwa X harus merupakan bilangan bulat diubah menjadi X ∈ {0,1}, maka permasalahan ini menjadi Program Linear Bilangan Biner (Linear Binary Integer Programming – LBIP)
Program Linear Bilangan Bulat Campuran Linear Mixed Integer Programming (MIP)
Bila sebagian dari permasalahan memerlukan pemecahan dalam bilangan real dan sebagian lagi dalam bilangan bulat, maka model matematik yang harus dibuat merupakan campuran dari (LP) dan (ILP) , ini sebut sebagai (MIP), yaitu :
(MIP) max { cX + hY: AX + G Y ≤ b, X ∈ Z+n , Y ∈ R+n }
dimana A : matriks berukuran m x n G : matriks berukuran m x p c : vektor berukuran n h : vektor berukuran p b : vektor berukuran m
Penyelesaian dari (MIP) merupakan penyelesaian yang layak bila penyelesaian ini berada dalam himpunan layak :
Dan penyelesaiannya dikatakan optimal bila:
(xo, yo) ∈ S sedemikian hingga ∀(x,y) ∈S : c x + h y ≤ c xo + h yo (MIP) dikatakan tak terbatas (unbounded) jika :
∀ L ∈ R; ∃ (x,y ) ∈ S : c x + h y > L
Beberapa aplikasi khusus dalam (LP) selalu memperoleh penyelesaian bilangan bulat yang optimal, misalnya : malalah aliran pada jaringan pipa (Network – Flow), Matching
TETAPI secara umum hal ini TIDAK BENAR !!! Contoh 3.1 :
S
Peny. Optimal (IP)
. . . . . . . .
Peny. Optimal (LP)
. . . . . . . .
. . . . . . . .
| | | | | | |
Contoh 3.2 : Masalah Ransel (Knapsack Problem, 0-1)
Masalah ini diilhami dari seorang petualangan yang hendak bepergian dengan membawa satu ransel. Dia harus menentukan barang-barang apa saja yang hendak dibawanya dengan mengingat kapasitas dari ransel yang mampu disandangnya terbatas. Selain itu masalah ini juga dikenal dengan permasalah dengan satu fungsi tujuan dan satu kendala saja, karena itu ia memerlukan penyelesaian khusus.
Pada dunia industri hal ini seringkali muncul ketika orang hendak menentukan proyek apa yang harus dikerjakan jika diketahui bahwa anggaran total yang dimilikinya terbatas. Permasalahan ini dapat dimodelkan sebagai berikut :
Misalkan terdapat j buah proyek, j = 1,…, n aj ≥ 0 : biaya dari proyek j
cj ≥ 0 : nilai dari proyek j
b > 0 : dana yang tersedia
Masalah : pilihlah proyek yang akan dikerjakan sedemikian hingga jumlah dari nilai proyek tersebut maksimal dan biaya yang dikeluarkan tidak melebihi dana yang tersedia.
Model : Xj = =1,....,n j lainnya , 0 an dilaksanak j proyek jika , 1
Max
∑
= n 1 j j jX c Kendala :∑
= ≤ n 1 j j jX b a Xj ∈ {0,1} , j = 1,…, nContoh 3.3:The Facility Location Problem
Diketahui N = {1,2,..,n} adalah himpunan facility location yang potensial M={1,2,…,m} adalah himpunan dari pengguna (clients) cj : biaya untuk memilih sebuah fasilitas di lokasi j, j ∈ N
hij: biaya untuk memenuhi permintaan dari pengguna i dari sebuah
fasilitas yang diletakkan di j, dimana i ∈ I , j ∈ N (asumsi : tiap pengguna hanya memiliki satu permintaan untuk suatu fasilitas tertentu)
Masalah : Pilihlah lokasi di N dimana fasilitas tersebut akan diletakkan dan tugaskanlah pengguna-pengguna yang ada pada fasilitas tersebut sedemikian hingga total biaya yang diperlukan minimum.
Model : Xj = =1,2,...,n j , lainnya 0 j lokasi di diletakkan fasilitas sebuah jika 1 Kendala :
(a) Permintaan dari pengguna i terpenuhi
∑
∈ = N j ij 1 YYij : Bagian permintaan dari pengguna i yang dipenuhi oleh fasilitas j
(b) Pengguna i hanya dapat dilayani dari lokasi j, jika fasilitasnya diletakkan di lokasi j Yij – Xj ≤ 0 ∀i ∈ I, j ∈ N Pemodelan : Min
∑
∑∑
∈ ∈ ∈ + N j i I j N ij ij j jX h Y c s.d.h∑
∈ = N j ij 1 Y , ∀i ∈ I Yij – Xj ≤ 0 ∀i ∈ I, j ∈ N (MIP) Yij ≥ 0 ∀i ∈ I, j ∈ N Xj ∈ {0,1} , j ∈ NContoh 3.4 : The Capacitated Facility Location Problem
Masalah ini hampir sama dengan masalah pada contoh 3.3 cuman saja kapasitas dari tiap lokasi dibatasi, sehingga model di atas akan sedikit berubah.
Diketahui N = {1,2,..,n} adalah himpunan facility location yang potensial M={1,2,…,m} adalah himpunan dari pengguna (clients) uj : kapasitas dari sebuah fasilitas yang berlokasi di j, j ∈ N
bi : permintaan dari pengguna i, i ∈ I
cj : biaya untuk memilih sebuah fasilitas di lokasi j, j ∈ N
hij: biaya untuk memenuhi permintaan dari pengguna i dari sebuah
fasilitas yang diletakkan di j, dimana i ∈ I , j ∈ N (asumsi : tiap pengguna hanya memiliki satu permintaan untuk suatu fasilitas tertentu) Model : Min
∑
∑∑
∈ ∈ ∈ + N j i I j N ij ij j jX h Y c s.d.h∑
∈ = N j i ij b Y , ∀i ∈ I Yij – uj Xj ≤ 0 ∀i ∈ I, j ∈ N (MIP) Yij ≥ 0 ∀i ∈ I, j ∈ N Xj ∈ {0,1} , j ∈ NContoh 3.5 : Travelling Salesman Problem (TSP) Diketahui : V = {1,2,..,N} himpunan Vertex /Kota
E : himpunan Edge, merupakan pasangan terurut antara satu kota dengan yang lain yang memiliki hubungan dalam jaringan yang ada.
cij : waktu tempuh untuk melakukan perjalanan dari kota i ke kota j;
i,j ∈ V dan (i,j) ∈ E
Masalah : Mencari sebuah tour yang dimulai dari kota pertama sedemikian hingga :
(1) Tiap kota harus dikunjungi sekali dan pada akhir perjalanan harus kembali lagi ke kota yang pertama
(2) Total waktu yang diperlukan minimum. Model : Xij ∈E ) j , i ( , lainnya 0 ini tour pada i kota dari dikunjungi langsung j kota jika 1 Kendala :
(a) Tiap kota hanya dituju satu kali :
Dari kota menuju kota j
∑
∈ ∈ = } E ) j , i ( : i { ij 1 ,j V X(b) Tiap kota hanya ditinggalkan satu kali :
∑
∈ ∈ = } E ) j , i ( : j { ij 1 ,i V XKendala (a) dan (b) tidaklah cukup untuk mendefinisikan sebuah tour, karena kendala-kendala ini juga memenuhi untuk sebuah subtour, yaitu
Pengamatan : Untuk sebarang tour pasti terdapat edge dari {1,2,3} ke {3,4,5} dan sebuah edge dari {4,5,6} ke {1,2,3}.
(c) X 1 u V, 2 u V 2 } u \ V j , u i , E ) j , i {( ij ≥ ∀ ⊂ ≤ ≤ −
∑
∈ ∈ ∈ (TSP) :min∑
∈E ) j , i ( ij ijX c s.d.h (a), (b), (c) terpenuhi Xij ∈{0,1}, (i,j) ∈ EContoh 3.6: The Assignment Problem (Matching Problem) Diketahui : N = {1,2,…,n} adalah himpunan pekerja
M = {1,2,…,m} adalah himpunan pekerjaan
cij adalah biaya jika pekerja j mengerjakan pekerjaan i.j ∈N, i ∈M.
Masalah : menentukan penugasan yang tepat untuk pekerja-pekerja yang ada pada pekerjaan-pekerjaan yang tersedia sehingga biaya keseluruhan untuk menyelesaikan pekerjaan-pekerjaan yang ada minimum. Model : Xij = lainnya 0 i jaan ker pe melakukan j orang jika 1 Min
∑∑
= = m 1 i n 1 j ij ijX c j 1 2 3 4 5 6s.d.h
∑
= ∈ ∀ = n 1 j ij 1, i MX tiap orang harus melakukan pekerjaan
∑
= ∈ ∀ ≤ m 1 i ij 1, j NX tiap orang dapat melakukan pekerjaan sebanyak-banyaknya satu
Xij ∈{0,1}, i∈ M, j ∈ N.
3.2 PROGRAM LINEAR RELAKSASI
Bentuk program linear yang diperoleh dengan mengabaikan pembatas bilangan bulat disebut sebagai progral linear (LP) relaksasi. Pada (LP) relaksasi ini daerah layak untuk (LIP) merupakan sub-ruang dari daerah layak (LP).
3.3 MENYELESAIKAN PERSOALAN(LIP-murni) DENGAN MENGGUNAKAN TEKNIK BRANCH-AND-BOUND
• Teknik ini mencari penyelesaian optimal dari suatu persoalan LIP dengan mengenumerasi titik-titik dalam daerah layak dari suatu sub-persoalan.
• Jika penyelesaian dari LP relaksasi memiliki seluruh peubah yang berharga bilangan bulat, maka penyelesaian optimal dari LP relaksasi merupakan juga penyelesaian optimal dari LIP.
• Prosedur Branch-and-Bound :
(1) Jika pencabangan dari suatu subpersoalan tidak diperlukan, maka subpersoalan ini disebut Fathomed. Ada 3 situasi yang mungkin yaitu : (a) Apabila subpersoalan itu tidak layak
(b) Apabila subpersoalan itu memberikan penyelesaian yang optimal dimana seluruh peubahnya berharga bilangan bulat.
(c) Apabila nilai z-optimal untuk sub-persoalan itu tidak lebih baik dari nilai z-optimal dari subpersoalan yang lain.
(2) Suatu subpersoalan dapat diabaikan atau dieliminasi dari pertimbangan selanjutnya, apabila :
(a) Tidak layak
(b) Batas bawah yang menyatakan nilai z dari calao solusi terbaik sekurang-kurangnya berharga sama besar dengan nilai z dari subpersoalan yang bersangkutan.
3.4 MENYELESAIKAN PERMASALAHAN (MIP) DENGAN
BRANCH-AND-BOUND
Teknik penyelesaian dari permasalahan ini hampir sama dengan teknik penyelesaian yang telah dibahas pada sub.bab 3.3, hanya saja pencabangan hanya dilakukan pada peubah-peubah yang harus berharga bilangan bulat.
3.5 MENYELESAIKAN PERMASALAHAN RANSEL DENGAN
BRANCH-AND-BOUND
Permasalahan Ransel (Knapsack Problem) dapat dituliskan secara mamemtis dalam bentuk sebagai berikut :
Max z = c1X1 + c2X2 + … + cnXn
s.d.h a1X1 + a2X2 + … + anXn ≤ b
Xi ∈ {0,1} ∀i = 1,2,..,n
Dua aspek pendekatan branch-and-bound:
(1) karena tiap peubah harus berharga nol atau satu maka pencabangan pada Xi
akan menghasilkan cabang Xi= 0 dan Xi = 1.
(2) LP relaksasi dilakukan dengan memeriksa nilai ci /ai yang merupakan
perwujudan dari manfaat yang diperolah dari tiap unit sumber yang digunakan oleh barang ke-I
3.6 MENYELESAIKAN PERMASALAHAN IP DENGAN METODE ENUMERASI IMPLISIT
Digunakan untuk menyelesaikan permasalahan BIP (LIP 0-1). Ada 3 hal pokok yang akan dilakukan yaitu :
(1) Melakukan penyempurnaan terbaik bagi suatu node dengan cara :
(a) dilakukan dengan menjadikan peubah bebas berharga 0 atau 1 sedemikian hingga diperoleh nilai fungsi tujuan optimal
(b) jika penyempurnaan node ini layak, maka pencabangan berikutnya tidak perlu dilakukan
(2) Mengeliminasi suatu node dari pertimbangan selanjutnya.
(a) Suatu node akan diabaikan apabila setelah dilakukan penyempurnaan terbaik terhadap node itu, diperoleh nilai fungsi tujuan yang lebih buruk daripada nilai fungsi tujuan calon penyelesaian sebelumnya.
(3) Menguji ada tidaknya penyempurnaan yang layak dari suatu node
(a) Apabila penyempurnaan suatu node tidak memenuhi pembatas yang ada, maka pasti tidak akan ada penyempurnaan yang layak dari node tersebut terhadap permasalahan semula
3.7 MENYELESAKAN PERMASALAHAN (LIP) DENGAN TEKNIK CUTTING PLANE
Pada teknik ini pendekatan yang digunakan adalah membuat pembatas tambahan yang memotong ruang layak dari LP relaksasi sehingga dapat mengeliminasi penyelesaian yang bukan merupakan bilangan bulat. TETAPI tidak semua permasalahan dapat diselesaikan dengan teknik ini, karena itu teknik ini jarang digunakan.
3.7.1 Algoritma Pecahan (Bilangan bulat murni)
Syarat : Semua koefisien pembatas dan ruas kanannya harus merupakan bilangan bulat Alasan: Koefisien pecahan pada pembatas akan menyebabkan harga dari peubah slack
akan menjadi pecahan juga. Algoritma :
(1) Selesaikan permasalahan dengan LP
(2) Jika penyelesaian optimum sudah merupakan bilangan bulat -! Berhenti (3) Jika tidak lakukan langkah berikut :
Perhatikan Tabel Optimum dari LP :
Basis X1 … Xi … Xm W1 … Wj … Wn Solusi Z 0 … 0 … 0 1 C … Cj … Cn β0 X1 1 … 0 … 0 α1 1 … α 1 j … α 1 n β 1 . . . . . . … . . . … . . . . . . … . . . … . . . Xi 0 … 1 … 0 αi 1 … α i j … α i n β i . . . . . . … . . . … . . . . . . … . . . … . . . Xm 0 … 0 … 1 αm 1 … α m j … α m n β m Peubah-peubah Xi : basis, i = 1,2,…, m Wj : nonbasis j = 1,2,…,n
Asumsikan Xi bukan bilangan bulat
Xi = βi -
∑
= α n 1 j j j iW (1)Misalkan : βi = [βi] + fi ,[ βi] : bilangan bulat tersebesar sedemikian hingga
[βi] ≤βi αi j =[αi j ] + fij , 0 < fi < 1 , 0 < fij < 1
Maka persaman (1) berubah menjadi : Xi = [βi] + fi -
∑
[ ]
∑
= = − α n 1 j n 1 j j ij j j i W f W∑
= − n 1 j j ij i f W f = Xi - [βi] +∑
[ ]
= α n 1 j j j i WRuas kiri harus merupakan bilangan bulat demikian pula dengan ruas kanan. fij≥0 , Wj≥ 0 berarti
∑
= ≥ n 1 j j ijW 0 f fi -∑
= ≤ n 1 j i j ijW f f karena fi < 1 berarti fi -∑
= < n 1 j j ijW 1 fmerupakab bil. bulat fi -
∑
= ≤ n 1 j j ijW 0 f
Tambahkan peubah slack didapat : fi -
∑
= n 1 j j ijW f + Si = 0 SI =∑
= n 1 j j ijWf - fi inilah yang disebut sebagai fractional cut
Karena pada tabel akhir didapat bahwa Wj = 0 berarti Si = fi menjadi tidak layak karena
itu gunakan metode dual simplexuntuk menyelesaikannya.
Jika penyelesaiannya sudah merupakan bilangan bulat -! berhenti, jika belum ulang kembali prosedur ini.
Contoh 3.7
Selesaikan permasalahan berikut : Max Z = 7 X1 + 9 X2
Kendala : - X1 + 3 X2≤ 6
7 X1 + X2≤ 35
X1, X2 bilangan bulat tak negatif
Penyelesaian : Tabel Simplex LP: Basis X1 X2 X3 X4 Solusi Z 0 0 28/11 15/11 63 X2 0 1 7/22 1/22 7/2 X1 1 0 -1/22 3/22 9/2
Terlihat bahwa X1 dan X2 bukan bilangan bulat, karena itu pilihlah pertidaksamaan yang
‘kuat’ untuk mempercepat pencapaian penyelesaian bilangan bulat optimum, yaitu : Misalnya : terdapat 2 pertidaksamaan
∑
= ≥ n 1 j i j ijW f f dan (2)∑
= ≥ n 1 j k j kjW f f (3)Persamaan (2) lebih kuat dari persamaan (3) jika : fi ≥ fk
fij ≤ fkj ∀j
Definisi ‘kekuatan’ ini digunakan pada pembatas baru yang diturunkan dari baris yang mempunyai :
(a)
i
max ( fi ) ! baris dengan pecahan terbesar
(b)
∑
= n 1 j ij i i f fmax ! baris dengan rasio
∑
= n 1 j ij i f f terbesarPada contoh soal di atas : β1 = 9/2 ! 4+ ½
β2 = 7/2 !3 + ½ berarti f1 = f2 = ½ ( aturan (a) tidak berlaku)
Gunakan aturan (b) α23 = 7/22 = 0 + 7/22 ! f23 = 7/22 α24 = 1/22 = 0 + 1/22 ! f24 = 1/22 α13 = -1/22 =-1+21/22 ! f13 = 21/22 α14 = 3/22 = 0 + 3/22 ! f14 = 3/22
∑
= n 1 j ij i i f f max = 22 / 3 22 / 21 2 / 1 22 / 1 22 / 7 2 / 1 + > +berarti pilih persamaan X2 = 7/22 X3 + 1/22 X4 ≥ ½
X2 + 7/22 X3 + 1/22 X4 = 3 ½
X2 +(0+ 7/22) X3 + (0+1/22) X4 = 3 + ½
Persamaan pembatas baru :
S1 - 7/22 X3 - 1/22 X4 = - ½
Tabel Simpleks baru :
Basis X1 X2 X3 X4 S1 Solusi
Z 0 0 28/11 15/11 0 63 X2 0 1 7/22 1/22 0 7/2
X1 1 0 -1/22 3/22 0 9/2
S1 0 0 -7/22 -1/22 1 -1/2
Dengan Dual Simpleks di dapat :
Basis X1 X2 X3 X4 S1 Solusi
Z 0 0 0 1 8 59
X2 0 1 0 0 1 3
X1 1 0 0 1/7 -1/7 4 1/7
Masih terdapat penyelesaian yang bukan bilangan bulat , buat lagi pembatas baru : X1 + (0 + 1/7) X4 + (-1 + 6/7) S1 = 4 + 4/7 S2 – 1/7 X4 – 6/7 S1 = -4/7 Basis X1 X2 X3 X4 S1 S2 Solusi Z 0 0 0 1 8 0 59 X2 0 1 0 0 1 0 3 X1 1 0 0 1/7 -1/7 0 4 1/7 X3 0 0 1 1/7 -22/7 0 1 4/7 S2 0 0 0 -1/7 -6/7 1 -4/7
Hasil dari dual Simpleks
Basis X1 X2 X3 X4 S1 S2 Solusi Z 0 0 0 0 2 7 55 X2 0 1 0 0 1 0 3 X1 1 0 0 0 -1 1 4 X3 0 0 1 0 -4 1 1 X4 0 0 0 1 6 -7 4
Penyelesaian akhir di dapat hasil bilangan bulat dengan X1 = 4, X2 = 3 dan Z = 55
3.7.2. Algoritma Campuran
Asumsi : Xk peubah bilangan bulat dari masalah campuran
Xk = βk -
∑
= α n 1 j k j kW = [βk] + fk -∑
= α n 1 j j j kW Xk - [βk] = fk -∑
= α n 1 j j j kWIngat : beberapa peubah Wj bukan merupakan bilangan bulat. Supaya Xk berharga
bilangan bulat maka : Xk ≤ [βk] atau Xk ≥ [βk] +1 Berarti :
∑
= α n 1 j j j kW ≥ fk (4)∑
= α n 1 j j j kW ≤ fk – 1 (5)Tentukan : J+ : himpunan dari subskrip j untuk αkj ≥ 0
J- : himpunan dari subskrip j untuk αkj< 0
Dari (4) dan (5) didapat
∑
+ ∈ ≥ α J j k j j kW f (6)∑
− ∈ ≥ α − j J k j j k k k f W 1 f f (7)Semua pembatas ini tidak terjadi secara simultan maka persamaan (6) dan (7) dapat dikombinasi menjadi :
Sk – {
∑
+ ∈ α J j j j kW +∑
− ∈ α − jJ1 j j k k k W 1 f f } = -fk (Potongan Campuran)Gunakan dual simpleks (Karena Wj = 0 ! tidak layak)
Contoh 3.8
Dari contoh 3.7 di atas, misalakan X1 harus merupakan bilangan bulat
X1 – 1/22 X3 + 3/22 X4 = ( 4+ ½) J- = {3}; J+ = {4}, f1= ½ Potongan campuran : S1 – {3/22 X4 + 1 2 / 1 2 / 1 − (-1/22) X3 } = -1/2 S1 – 1/22 X3 – 3/22 X4 = -1/2 Tabel : Basis X1 X2 X3 X4 S1 Solusi Z 0 0 28/11 15/11 0 63 X2 0 1 7/22 1/22 0 7/2 X1 1 0 -1/22 3/22 0 9/2 S1 0 0 -7/22 -1/22 1 -1/2 Dual Simpleks : Basis X1 X2 X3 X4 S1 Solusi Z 0 0 23/11 0 10 58 X2 0 1 10/33 0 -1/3 10/3 X1 1 0 -1/11 0 1 4 X4 0 0 1/3 1 -22/4 11/3 Penyelesaian optimal : X1 = 4, X2 = 10/3 Z = 58