(9) integer programming - branch and bound (ind)

121
Pemrograman Bilangan Bulat (Integer Programming) Amelia Kurniawati ST., MT.

Upload: ratih-iba-gustin

Post on 16-Jan-2016

144 views

Category:

Documents


10 download

DESCRIPTION

integer programming

TRANSCRIPT

Page 1: (9) Integer Programming - Branch and Bound (Ind)

Pemrograman Bilangan Bulat(Integer Programming)

Amelia Kurniawati ST., MT.

Page 2: (9) Integer Programming - Branch and Bound (Ind)

Outline

2

Konsep Bilangan Bulat

Metode pemecahan

bilangan bulat

• Pengantar pemrograman bilangan bulat

• Contoh model pemrograman

• Metode branch and bound

Page 3: (9) Integer Programming - Branch and Bound (Ind)

3

GOAL

• Memahami permasalahan dan solusi variabel integer

• Memahami metode Branch and Bound

Page 4: (9) Integer Programming - Branch and Bound (Ind)

Konsep Bilangan Bulat

Page 5: (9) Integer Programming - Branch and Bound (Ind)

Pengantar Pemrograman Bilangan Bulat1

Page 6: (9) Integer Programming - Branch and Bound (Ind)

Pemrograman Bilangan Bulat

• Pemrograman bilangan bulat (integer programming) mensyaratkan bahwa beberapa variabel keputusan harus mempunyai nilai yang bulat (bukan pecahan)

• Di sini, pembahasan hanya ditujukan untuk masalah pemrograman linier bilangan bulat (integer linear programming problem)

6

Page 7: (9) Integer Programming - Branch and Bound (Ind)

Jenis Pemrograman LinierBilangan 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)

7

Page 8: (9) Integer Programming - Branch and Bound (Ind)

8

Pembatas Either-Or

1823 21 xx

164 21 xx

1823 21 xxMxx 164 21

Mxx 1823 21

164 21 xx

dan

dan

