Pemrograman Bilangan Bulat (Integer Programming)
LOGO Pemrograman Bilangan Bulat
(Integer Programming) Amelia Kurniawati ST., MT.
Outline
Pengantar
- Konsep
pemrograman bilangan bulat
Bilangan
Contoh model
- pemrograman
Bulat
Metode
Metode branch
- pemecahan
and bound bilangan bulat
GOAL
Memahami permasalahan dan solusi variabel integer
Memahami metode Branch and Bound
LOGO
Konsep Bilangan Bulat
LOGO
① Pengantar Pemrograman
Bilangan BulatPemrograman Bilangan Bulat
Pemrograman bilangan bulat (integer
programming) mensyaratkan bahwa
beberapa variabel keputusan harusmempunyai nilai yang bulat (bukan
pecahan)
Disini, pembahasan hanya ditujukan
untuk masalah pemrograman linier bilangan bulat (integer linear programming problem)Jenis Pemrograman Linier Bilangan Bulat
Pemrograman linier bilangan bulat murni (pure integer linear programming, PILP)
Pemrograman linier bilangan bulat campuran (mixed integer linear programming, MILP)
Pemrograman linier bilangan bulat biner (binary integer linear programming, BILP)
Contoh Pemrograman Linier Bilangan Bulat Biner Pembatas Either-Or
3 x
2
18 x
1
2 atau
x
4
16 x
1
2 LP format:
3 x
2
18 x
1
2 x 4 x
16 M 3 x 2 x
18 My
dan
1
2
1
2
atau
x 4 x
16 M ( 1 y )
1
2 3 x 2 x
18 M
1
2
dan
x
4 16 y ,
1
x
1 2 i
Fungsi dengan N Nilai yang Mungkin
1
, , 2 , 1 , 1 ,
N i y i
N i i y
1
1
Perumusan ILP:
, , ,
2
N n d d d x x x f
1
N i i i n
y d x x x f
1
2
1
2
, atau atau atau , ,
Contoh Pemrograman Linier Bilangan Bulat Biner
Contoh Kasus:
2
i y i
3 , 2 , 1 , 1 ,
y y y
1
2
3
1
Perumusan ILP:
y y y x x
3
6
18 atau 12 atau
12
18
1
2
1
2
3
x
x
1
2
3
2
6
Contoh Pemrograman Linier Bilangan Bulat Biner
Representasi Biner untuk Variabel Bilangan Bulat
u x 1
2 2 dimana
N N u
Representasi biner:
N i i i y x
2
N i y i
, , 2 , 1 , 1 ,
Batas-batas untuk variabel x:
Contoh Pemrograman Linier Bilangan Bulat Biner
Contoh Pemrograman Linier bilangan bulat biner Contoh Kasus:
2
3 x
5 u untuk x = 5 2
5 2
1
1
3
4 2 x
3
30 x u untuk x = 10 2 10 2
1
2
2 Representasi biner: y 2 y 4 y
5
1
2
2 y 2 y 4 y 3 w 2 w 4 w
8
30
1
2
1
2
3
y , 1 , i , 1 ,
2 i
w , 1 , i , 1 , 2 ,
3 i
LOGO
② Beberapa Contoh Model
Pemrograman BilanganBulat
Beberapa Contoh Model-model
Pemrograman Bilangan Bulat Fixed charge problem
Knapsack problem
Set covering problem
Set Partitioning Problem
Traveling salesman problem
Job (Machine) scheduling problem
Fixed Charge Problem (1) Misalkan terdapat n jenis produk p = harga satuan produk j j
K = biaya tetap untuk memproduksi produk j
j(independen terhadap jumlah produksi) c = biaya variabel untuk memproduksi j
produk j (proporsional terhadap jumlah
produksi) b = kapasitas sumber i (i = 1, …m) i a = kebutuhan sumber i untuk per unit ij produk jFixed Charge Problem (2) Permasalahan :
Menentukan produk mana yang perlu diproduksi dan
jumlah produksinya masing-masing agar diperoleh
profit (selisih penjualan dengan biaya tetap dan
variabel) total yang maksimum dengan memperhatikan
kondisi: ketersediaan kapasitas- jika suatu produk diputuskan untuk tidak diproduk
- maka jumlah produksinya nol.
Variabel keputusan : x = jumlah produk j yang diproduksi j y = keputusan untuk memproduksi atau tidak j produk j; y = 1 jika produk j diproduksi j y = 0 jika produk j tidak diproduksi j
Fixed Charge Problem (3) n n
Maksimasi Z p x K y c x
j j j j j j
j 1 j
1
dengan pembatas-pembatas:
n a x b , i 1 , , m
ij j i
j
1
x My , j
1 , , n
j j x , j
1 , , n
j y ,
1 , j 1 ,..., n
j
Knapsack Problem (1) Misalkan terdapat n item. w = berat item j j v = nilai item j j
W = kapasitas muatan (berat) dari kantong Permasalahan : Menentukan jumlah item yang perlu dimasukkan ke dalam kantong agar diperoleh nilai total yang
maksimum dengan memperhatikan kondisi kapasitas
muatan (berat) dari kantong Variabel keputusan : x = jumlah item yang dimasukkan ke kantong jKnapsack Problem (2) n
Maksimasi Z v x j j
j
1 dengan pembatas-pembatas: n
w x W
j j
j
1 x dan bilangan bulat
j
Set Covering Problem (1)
Contoh masalah set covering problem dalam menentukan
lokasi pendirian pos siskamling1
2 Jalan A Jalan B
3 K
I n n la la Ja Ja
G F n
Jalan C
lan la
4
5 Ja
Ja J H n n la la Ja Ja
Jalan E Jalan D
6
7
8
Set Covering Problem (2) Misalkan terdapat n lokasi pendirian pos dan m jalan. c = biaya mendirikan pos di lokasi j j a = konstanta biner (0-1) ij a = 1 jika jalan i dilayani oleh pos yang berlokasi di j ij a = 0 jika sebaliknya ij
Pertanyaan: Menentukan lokasi pendirian pos dimana tiap jalan dapat
dilayani minimal oleh satu pos sehingga diperoleh biaya total
pendirian yang minimum Variabel keputusanx = variabel biner (0-1) yang menentukan keputusan
j untuk mendirikan pos di lokasi j (x = 1 jika pos j didirikan di lokasi j, x = 0 sebaliknya) jSet covering problem (3)
n
Minimasi
Z c x
j j
j
1 dengan pembatas-pembatas: n a x 1 , i 1 ,..., m
ij j
j
1 x , 1 , j 1 ,..., n
j
Set Partitioning Problem Tiap jalan n tepat dilayani
Minimasi Z c x
j j oleh satu pos
j
1 dengan pembatas-pembatas: n a x 1 , i 1 ,..., m
ij j
j
1 x , 1 , j 1 ,..., n
j
Traveling Salesman Problem (1)
1
2
3
4
5
5
6
3
4
3
8
2
6
1
7 (jarak)
Traveling Salesman Problem (2) Misalkan terdapat n titik. c = jarak antara titik i ke titik j (c =
untuk i = j) ij ij
Menentukan rute salesman yang berangkat dari suatu titik dan mengunjungi setiap titik yang lain paling
banyak sekali, serta kembali ke titik asal agar diperoleh
jarak total yang minimum Variabel keputusan X = keputusan untuk melintasi atau tidak busur (i, j) ij x = 1 jika busur (i, j) dilintasi ij x = 0 jika busur (i, j) tidak dilintas ijTraveling Salesman Problem (3) n n
Minimasi Z c x
ij ij
j 1 j1
dengan pembatas-pembatas:
n x 1 , i
1 , , n
ij
j
1 n
Subtour breaking x
1 , j 1 , , n constraint
ij i
1 u u nx n
1 , i 2 , , n ; j 2 , , n ; i j
i j ij x ,
1 , i 1 , , n ; j 1 , n
ij u , i
1 ,..., n
i
Traveling Salesman Problem (4)
2 Subtour
1
3
5
4 Subtour breaking constraint bertujuan untuk mengeliminasi
terjadinya solusi subtour
Traveling Salesman Problem (5)
2 Tour
1
3
5
4 Suatu solusi traveling salesman problem yang layak (terbentuknya suatu tour).
Job Scheduling Problem (1) Misalkan terdapat n job dengan operasi-tunggal
terdapat satu mesin tunggal p = waktu pengerjaan job j j w = bobot kepentingan job j j
Permasalahan: Menentukan saat awal (juga secara implisit menentukan saat akhir) pengerjaan job agar diperoleh waktu penyelesaian tertimbang total
(total weighted completion time) yang minimum
dengan memperhatikan bahwa pada suatu saat mesin hanya dapat mengerjakan satu operasi (job)Job Scheduling Problem (2) Variabel keputusan: B j
= saat awal pengerjaan job j C j
= saat akhir pengerjaan job j y ij
= keputusan apakah job i mendahului job i y ij
= 1 jika job i mendahului job j y ij
= 0 jika sebaliknya
3
1
4
5
2 p
3 p
1 p
4 p
5 p
2 Suatu solusi (jadwal) pengerjaan job yang layak
Job Scheduling Problem (3)
n j j j
C w Z
1 Minimasi
C n i p j j
n j n i y ij
(Either-or constraint)
Disjunctive constraint
, , 1 ,
C n i p B j j j
,..., 1 , 1 , 1 ,
,
, 1 ; , 1 ,
, , 1 ,
; ,
My j i n j n i p C C
j ij j idengan pembatas-pembatas:
C n i j
1
, 1 ; , 1 ,
, ,
M j i n j n i p y C C i ij i j
,..., 1 ,
LOGO Metode Pemecahan Model Pemrograman Bilangan Bulat
Metode Pemecahan Metode pemecahan kasus pemrograman bilangan bulat:
Cutting method
Cutting Plane
Search method
Branch and Bound
LOGO Metode Cutting Plane
Algoritma Cutting Plane
Dikembangkan oleh R.E. Gomory
Algoritma
Fractional algorithm untuk masalah
pemrograman bilangan bulat murni (PILP)
Mixed algorithm untuk masalah pemrograman
bilangan bulat campuran (MILP)
Ilustrasi Suatu Masalah ILP
Maximasi Z = 7x + 9x
1
2
dengan pembatas-pembatas:
- –x + 3x 6
1
2
7x + x 35
1
2 x , x ≥ 0 dan bilangan bulat
1
2
Daerah layak x
2
Solusi Optimal Kontinyu (dengan mengabaikan kondisi integralitas) x
2
63 3 , , 4 ) (
2
1
2
1
2
1
Z x x
Ide Dasar dari Cutting Plane
Mengubah convex set dari daerah
ruang pemecahan (solution space)
sehingga titik ekstrem menjadi bilangan bulat Perubahan dibuat tanpa men-slicing
off daerah layak dari masalah awal.
Perubahan dilakukan dengan penambahan beberapa secondary constraint.
Penambahan pembatas sekunder x
2 secondary constraint
55 3 , , 4 ) (
2
1
Z x x
Fractional Algorithm (1)
Digunakan untuk memecahkan masalah
pemrograman linier bilangan bulat murni
(PILP).
Mensyaratkan bahwa semua koefisien teknologi dan konstanta ruas kanan adalah bilangan bulat.
1
13
x x
1
2
6 x
2
39 x
1
2
3
2
Pada awalnya, masalah PILP dipecahkan
sebagai LP reguler, yaitu dengan mengabaikan kondisi integralitas.Fractional Algorithm (2)
i n
n x m
1
m
1
m j
m n
m
j c
1 c j c n c
i j
1
Basis
1
x
1 x i x m w
1 w j w n
Solusi
x
1
1
1
i
1 j
1 n
1 x i
1
Tabel akhir optimal untuk LP
Fractional Algorithm (3) Variabel x (i = 1, …, m) menunjukkan variabel basis i
Variabel w (j = 1, …, n) menunjukkan variabel non basis j
Misalkan persamaan ke-i dimana variabel x diasumsikan i bernilai bilangan bulat n j x w , bukan bilangan bulat
i i i j i
j
1 (baris sumber)
Fractional Algorithm (4) f
Misal:
i i i
j j f
i i ij
dimana
N = [a] adalah bilangan bulat terbesar sehingga N a
0 < f < 1 i< 1 f ij
Fractional Algorithm (5) Dari baris sumber diperoleh: n n j f f w x w
i ij i i i i j
j 1 j
1 Agar semua x dan w adalah bilangan bulat,
i j maka ruas kanan dari persamaan harus bilangan bulat Akibatnya, ruas kiri harus bilangan bulat
Fractional Algorithm (6) Untuk f ij
0 dan w j
0 untuk semua i dan j maka
1
n j
j ij
w fAkibatnya i n j
j ij i
f w f f
1
Fractional Algorithm (7)
1
1
n j j ij i w f f
Karena f i
< 1 maka
Karena ruas kiri harus bilangan bulat, maka syarat perlu
untuk memenuhi integralitas adalah:1
n j j ij i w f f
Fractional Algorithm (8)
Pertidaksamaan terakhir dapat dijadikan sebagai pembatas
dalam bentuk: nS f w f (fractional cut)
i ij j i
j
1
Fractional Algorithm (9) Tabel setelah penambahan fractional cut
x x x w w w S
Basis 1 i m 1 j n i 1 j n Solusi
x 1
1 1 1 1 1 1 j n
x i
1 i i i n 1 j n
x m
1 m m m m 1 j m
S
- -f -f -f -f i i i i i
- –x + 3x 6
- – z
- 28/11 -15/11 Z = 63 Tabel optimal kontinyu
- 7/22 -1/22 1 -1/2
- – z
- 28/11 -15/11 Tabel setelah penambahan fractional cut
- – z
- 1 -8 Z = 59 Tabel yang diperoleh dengan dual simplex:
- 1/7 -6/7 1 -4/7
- 1 -8
- 1
- – z
- 2 -7 Z = 55
- –x + 3x 6
- = himpunan subscripts j untuk
- = himpunan subscripts j untuk
- –x + 3x 6
- 28/11 -15/11 Z = 63
- 1/22 -3/22 1 -1/2
- – z
- 28/11 -15/11 Tabel setelah penambahan mixed cut
- – z
- 23/11 -10 Z= 58 Tabel yang diperoleh dengan dual simplex: Solusi optimal, x
1
c c
c c j j n
1
Fractional Algorithm (10)
Dengan penambahan fractional cut,
tabel terakhir menjadi tidak layakwalaupun optimal sehingga metode
dual simplex diterapkan untuk meniadakan ketidaklayakan. Algoritma berhenti jika solusi optimal bilangan bulat diperoleh.
Fractional Algorithm (11) Kekuatan fractional cut n f w f
ij j i
j
1
n f w f
kj j k
j
1
Cut (1) dikatakan lebih kuat dari cut (2) jika
f dan f f untuk semua j dengan strict inequality
f i k ij kj terpenuhi paling sedikit satuFractional Algorithm (12) Aturan :
i i f max
n j
ij
i i f f1 max
Ilustrasi Penerapan Fractional Algorithm (1)
Maximasi Z = 7x + 9x
1
2
dengan pembatas-pembatas:
1
2
7x + x 35
1
2 x , x ≥ 0 dan bilangan bulat
1
2
Ilustrasi Penerapan Fractional Algorithm (2)
Basis x
1 x
2 x
3 x
4 Solusi x
2 1 7/22 1/22
3
1 /
2 x
1 1 -1/22 3/22
4
1 /
2 c j
j
Ilustrasi Penerapan Fractional Algorithm (3)
22
22
7
4
3
2 x x x
2
1
1
22
22
7
4
3
1
S x x Fractional cut:
Baris sumber persamaan-x
1
3
2
7
22
1
22
7
4
3
2
x x x
1
2
2
Ilustrasi Penerapan Fractional Algorithm (4)
Basis x
1 x
2 x
3 x
4 S
1 Solusi x
2 1 7/22 1/22 7/2 x
1 1 -1/22 3/22 9/2
S
1
c j
j
j
1
7 c j
4 /
1
3 1 1/7 -22/7
7 x
4 /
4
1 1/7 -1/7
3 x
Ilustrasi Penerapan Fractional Algorithm (5)
1
1
2
1 Solusi x
4 S
3 x
2 x
1 x
Basis x
Ilustrasi Penerapan Fractional Algorithm (6)
6
1
7
1
1
4
7
4
7
7
7
1
1
4
2
S x S Fractional cut:
Baris sumber persamaan-x
1
6
4
7
1
4
4
7
1
7
1
1
4
4
S x x
1 S x x
7
Ilustrasi Penerapan Fractional Algorithm (7)
Tabel setelah penambahan fractional cut
x x x x S S
Basis Solusi
x
1
1
3
2
4 x
1 1/7 -1/7 4 /
1
7
4 x
1 / 1 1/7 -22/7
3
7 S
2 c – z
j j
x
1 = 4, x
Solusi bilangan bulat optimal, x
j
c j
4
1 6 -7
4
x
1
1
1 -4
3
4
1
1
1
x
3
1
1
2
x
Solusi
x x x x S S
Basis
Ilustrasi Penerapan Fractional Algorithm (8)
2 = 3; Z = 55 Tabel yang diperoleh dengan dual simplex:
2
7
2
1
2
1
1
S x x x x
6
3
2
1 x
S
3
2 x
22
3
1
1
22
1
22
7
4
3
1
S x x Ilustrasi Fractional Cut secara grafis (1)
2
1
7
35
22
Fractional cut 1:
Ilustrasi Fractional Cut x
2 secara grafis (2) x
3
2 x
1
Ilustrasi Fractional Cut secara grafis (3)
Fractional cut 2:
1
6
4 S x S
2
4
1
7
7
7
1
6
4 S
35 7 x x 3 x
2
1
2
2
7
7
7 S x x
7
2
1
2 x
7 x
1
2
Ilustrasi Fractional Cut
secara grafis (4) x2 x
3
2
x
7 x
1
2 x
1
Mixed Algorithm (1)
Digunakan untuk memecahkan masalah pemrograman linier bilangan bulat campuran (MILP)
Pada awalnya, masalah MILP
dipecahkan sebagai LP reguler, yaitu
dengan mengabaikan kondisi integralitas.Mixed Algorithm (3)
Maximasi Z = 7x + 9x
1
2
dengan pembatas-pembatas:
1
2
7x + x 35
1
2 x ≥ 0 dan bilangan bulat
1 x ≥ 0
2
Mixed Algorithm (3)
n j j j k k k w x
1
Misal x k adalah variabel bilangan bulat dari masalah MILP.
Persamaan-x k
dalam solusi kontinyu optimal :
n j j j k k k k w f x
1
n j j j k k k k w f x
1
(baris sumber)
Mixed Algorithm (4) Untuk x adalah bilangan bulat, maka k x atau x
1 k k k k
harus dipenuhi Dari baris sumber, kondisi ini ekivalen dengan n j
(1) f
w k k k
j
1 n j
(2) w f
1 k k k
j
1
Mixed Algorithm (5) Misal
J
k j 0 J
k j < 0
Dari (1) dan (2) diperoleh
k
nJ j k j k f w
k
nJ j k j k k k f w f f
1 (1) (2)
Mixed Algorithm (6) Karena (1) dan (2), tidak dapat terjadi secara simultan, maka (3) dan (4) dapat digabungkan menjadi satu pembatas dalam bentuk k
n
J j
k j k k k n J j k j k k f w f f S w
1 (mixed cut)
Ilustrasi Penerapan Mixed Algorithm (1)
Maximasi Z = 7x + 9x
1
2
dengan pembatas-pembatas:
1
2
7x + x 35
1
2 x ≥ 0 dan bilangan bulat
1 x ≥ 0
2
Ilustrasi Penerapan Mixed Algorithm (2) Tabel optimal kontinyu:
x x x x
Basis Solusi
1
2
3
4 x
1 7/22 1/22 7/2
2 x 1 -1/22 3/22 9/2
1 c – z
j j
Ilustrasi Penerapan Mixed Algorithm (3)
22
S x x
2
1
22
3
1
4
3
1
S x x Mixed cut:
Baris sumber persamaan-x
1
2
1
1
, 4 ,3
2
2
1
4
22
3
22
1
4
3
1 x x x
1
1
22
1
1
22
3
3
2
1
2
1
4
J f J Basis x
1 x
2 x
3 x
4 S
1 Solusi x
2 1 7/22 1/22 7/2 x
1 1 -1/22 3/22 9/2
S
1
c j
j Basis x
1 x
2 x
3 x
4 S
1 Solusi x
2 1 10/33 -1/3 10/3 x
1 1 -1/11
1
4 x
4 1/3 1 -22/3 11/3 c j
j
1 = 4, x
2 = 10/3; Z = 55
LOGO Metode Branch and Bound
Algoritma Branch-and-Bound (1)
Metode yang paling banyak digunakan dalam praktek untuk memecahkan masalah pemrograman bilangan bulat baik murni maupun campuran.
Digunakan sebagian besar software komersial
Pada dasarnya merupakan prosedur
enumerasi yang efisien untuk memeriksa semua solusi layak yang mungkin.
Algoritma Branch-and-Bound (2)
Algoritma BB untuk ILP (PILP & MILP)
Algoritma BB untuk BILP
Algoritma BB untuk ILP (1) Misalkan diberikan suatu masalah pemrograman bilangan bulat sebagai berikut:
Maksimasi Z = cx dengan pembatas Ax = b x 0 x bilangan bulat untuk j I j dimana I adalah himpunan variabel bilangan bulat
Algoritma BB untuk ILP (2)
Langkah pertama adalah memecahkan masalah
ILP sebagai LP dengan mengabaikan pembatas bilangan bulat (bounding)
Misalkan masalah LP dinyatakan sebagai LP-1
yang mempunyai nilai optimal dari fungsi tujuan Z .
1 PL-1
Maksimasi Z = cx dengan pembatas Ax = b x 0
Algoritma BB untuk ILP (3)
Asumsikan bahwa solusi optimal dari LP-1
mengandung beberapa variabel bilangan bulat yang mempunyai nilai pecahan.
Oleh karena itu, solusi optimal bilangan bulat untuk ILP belum diperoleh dan Z
1 menjadi batas atas (upper bound) dari nilai maksimum Z untuk ILP.
Langkah berikutnya adalah mempartisi daerah layak dari LP-1 dengan mencabangkan (branching) salah satu variabel bilangan bulat yang nilainya pecahan
Algoritma BB untuk ILP (4) Misalkan variabel x dipilih untuk
j
dicabangkan dengan nilai pecahan dalam
j LP-1.
Misalkan dibuat dua masalah pemrograman linier baru, LP-2 dan LP-3 dengan memasukkan masing-masing pembatas baru x [] dan x []+1 j j
Algoritma BB untuk ILP (5) Maksimasi Z = cx dengan pembatas
Ax = b x j
[] x 0
Maksimasi Z = cx dengan pembatas Ax = b x j
[]+1 x 0
PL-2 PL-3
Algoritma BB untuk ILP (6) Z
1 LP-1 x [ ]
x [ ]
1 j j
j j
Solusi pecahan Solusi pecahan
LP-2 LP-2 Z
2
5 Z
Algoritma BB untuk ILP (7)