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 Bulat

  Pemrograman Bilangan Bulat

  Pemrograman bilangan bulat (integer

programming) mensyaratkan bahwa

beberapa variabel keputusan harus

mempunyai 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

ux

  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  xu 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 Bilangan

  Bulat

  

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 j

  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 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 j

  Knapsack 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 siskamling

  1

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 keputusan

x = 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) j

  Set 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 ij

  Traveling Salesman Problem (3) n n

  Minimasi Z c x

  

ij ij

  j 1 j

  1  

  dengan pembatas-pembatas:

  n x 1 , i

1 , , n

     ij

   j

  1  n

  Subtour breaking x

  1 , j 1 , , n constraint

   

  iji

  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 i

  dengan 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 f

  Akibatnya 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: n

  S 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

      1

      c c

      

      c c j j n

      

    1

      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.

      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 ff untuk semua j dengan strict inequality

    f i k ij kj terpenuhi paling sedikit satu

      Fractional Algorithm (12) Aturan :

        i i f max

            

            

        n j

    ij

    i i f f

      1 max

      Ilustrasi Penerapan Fractional Algorithm (1)

      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

      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

    • z
      • 28/11 -15/11 Z = 63 Tabel optimal kontinyu

      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

    • 7/22 -1/22 1 -1/2

      1

      c j

    • z
      • 28/11 -15/11 Tabel setelah penambahan fractional cut

      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

    • z
      • 1 -8 Z = 59 Tabel yang diperoleh dengan dual simplex:

      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

    • 1/7 -6/7 1 -4/7

      2 c z

    • 1 -8

      j j

    • 1

      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)

    • z
      • 2 -7 Z = 55

      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) x

      2 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:

    • x + 3x  6

      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

    • = himpunan subscripts j untuk 

      k j  0 J

    • = himpunan subscripts j untuk 

      k j < 0

      Dari (1) dan (2) diperoleh

    k

    n

      J j k j k f w

      

      

    k

    n

      J 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:

    • x + 3x  6

      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

    • 28/11 -15/11 Z = 63

      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/22 -3/22 1 -1/2

      1

      c j

    • z
      • 28/11 -15/11 Tabel setelah penambahan mixed cut

      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

    • z
      • 23/11 -10 Z= 58 Tabel yang diperoleh dengan dual simplex: Solusi optimal, x

      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)