Myxx 1823 21

)1(164 21 yMxx atau

atau

LP format:

1,0iy

Contoh Pemrograman Linier Bilangan Bulat Biner

Page 9: (9) Integer Programming - Branch and Bound (Ind)

Fungsi dengan N Nilai yang Mungkin

9

Nn dddxxxf atau atau atau ,,, 2121

N

iiin ydxxxf

121 ,,,

Perumusan ILP:

11

N

iiy

Niyi ,,2,1 ,1,0

Contoh Pemrograman Linier Bilangan Bulat Biner

Page 10: (9) Integer Programming - Branch and Bound (Ind)

10

Contoh Kasus:18atau 12atau 623 21 xx

32121 1812623 yyyxx

Perumusan ILP:

1321 yyy

3,2,1 ,1,0 iyi

Contoh Pemrograman Linier Bilangan Bulat Biner

Page 11: (9) Integer Programming - Branch and Bound (Ind)

Representasi Biner untuk Variabel Bilangan Bulat

ux 0 122 dimana NN u

Representasi biner:

N

ii

i yx0

2

Niyi ,,2,1 ,1,0

Batas-batas untuk variabel x:

Contoh Pemrograman Linier Bilangan Bulat Biner

11

Page 12: (9) Integer Programming - Branch and Bound (Ind)

Contoh Kasus:

12

51 x

Representasi biner:

542 210 yyy

2,1,0 ,1,0 iyi

3032 21 xx

308423422 3210210 wwwyyy

u untuk x1 = 5 22 5 23 u untuk x2 = 10 23 10 24

3,2,1,0 ,1,0 iwi

Contoh Pemrograman Linier Bilangan Bulat Biner

Page 13: (9) Integer Programming - Branch and Bound (Ind)

Beberapa Contoh Model Pemrograman Bilangan Bulat2

Page 14: (9) Integer Programming - Branch and Bound (Ind)

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

14

Page 15: (9) Integer Programming - Branch and Bound (Ind)

Fixed Charge Problem (1)

Misalkan terdapat n jenis produkpj = harga satuan produk j

kj = biaya tetap untuk memproduksi produk j (independen terhadap jumlah produksi)

cj = biaya variabel untuk memproduksi produk j (proporsional terhadap jumlah produksi)

bi = kapasitas sumber i (i = 1, …m)

aij = kebutuhan sumber i untuk per unit produk j

15

Page 16: (9) Integer Programming - Branch and Bound (Ind)

16

Fixed 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 jenis produk diputuskan untuk tidak diproduksi maka jumlah produksinya

nol, dan biaya tetap dan biaya variabel untuk produk tersebut juga nol. jika suatu jenis produk diputuskan untuk diproduksi maka jumlah produksinya x, dan

muncul biaya tetap (tidak tergantung jumlah x) dan biaya variabel (tergantung jumlah x) yang harus dikeluarkan.

Variabel keputusan :xj = jumlah produk j yang diproduksiyj = keputusan untuk memproduksi atau tidak produk j;yj = 1 jika produk j diproduksiyj = 0 jika produk j tidak diproduksi

Page 17: (9) Integer Programming - Branch and Bound (Ind)

Fixed Charge Problem (3)

17

n

jjjjj

n

jjj xcyKxpZ

11

Maximize

dengan pembatas-pembatas:

mibxa i

n

jjij ,,1 ,

1

njMyx jj ,,1 ,

njx j ,,1 ,0

njy j ,...,1 ,1,0

Page 18: (9) Integer Programming - Branch and Bound (Ind)

Knapsack Problem (1)Misalkan terdapat n item.wj = berat item jvj = nilai item jW = 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 :xj = jumlah item yang dimasukkan ke kantong

18

Page 19: (9) Integer Programming - Branch and Bound (Ind)

Knapsack Problem (2)

19

n

jjj xvZ

1

Maximize

dengan pembatas-pembatas:

Wxwn

jjj

1

bulatbilangan dan 0jx

Page 20: (9) Integer Programming - Branch and Bound (Ind)

Set Covering Problem (1)

20

Jalan C

Jalan D

Jalan BJalan A

Jalan E

Jalan

F

Jala

n G Ja

lan

KJa

lan

J

Jala

n I

Jala

n H

1 2

6 7

4

8

5

3

Contoh masalah set covering problem dalam menentukanlokasi pendirian pos siskamling

Page 21: (9) Integer Programming - Branch and Bound (Ind)

Set Covering Problem (2)Misalkan terdapat n lokasi pendirian pos dan m jalan.Cj = biaya mendirikan pos di lokasi j

Aij = konstanta biner (0-1)

aij = 1 jika jalan i dilayani oleh pos yang berlokasi di j

aij = 0 jika sebaliknya

Pertanyaan:Menentukan lokasi pendirian pos dimana tiap jalan dapat dilayani minimal oleh satu pos sehingga diperoleh biaya total pendirian yang minimum

Variabel keputusanxj = variabel biner

(0-1) yang menentukan keputusan untuk mendirikan pos di lokasi j (xj = 1 jika pos didirikan di lokasi j, xj = 0 sebaliknya)

21

Page 22: (9) Integer Programming - Branch and Bound (Ind)

Set covering problem (3)

22

n

jjj xcZ

1

Minimize

Dengan pembatas-pembatas:

mixan

jjij ,...,1 ,1

1

njx j ,...,1 ,1,0

Page 23: (9) Integer Programming - Branch and Bound (Ind)

Set Partitioning Problem

23

n

jjj xcZ

1

Minimize

Dengan pembatas-pembatas:

mixan

jjij ,...,1 ,1

1

njx j ,...,1 ,1,0

Tiap jalantepat dilayanioleh satu pos

Page 24: (9) Integer Programming - Branch and Bound (Ind)

Traveling Salesman Problem (1)

24

1

2

3

45

5

6

3

4

38

2

6

1

7

(jarak)

Page 25: (9) Integer Programming - Branch and Bound (Ind)

Traveling Salesman Problem (2)Misalkan terdapat n titik.Cij = jarak antara titik i ke titik j (cij = untuk i = j)

PermasalahanMenentukan 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 keputusanXij = keputusan untuk melintasi atau tidak busur (i, j)

xij = 1 jika busur (i, j) dilintasi

xij = 0 jika busur (i, j) tidak dilintasi

25

Page 26: (9) Integer Programming - Branch and Bound (Ind)

Traveling Salesman Problem (3)

26

n

j

n

iijij xcZ

1 1

Minimize

dengan pembatas-pembatas:

nixn

jij ,,1 ,1

1

njxn

iij ,,1 ,1

1

jinjninnxuu ijji ;,,2;,,2 ,1

njnixij ,1;,,1 ,1,0

niui ,...,1 ,0

Subtour breakingconstraint

Page 27: (9) Integer Programming - Branch and Bound (Ind)

Traveling Salesman Problem (4)

27

1

2

3

45

Subtour

Subtour breaking constraint bertujuan untuk mengeliminasiterjadinya solusi subtour

Page 28: (9) Integer Programming - Branch and Bound (Ind)

Traveling Salesman Problem (5)

28

1

2

3

45

Tour

Suatu solusi traveling salesman problem yang layak (terbentuknyasuatu tour).

Page 29: (9) Integer Programming - Branch and Bound (Ind)

Job Scheduling Problem (1)Misalkan - terdapat n job dengan operasi-tunggal - terdapat satu mesin tunggal

pj = waktu pengerjaan job jwj = bobot kepentingan job 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)

29

Page 30: (9) Integer Programming - Branch and Bound (Ind)

Job Scheduling Problem (2)Variabel keputusan:Bj = saat awal pengerjaan job jCj = saat akhir pengerjaan job jyij = keputusan apakah job i mendahului job j

yij = 1 jika job i mendahului job j yij = 0 jika sebaliknya

30

0

3 1 4 5 2

p3 p1 p4 p5 p2

Suatu solusi (jadwal) pengerjaan job yang layak

Page 31: (9) Integer Programming - Branch and Bound (Ind)

Job Scheduling Problem (3)

31

n

jjjCwZ

1

Minimize

dengan pembatas-pembatas:

nipC jj ,,1 ,

jinjnipyMCC iijij ,,1;,,1 ,1

niC j ,...,1 ,0

jinjnipMyCC jijji ;,1;,,1 ,

njniyij ,1,,...,1 ,1,0

nipCB jjj ,,1 ,

Disjunctive constraint(Either-or constraint)

Page 32: (9) Integer Programming - Branch and Bound (Ind)

Metode Pemecahan Model Pemrograman Bilangan Bulat

Page 33: (9) Integer Programming - Branch and Bound (Ind)

Metode Pemecahan

Metode pemecahan kasus pemrograman bilangan bulat:

• Cutting method– Cutting Plane

• Search method– Branch and Bound

33

Page 34: (9) Integer Programming - Branch and Bound (Ind)

Metode Cutting Plane1

Page 35: (9) Integer Programming - Branch and Bound (Ind)

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)

35

Page 36: (9) Integer Programming - Branch and Bound (Ind)

36

Ilustrasi Suatu Masalah ILP

Maximize Z = 7x1 + 9x2

Dengan pembatas-pembatas: –x1 + 3x2 6 7x1 + x2 35 x1, x2 ≥ 0 dan bilangan bulat

Page 37: (9) Integer Programming - Branch and Bound (Ind)

Daerah layak

37

x2

x1

Page 38: (9) Integer Programming - Branch and Bound (Ind)

Solusi Optimal Kontinyu(dengan mengabaikan kondisi integralitas)

38

x2

x1

63

3,4),( 21

21

21

Z

xx

Page 39: (9) Integer Programming - Branch and Bound (Ind)

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.

39

Page 40: (9) Integer Programming - Branch and Bound (Ind)

Penambahan pembatas sekunder

40

x2

x1

secondary constraint

55

3,4),( 21

Z

xx

Page 41: (9) Integer Programming - Branch and Bound (Ind)

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.

• Pada awalnya, masalah PILP dipecahkan sebagai LP reguler, yaitu dengan mengabaikan kondisi integralitas.

41

2

13

3

121 xx 3926 21 xx

Page 42: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (2)

Basis x1 xi xm w1 wj wn Solusi

x1 1 0 0 11 1

j 1n 1

xi 0 1 0 i1 i

j in n

xm 0 0 1 m1 m

j mn m

0 0 0 0

42

jc1c jc

nc

Tabel akhir optimal untuk LP

Page 43: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (3)

43

Variabel xi (i = 1, …, m) menunjukkan variabel basisVariabel wj (j = 1, …, n) menunjukkan variabel non basis

Misalkan persamaan ke-i dimana variabel xi diasumsikan bernilai bilangan bulat

bulatbilangan bukan , i1

n

jj

jiii wx (baris sumber)

Page 44: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (4)

44

Misal: iii f

ijj

ij

i f

dimana N = [a] adalah bilangan bulat terbesar sehingga N a0 < fi < 10 fij < 1

Page 45: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (5)

45

Dari baris sumber diperoleh:

n

jj

jiii

n

jiiji wxwff

11

Agar semua xi dan wj adalah bilangan bulat,maka ruas kanan dari persamaan harus bilangan bulat Akibatnya, ruas kiri harus bilangan bulat

Page 46: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (6)

46

Untuk fij 0 dan wj 0 untuk semua i dan j maka

01

n

jjijwf

Akibatnya

i

n

jjiji fwff

1

Page 47: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (7)

47

11

n

jjiji wff

Karena fi < 1 maka

Karena ruas kiri harus bilangan bulat, maka syarat perluuntuk memenuhi integralitas adalah:

01

n

jjiji wff

Page 48: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (8)

48

Pertidaksamaan terakhir dapat dijadikan sebagai pembatasdalam bentuk:

i

n

jjiji fwfS

1

(fractional cut)

Page 49: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (9)

Basis x1 xi xm w1 wj wn Si Solusi

x1 1 0 0 11 1

j 1n 0 1

xi 0 1 0 i1 i

j in 0 n

xm 0 0 1 m1 m

j mn 0 m

Si 0 0 0 -fi1 -fi

j -fim 1 -fi

0 0 0 0 0

49

jc1c jc

nc

Tabel setelah penambahan fractional cut

Page 50: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (10)

• Dengan penambahan fractional cut, tabel terakhir menjadi tidak layak walaupun optimal sehingga metode dual simplex diterapkan untuk meniadakan ketidaklayakan.

• Algoritma berhenti jika solusi optimal bilangan bulat diperoleh.

50

Page 51: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (11)

51

i

n

jjij fwf

1

k

n

jjkj fwf

1

Cut (1) dikatakan lebih kuat dari cut (2) jika fi fk dan fij fkj untuk semua j dengan strict inequality terpenuhi paling sedikit satu

Kekuatan fractional cut

Page 52: (9) Integer Programming - Branch and Bound (Ind)

Fractional Algorithm (12)

52

Aturan : ii

fmax

n

jij

i

if

f

1

max

Page 53: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (1)

53

Maximize Z = 7x1 + 9x2

dengan pembatas-pembatas: –x1 + 3x2 6 7x1 + x2 35 x1, x2 ≥ 0 dan bilangan bulat

Page 54: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (2)

Basis x1 x2 x3 x4 Solusi

x2 0 1 7/22 1/22 3 1/2

x1 1 0 -1/22 3/22 4 1/2

cj – zj 0 0 -28/11 -15/11 Z = 63

54

Tabel optimal kontinyu

Page 55: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (3)

55

2

7

22

1

22

7432 xxx

2

13

22

10

22

70 432 xxx

2

1

22

1

22

7431 xxS

Fractional cut:

Baris sumber persamaan-x2

Page 56: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (4)

Basis x1 x2 x3 x4 S1 Solusi

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

cj – zj 0 0 -28/11 -15/11 0

56

Tabel setelah penambahan fractional cut

Page 57: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (5)

Basis x1 x2 x3 x4 S1 Solusi

x2 0 1 0 0 1 3

x1 1 0 0 1/7 -1/7 4 4/7

x3 0 0 1 1/7 -22/7 1 4/7

cj – zj 0 0 0 -1 -8 Z = 59

57

Tabel yang diperoleh dengan dual simplex:

Page 58: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (6)

58

7

44

7

1

7

1141 Sxx

7

44

7

61

7

10 141 Sxx

7

4

7

6

7

1142 SxS

Fractional cut:

Baris sumber persamaan-x1

Page 59: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (7)

Basis x1 x2 x3 x4 S1 S2 Solusi

x2 0 1 0 0 1 0 3

x1 1 0 0 1/7 -1/7 0 4 4/7

x3 0 0 1 1/7 -22/7 0 1 4/7

S2 0 0 0 -1/7 -6/7 1 -4/7

cj – zj 0 0 0 -1 -8 0

59

Tabel setelah penambahan fractional cut

Page 60: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Fractional Algorithm (8)

Basis x1 x2 x3 x4 S1 S2 Solusi

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

cj – zj 0 0 0 -2 -7 0 Z = 55

60

Solusi bilangan bulat optimal, x1 = 4, x2 = 3; Z = 55

Tabel yang diperoleh dengan dual simplex:

Page 61: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Fractional Cut secara grafis (1)

61

2

1

22

1

22

7431 xxS

2

1735

22

136

22

721211 xxxxS

321 xS

32 x

Fractional cut 1:

Page 62: (9) Integer Programming - Branch and Bound (Ind)

62

Ilustrasi Fractional Cut secara grafis (2)

x2

x1

32 x

Page 63: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Fractional Cut secara grafis (3)

63

7

4

7

6

7

1142 SxS

7

43

7

6735

7

12212 xxxS

7212 xxS

721 xx

Fractional cut 2:

Page 64: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Fractional Cut secara grafis (4)

64

x2

x1

32 x

721 xx

Page 65: (9) Integer Programming - Branch and Bound (Ind)

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.

65

Page 66: (9) Integer Programming - Branch and Bound (Ind)

Mixed Algorithm (2)

66

Maximize Z = 7x1 + 9x2

dengan pembatas-pembatas: –x1 + 3x2 6

7x1 + x2 35 x1 ≥ 0 dan bilangan bulat x2 ≥ 0

Page 67: (9) Integer Programming - Branch and Bound (Ind)

Mixed Algorithm (3)

67

n

jj

jkkk wx

1

Misal xk adalah variabel bilangan bulat dari masalah MILP.

Persamaan-xk dalam solusi kontinyu optimal:

n

jj

jkkkk wfx

1

n

jj

jkkkk wfx

1

(baris sumber)

Page 68: (9) Integer Programming - Branch and Bound (Ind)

Mixed Algorithm (4)

68

Untuk xk adalah bilangan bulat, maka

1atau kkkk xx

harus dipenuhi

k

n

jk

jk fw

1

Dari baris sumber, kondisi ini ekivalen dengan

11

k

n

jk

jk fw

(1)

(2)

Page 69: (9) Integer Programming - Branch and Bound (Ind)

Mixed Algorithm (5)

69

MisalJ+ = himpunan subscripts j untuk k

j 0J- = himpunan subscripts j untuk k

j < 0

Dari (1) dan (2) diperoleh

k

n

Jjk

jk fw

k

n

Jjk

jk

k

k fwf

f

1

(3)

(4)

Page 70: (9) Integer Programming - Branch and Bound (Ind)

Mixed Algorithm (6)

70

Karena (1) dan (2), tidak dapat terjadi secara simultan,maka (3) dan (4) dapat digabungkan menjadi satu pembatas dalam bentuk

k

n

Jjk

jk

k

kn

Jjk

jkk fw

f

fwS

1

(mixed cut)

Page 71: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Mixed Algorithm (1)

71

Maximize Z = 7x1 + 9x2

dengan pembatas-pembatas: –x1 + 3x2 6

7x1 + x2 35 x1 ≥ 0 dan bilangan bulat x2 ≥ 0

Page 72: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Mixed Algorithm (2)

Basis x1 x2 x3 x4 Solusi

x2 0 1 7/22 1/22 7/2

x1 1 0 -1/22 3/22 9/2

cj – zj 0 0 -28/11 -15/11 Z = 63

72

Tabel optimal kontinyu:

Page 73: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Mixed Algorithm (3)

73

2

14

22

3

22

1431 xxx

2

1

22

1

122

33

21

21

41

xxS

2

1

22

3

22

1431 xxS

Mixed cut:

Baris sumber persamaan-x1

21

1 ,4 ,3 fJJ

Page 74: (9) Integer Programming - Branch and Bound (Ind)

Basis x1 x2 x3 x4 S1 Solusi

x2 0 1 7/22 1/22 0 7/2

x1 1 0 -1/22 3/22 0 9/2

S1 0 0 -1/22 -3/22 1 -1/2

cj – zj 0 0 -28/11 -15/11 0

74

Tabel setelah penambahan mixed cut

Page 75: (9) Integer Programming - Branch and Bound (Ind)

Basis x1 x2 x3 x4 S1 Solusi

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/3 11/3

cj – zj 0 0 -23/11 -10 0 Z= 58

75

Tabel yang diperoleh dengan dual simplex:

Solusi optimal, x1 = 4, x2 = 10/3; Z = 55

Page 76: (9) Integer Programming - Branch and Bound (Ind)

Metode Branch and Bound2

Page 77: (9) Integer Programming - Branch and Bound (Ind)

Metode Branch and Bound

Page 78: (9) Integer Programming - Branch and Bound (Ind)

Algoritma Branch-and-Bound (1)

• Metode yang paling banyak digunakan dalam praktik 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.

78

Page 79: (9) Integer Programming - Branch and Bound (Ind)

79

Algoritma Branch-and-Bound (2)

• Algoritma BB untuk ILP (PILP & MILP)• Algoritma BB untuk BILP

Page 80: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (1)

80

Misalkan diberikan suatu masalah pemrogramanbilangan bulat sebagai berikut:

Maximize Z = cxdengan pembatas

Ax = bx 0

xj bilangan bulat untuk j Idimana I adalah himpunan variabel bilangan bulat

Page 81: (9) Integer Programming - Branch and Bound (Ind)

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 Z1.

81

LP-1Maximize Z = cxdengan pembatas

Ax = bx 0

Page 82: (9) Integer Programming - Branch and Bound (Ind)

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 Z1

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.

82

Page 83: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (4)

• Misalkan variabel xj dipilih untuk dicabangkan dengan nilai pecahan j dalam LP-1.

• Misalkan dibuat dua masalah pemrograman linier baru, LP-2 dan LP-3 dengan memasukkan masing-masing pembatas baru xj [] dan xj []+1.

83

Page 84: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (5)

84

Maximize Z = cxdengan pembatas

Ax = bxj []x 0

Maximize Z = cxdengan pembatas

Ax = b xj []+1 x 0

LP-2 LP-3

Page 85: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (6)

85

LP-1

LP-2 LP-2

Solusi pecahanZ1

Solusi pecahanZ2

][ jjx 1][ jjx

Solusi pecahanZ5

Page 86: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (7)

• Memecahkan (bounding) LP-2 dan LP-3• Asumsikan solusi LP-2 dan LP-3 masih pecahan• Langkah berikutnya adalah memilih node (masalah LP)

yang akan dicabangkan

86

Page 87: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (8)

• Setelah masalah LP dipilih untuk dicabangkan lebih lanjut, langkahnya selanjutnya adalah – memilih variabel bilangan bulat dengan nilai pecahan yang akan

dicabangkan untuk membentuk dua masalah LP baru (proses branching)

– memecahkan masalah LP yang baru (proses bounding)

• Jika solusi bilangan bulat diperoleh dari suatu masalah LP maka nilai Z-nya menjadi batas bawah (lower bound) dari nilai maksimum Z untuk masalah ILP

87

Page 88: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (9)

• Proses branching dan bounding berlanjut hingga semua node dalam kondisi fathomed.

• Fathoming suatu node (masalah LP):– Solusi optimal LP merupakan bilangan bulat– Masalah LP adalah tak layak– Nilai optimal Z dari masalah LP tidak lebih baik

daripada batas bawah (lower bound) saat ini.

88

Page 89: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (10)

89

LP-1

LP-2 LP-3

Solusi pecahanZ0 = Z1

Solusi pecahanZ2

][ jjx 1][ jjx

Solusi pecahanZ5

LP-3 LP-4

Tidak layakSolusi bulatZ4

][ iix 1][ iix

Page 90: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (11)

90

LP-1

LP-2

LP-3 LP-4

LP-5

LP-6 LP-7

Solusi pecahanZ0 = Z1

Solusi pecahanZ2

Tidak layakSolusi bulatZ4

Solusi pecahanZ6 < Z4

][ jjx 1][ jjx

][ iix 1][ iix 1][ kkx ][ kkx

Solusi pecahanZ5

Solusi pecahanZ7 > Z4

Page 91: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk ILP (12)

• Esensi dari algoritma BB– Bounding– Branching– Fathoming

91

Page 92: (9) Integer Programming - Branch and Bound (Ind)

Ilustrasi Penerapan Algoritma BB (1)

92

Maximize Z = 2x1 + 3x2

dengan pembatas-pembatas: 5x1 + 7x2 35

4x1 + 9x2 36 x1, x2 ≥ 0 dan bilangan bulat

Page 93: (9) Integer Programming - Branch and Bound (Ind)

Contoh Kasus:

93

LP-1178

176

21712

1

14

2,3

Z

xx

Page 94: (9) Integer Programming - Branch and Bound (Ind)

94

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

Contoh Kasus:

Page 95: (9) Integer Programming - Branch and Bound (Ind)

95

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-4 LP-5

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Contoh Kasus:

Page 96: (9) Integer Programming - Branch and Bound (Ind)

96

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-4 LP-5

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Contoh Kasus:

Page 97: (9) Integer Programming - Branch and Bound (Ind)

97

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-4 LP-5

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Contoh Kasus:

Page 98: (9) Integer Programming - Branch and Bound (Ind)

98

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-4 LP-5

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Fathomed karena perbedaannilai Z dengan lower bound < 1dan semua koefisien fungsi tujuan adalah bulat

Solusi bilangan bulatoptimalx1 = 4, x2 = 2Z = 14

Contoh Kasus:

Page 99: (9) Integer Programming - Branch and Bound (Ind)

99

LP-1178

176

21712

1

14

2,3

Z

xxPencabangandari LP-3

Page 100: (9) Integer Programming - Branch and Bound (Ind)

100

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

Page 101: (9) Integer Programming - Branch and Bound (Ind)

101

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

Page 102: (9) Integer Programming - Branch and Bound (Ind)

102

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

Page 103: (9) Integer Programming - Branch and Bound (Ind)

103

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

Page 104: (9) Integer Programming - Branch and Bound (Ind)

104

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

Page 105: (9) Integer Programming - Branch and Bound (Ind)

105

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

Page 106: (9) Integer Programming - Branch and Bound (Ind)

106

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

LP-8 LP-9

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Page 107: (9) Integer Programming - Branch and Bound (Ind)

107

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

LP-8 LP-9

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Page 108: (9) Integer Programming - Branch and Bound (Ind)

108

LP-1

LP-2 LP-3

178

176

21712

1

14

2,3

Z

xx

22 x 32 x

21

241

1

13

3,2

Z

xx

52

251

1

14

2,4

Z

xx

LP-5LP-4

21 x 31 x

Tidak layak

31

91

21

13

3,2

Z

xx

LP-6 LP-713

3,2 21

Z

xx

32 x 42 x

12

4,0 21

Z

xx

LP-8 LP-9

41 x 51 x

14

2,4 21

Z

xx

72

73

21

14

1,5

Z

xx

Fathomed karena perbedaannilai Z dengan lower bound < 1dan semua koefisien fungsi tujuan adalah bulat

Page 109: (9) Integer Programming - Branch and Bound (Ind)

Aturan Pencabangan (1)

• Aturan-aturan pencabangan variabel adalah sebagai berikut:– Pilih variabel bilangan bulat yang mempunyai nilai pecahan

terbesar dalam solusi LP.– Pilih variabel bilangan bulat yang mempunyai prioritas

paling tinggi.• Menunjukkan keputusan yang terpenting dalam model• Mempunyai koefisien profit/biaya paling besar• Mempunyai nilai yang kritis yang didasarkan pengalaman

pengguna– Aturan pemilihan bebas, misal, pilih variabel bilangan bulat

dengan indeks paling kecil.

109

Page 110: (9) Integer Programming - Branch and Bound (Ind)

Aturan Pencabangan (2)

• Aturan penentuan masalah LP yang hendak dicabangkan:– Nilai optimal dari fungsi tujuan– LIFO (Last-In First-Out), yaitu masalah LP yang

dipecahkan paling belakangan.

110

Page 111: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk BILP

111

Maximize Z = 9x1 + 5x2 + 6x3 + 4x4

dengan pembatas-pembatas: 6x1 + 3x2 + 5x3 + 2x4 10 x3 + x4 1 -x1 + x3 0 -x2 + x4 0

x1, x2, x3, x4 = {0, 1}

Page 112: (9) Integer Programming - Branch and Bound (Ind)

Algoritma BB untuk BILP

112

Tahap Relaksasi :Maximize Z = 9x1 + 5x2 + 6x3 + 4x4

dengan pembatas-pembatas: 6x1 + 3x2 + 5x3 + 2x4 10 x3 + x4 1 -x1 + x3 0 -x2 + x4 0 x1, x2, x3, x4 ≤ 1 x1, x2, x3, x4 ≥ 0

Page 113: (9) Integer Programming - Branch and Bound (Ind)

113

LP-1);,,,( 4321 Zxxxx 21

65 16;1,0,1,

Page 114: (9) Integer Programming - Branch and Bound (Ind)

114

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

Page 115: (9) Integer Programming - Branch and Bound (Ind)

115

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

Page 116: (9) Integer Programming - Branch and Bound (Ind)

116

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

LP-4 LP-5

02 x 12 x

54

54 13;0,,0,1

16;,0,1,1 21

Page 117: (9) Integer Programming - Branch and Bound (Ind)

117

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

LP-4 LP-5

02 x 12 x

54

54 13;0,,0,1

16;,0,1,1 21

LP-6 LP-7

03 x 13 x

16;,0,1,1 21

Tidak layak

Page 118: (9) Integer Programming - Branch and Bound (Ind)

118

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

LP-4 LP-5

02 x 12 x

54

54 13;0,,0,1

16;,0,1,1 21

LP-6 LP-7

03 x 13 x

16;,0,1,1 21

Tidak layak

LP-8 LP-9 14;0,0,1,1

04 x 14 x

Tidak layak

Page 119: (9) Integer Programming - Branch and Bound (Ind)

119

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

LP-4 LP-5

02 x 12 x

54

54 13;0,,0,1

16;,0,1,1 21

LP-6 LP-7

03 x 13 x

16;,0,1,1 21

Tidak layak

LP-8 LP-9 14;0,0,1,1

04 x 14 x

Tidak layak

Page 120: (9) Integer Programming - Branch and Bound (Ind)

120

LP-1

LP-2 LP-3

);,,,( 4321 Zxxxx 21

65 16;1,0,1,

01 x11 x

9;1,0,1,0 51

54

54 16;,0,,1

LP-4 LP-5

02 x 12 x

54

54 13;0,,0,1

16;,0,1,1 21

LP-6 LP-7

03 x 13 x

16;,0,1,1 21

Tidak layak

LP-8 LP-9 14;0,0,1,1

04 x 14 x

Tidak layak

Page 121: (9) Integer Programming - Branch and Bound (Ind)

121

THANKS