Anda di halaman 1dari 39

Bab 8

PROGRAMA BILANGAN BULAT

8.1 Pendahuluan
Programa bilangan bulat atau integer programming (IP) adalah bentuk lain dari
programa linier (LP) di mana asumsi divisibilitasnya melemah atau hilang sama sekali.
Bentuk ini muncul karena dalam kenyataannya tidak semua variabel keputusan dapat
berupa bilangan pecahan. Misalnya, jika variabel keputusan yang dihadapi berkaitan
dengan jumlah mesin yang diperlukan pada suatu horizon perencanaan, maka jawaban
10/3 mesin sangat tidak realistis dalam konteks keputusan yang nyata. Dalam hal ini
harus ditentukan, apakah akan menggunakan 3 atau 4 mesin.
Asumsi divisibilitas melemah, artinya sebagian dari nilai variabel keputusan harus
berupa bilangan bulat (integer) dan sebagian lainnya boleh berupa bilangan pecahan.
Persoalan IP di mana hanya sebagian dari variabel keputusannya yang harus integer
disebut sebagai persoalan IP campuran.
Maksimumkan: z = 3 x1 + 2 x2
berdasarkan:
x1 + x2 ≤6
x1, x2 ≥ 0; x1 integer
Pada soal di atas, x2 tidak harus integer.
Apabila seluruh variabel keputusan dari suatu persoalan programa linier (LP)
harus berharga integer, maka persoalan tersebut disebut sebagai persoalan programa
bilangan bulat (IP) murni. Dalam hal ini, asumsi divisibilitas dari LP hilang sama sekali.
Sebagai contoh, perhatikan formulasi berikut ini
Maksimumkan: z = 3 x1 + 2 x2
berdasarkan:
x1 + x2 ≤ 6
xl, x2 ≥0; x1, x2 integer

1
Secara umum, model persoalan IP dapat diformulasikan sebagai berikut:
n

Maks. / Min.: z = c
j 1
j xj

Berdasarkan:
n

a
j 1
ij x j  bi , i  1,....., m

xj ≥ 0, j = 1, ....., n
xj integer untuk j = 1, 2, ....., p (p ≤ n)
Selain bentuk di atas, ada pula persoalan IP yang seluruh variabelnya harus berharga 0
atau 1. Persoalan semacam ini disebut sebagai persoalan programa bilangan bulat nol-
satu (0-1 IP).
Contoh:
Maksimumkan: z = x1 – x2
berdasarkan:
x1 + 2 x2 ≤ 2
2 x1 – x2 ≤ 1
x1, x2 = 0 atau 1
Kondisi ini akan ditemukan dalam kasus di mana persoalan yang dihadapi merupakan
persoalan keputusan "ya" atau "tidak". Misalnya keputusan untuk membuka pabrik baru,
mengalokasikan modal, dsb. Dalam hal ini, variabel keputusan yang berharga 1
menyatakan "ya" dan berharga 0 menyatakan "tidak".

8.2 Programa Linier Relaksasi


Bentuk programa linier yang diperoleh dengan mengabaikan pembatas integer disebut
sebagai programa linier (LP) relaksasi.
Sebagai contoh, LP relaksasi dari kedua formulasi di atas adalah:
Maksimumkan: z = 3 x1 + 2 x2
berdasarkan:
x1 + x2 ≤ 6
X1, x2 ≥ 0
dan

2
Maksimumkan: z = x1 - x2
berdasarkan:
x1 + 2 x2 ≤2
2 x1 - x2 ≤1
x1, x2 ≥0
Setiap persoalan IP dapat dipandang sebagai persoalan LP relaksasi dengan beberapa
pembatas tambahan, yaitu pembatas yang menyatakan variabel-variabel mana yang harus
berharga integer atau harus berharga nol atau satu. Hal ini berarti bahwa daerah fisibel
untuk setiap persoalan IP akan berada dalam daerah fisibel untuk pesoalan LP relaksasi
yang bersangkutan.

8.3 Memformulasikan Persoalan Programa Bilangan Bulat


Pada bagian ini akan kita lihat bagaimana persoalan-persoalan praktis dapat
diformulasikan sebagai persoalan programa bilangan bulat (IP).

Contoh 8.3-1:
CV Kayu Indah yang memproduksi meja dan kursi, menjual produknya dengan
keuntungan Rp 8.000/unit meja dan Rp 5.000/ unit kursi. Mengingat perusahaan ini baru
dalam taraf permulaan, saat ini perusahaan hanya mampu menyediakan maksimum 45 m 3
kayu setiap harinya, sedangkan jam kerja yang tersedia tidak lebih dari 6 jam-orang per
hari. Jika satu unit meja membutuhkan 1 jam-orang dan 9 m3 kayu, sedangkan satu unit
kursi membutuhkan 1 jam-orang dan 5 m 3 kayu, bagaimanakah formulasi persoalan di
atas agar diperoleh keuntungan yang maksimum?

Jawaban:
Misalkan x1 = jumlah unit meja yang diproduksi/hari
x2 = jumlah unit kursi yang diproduksi/hari
Kita tahu bahwa x1 dan x2 harus berharga integer. Total keuntungan yang dapat diperoleh
(dalam ribu rupiah) adalah 8 x1 + 5 x2. Pembatas yang dihadapi berkaitan dengan jam
kerja dan kayu yang tersedia setiap harinya. Dengan demikian, formulasinya adalah:
Maksimumkan: z = 8 x1 + 5 x2

3
berdasarkan:
x1 + x2 ≤ 6
9 x1 + 5 x2 ≤ 45
x1, x2 ≥ 0 ; x1, x2 integer

Contoh 8.3-2:
Tuan Sugih, yang saat ini memiliki uang tunai sebesar 14 miliar rupiah, bermaksud
menginvestasikan uangnya itu dalam beberapa jenis usaha. Setelah memperoleh
informasi yang lengkap, ia mendapatkan bahwa ada 4 macam investasi yang patut diper-
timbangkan. Investasi 1 akan menghasilkan NPV sebesar 16 miliar, sedangkan investasi
2, 3, dan 4 masing-masing akan menghasilkan NPV sebesar 22 miliar, 12 miliar, dan 8
miliar rupiah. Masing-masing investasi memerlukan pengeluaran awal sebesar 5, 7, 4,
dan 3 miliar rupiah untuk investasi 1, 2, 3, dan 4. Formulasikan persoalan di atas ke
dalam bentuk persoalan IP sehingga Tuan Sugih dapat mengetahui bagaimana NPV
maksimum dapat diperoleh dari keempat investasi itu.
Jawaban:
Definisikan variabel keputusan sebagai berikut:
1, jika investasi j dilakukan
X j (j  1, 2, 3, 4)  
0, jika investasi j tidak dilakukan

Dalam hal ini, x2 = 1, berarti Tuan Sugih menggunakan uangnya pada investasi 2 dan x2 =
0, berarti investasi 2 tidak dilakukan. Total NPV yang dapat diperoleh Tuan Sugih (dalam
miliar rupiah) adalah 16 x1 + 22 x2 + 12 x3 + 8 x4. Artinya, jika dilakukan investasi 1 dan
4 saja, maka akan diperoleh NPV sebesar 16 + 8 = 24 miliar rupiah karena x 1 = x4 = 1 dan
x2 = x3 = 0
Dengan demikian, fungsi tujuan dari persoalan ini adalah:
Maksimumkan: z = 16 x1 + 22 x2 + 12 x3 + 8x4

Pembatas yang dihadapi adalah bahwa jumlah uang yang dapat diinvestasikan tidak lebih
dari 14 miliar, sementara total uang yang diperlukan untuk investasi (dalam miliar
rupiah) adalah:
5 x1 + 7 x2 + 4 x3 + 3 x4 sehingga pembatasnya adalah:

4
5 x1 + 7 x2 + 4 x3 + 3 x4 (≤)14.
Formulasi persoalan selengkapnya adalah:
Maksimumkan: z = 16 x1 + 22 x2 + 12 x3 + 8 x4
berdasarkan:
5 x1 + 7 x2 + 4 x3 + 3 x4 ≤ 14
Xj = 0 atau 1 (j = 1, 2, 3, 4)
Persoalan IP yang hanya mempunyai satu pembatas seperti contoh di atas dikenal
sebagai persoalan ransel atau knapsack problem.

Contoh 8.3-3:
Sebuah kotamadya dengan 6 kecamatan bermaksud mendirikan pusat pemadam
kebakaran (PPK) untuk melindungi masyarakatnya. Walikota yang bersangkutan
menghendaki agar jumlah PPK yang dibangun adalah seminimum mungkin, tetapi
sedikitnya harus ada satu PPK dalam setiap jarak tempuh 15 menit dari satu kecamatan ke
kecamatan lainnya. Data waktu tempuh antarkecamatan (dalam menit) adalah:

Dari / ke Kec. 1 Kec. 2 Kec. 3 Kec. 4 Kec. 5 Kec 6


Kec. 1 0 10 20 30 30 20
Kec. 2 10 0 25 35 20 10
Kec. 3 20 25 0 15 30 20
Kec. 4 30 35 15 0 15 25
Kec. 5 30 20 30 15 0 14
Kec. 6 20 10 20 25 14 0

Buatlah formulasi IP dari persoalan di atas untuk menentukan berapa banyak PPK harus
dibangun dan di kecamatan mana.
Jawaban:
Untuk masing-masing kecamatan harus ditentukan apakah PPK akan didirikan di
kecamatan itu atau tidak. Untuk itu definisikan:
1, jika PPK didirikan di Kecamatan i
X j (j  1, 2, 3, 4,5 ,6 )  
0, jika PPK tidak didirikan di Kecamatan i

Dengan demikian, total PPK yang dibangun adalah x 1 + x2 + x3 + x4 + x5 + x6, sedangkan


fungsi tujuannya adalah meminimumkan
z = x1 + x2 + x3 + x4 + x5 + x6.
Untuk menentukan pembatas, perhatikan tabel berikut yang menunjukkan lokasi mana yang dapat

5
ditempuh dalam waktu 15 menit atau kurang dari suatu kecamatan.
Lokasi
Kec. 1 1, 2
Kec. 2 1, 2, 3
Kec. 3 3, 4
Kec. 4 3, 4, 5
Kec. 5 4, 5, 6
Kec. 6 2, 5, 6

Untuk menjamin bahwa paling sedikit ada satu PPK dalam 15 rnenit waktu tempuh dari
Kecamatan 1, maka diperoleh pembatas x1 + x2 ≥ 1. Hal yang sama untuk Kecamatan 2
dinyatakan dengan pembatas x1 + x2 + x6 ≥1. Dengan melakukan cara yang sama untuk
keenam kecamatan dan dengan menggabungkan fungsi tujuan, akhirnya diperoleh
formulasi lengkap dari persoalan di atas sebagai berikut:
Minimumkan: z = x1 + x2 + x3 + x4 + + x6
berdasarkan:
x1 + x2 ≥1
x1 + x2 + x6 ≥1
x3 + x4 ≥1
x3 + x4 + x5 ≥1
x4 + x5 + x6 ≥1
x2 + x 5 + x6 ≥1
xj = 0 atau 1 (j = 1, 2, 3, 4, 5, 6)

8.4 Menyelesaikan Persoalan IP Murni dengan Teknik Branch-And-Bound


Dalam prakteknya, hampir seluruh persoalan bilangan bulat (IP) diselesaikan dengan
menggunakan teknik branch-and-bound. Teknik ini mencari solusi optimal dari suatu
persoalan IP dengan mengenumerasi titik-titik dalam daerah fisibel dari suatu subper-
soalan. Sebelum menjelaskan bagaimana cara kerja teknik ini, ada baiknya kita ingat lagi
bahwa dari suatu persoalan IP, baik murni ataupun campuran, dapat diperoleh bentuk
persoalan programa linier relaksasi. Jika solusi dari LP relaksasi ini memiliki seluruh
variabel yang berharga integer, maka solusi optimal dari persoalan LP relaksasi itu adalah
juga solusi optimal dari persoalan IP. Untuk melihat kebenaran hal tersebut, perhatikan
persoalan IP berikut ini:

6
Maksimumkan: z = 3 x1 + 2 x2
berdasarkan: 2x1 + x2 ≤ 6
x1, x2 ≥0; x1, x2 integer
Solusi optimal dari LP relaksasi persoalan IP di atas adalah x1 = 0, x2 = 6, dan z = 12.
(buktikan!)
Karena seluruh variabel pada solusi di atas telah berharga integer, maka berdasarkan
pernyataan di atas, solusi ini seharusnya juga merupakan solusi dari persoalan IP semula.
Sekarang perhatikan bahwa daerah fisibel untuk persoalan IP adalah subset dari titik-titik
pada daerah fisibel untuk persoalan LP relaksasi (lihat Gambar 8.1). Dengan demikian,
nilai z-optimal untuk persoalan IP tidak mungkin lebih besar daripada nilai z-optimal
untuk persoalan LP relaksasi. Hal ini berarti bahwa nilai z-optimal untuk persoalan IP
harus ≤ 12. Tetapi, titik x1 = 0 dan x2 = 6 adalah fisibel untuk persoalan IP dan
memberikan z = 12. Jadi, x1 = 0, x2 = 6, dan z = 12 pasti optimal untuk persoalan IP.

Gambar 8.1: Daerah fisibel untuk persoalan IP dan LP relaksasinya

Untuk memahami teknik branch-and-bound, perhatikan persoalan CV Kayu Indah pada


Contoh 8. 3-1. Formulasi dari persoalan tersebut adalah:

7
Maksimumkan: z = 8 x1 + 5 x2
berdasarkan:
xl + x2 ≤ 6
9 x1 + 5 x2 ≤ 45
x1, x2 ≥ 0 ; x1, x2 integer
Pertama-tama selesaikanlah persoalan LP relaksasi dari soal di atas (selanjutnya
persoalan LP relaksasi ini kita sebut sebagai subpersoalan 1). Hasilnya adalah z = 165/4,
x1 = 15/4, x2 = 9/4 (lihat Gambar 8.2). Dari uraian di atas kita tahu bahwa (nilai z-optimal
untuk IP) (nilai z-optimal untuk LP relaksasi). Hal ini berarti bahwa nilai z-optimal untuk
persoalan IP tidak mungkin lebih besar daripada 165/4. Dengan kata lain, nilai z-optimal
untuk LP relaksasi adalah batas atas dari keuntungan CV Kayu Indah ini.

Gambar 8.2: Daerah fisibel untuk persoalan CV Kayu Indah

Langkah berikutnya adalah memilah daerah fisibel dari soal LP relaksasi agar dapat
diketahui lokasi dari solusi optimal persoalan IP. Secara sembarang, pilihlah variabel
yang berharga pecahan pada solusi optimal LP relaksasi di atas. Misalkan kita memilih
x1. Sekarang perhatikan bahwa setiap titik pada daerah fisibel untuk persoalan IP akan
berharga x1 ≤ 3 atau x1 ≥ 4 (mengapa tidak 3 < x1 < 4?). Dengan demikian, lakukan
pencabangan pada variabel x1 dan bentuklah 2 subpersoalan tambahan sebagai berikut:

8
subpersoalan 2 = subpersoalan 1 + pembatas x1 ≥ 4
subpersoalan 3 = subpersoalan 1 + pembatas x1 ≤ 3
Dalam hal ini, kita tahu bahwa baik subpersoalan 2 maupun subpersoalan 3 tidak
mengandung titik x1 = 15/4. Hal ini berarti bahwa solusi optimal dari LP relaksasi tidak
akan terulang lagi pada saat kita menyelesaikan subpersoalan 2 atau subpersoalan 3.
Dari Gambar 8.3 kita lihat bahwa setiap titik dalam daerah fisibel untuk persoalan
IP di atas berada di dalam daerah fisibel untuk subpersoalan 2 atau subpersoalan 3. Selain
itu, kita lihat juga bahwa daerah fisibel untuk subpersoalan 2 dan 3 tidak mempunyai titik
yang sama. Karena subpersoalan 2 dan 3 dibangun dengan cara menambahkan pembatas
yang berkaitan dengan x1, maka dapat dikatakan bahwa subpersoalan 2 dan 3 dibangun
dengan melakukan pencabangan pada x1.
Sekarang pilihlah salah satu subpersoalan yang belum diselesaikan. Misalkan kita
memilih subpersoalan 2. Dari Gambar 8.3 kita lihat bahwa solusi optimal untuk
subpersoalan 2 adalah z = 41, x1 = 4, x2 = 9/5 (titik C). Sampai tahap ini pekerjaan kita
dapat digambarkan seperti pada Gambar 8.4.
Karena solusi optimal dari subpersoalan 2 masih mengandung variabel yang tidak
integer, maka dari subpersoalan 2 ini kita buat lagi dua subpersoalan baru, dan lakukan
pencabangan dari variabel yang belum integer itu. Dari solusi subpersoalan 2 ini, hanya
variabel x2 yang belum integer. Karena itu, pencabangan dilakukan terhadap x2. Untuk
itu, bagilah daerah fisibel

9
Gambar 8.3: Daerah fIsIbel untuk subpersoalan 2 dan 3
Subpersoalan 1
z = 165/4
t =1 x1 = 15/4
x2 = 9/4

x1 ≥ 4 x1 ≤ 3

Subpersoalan 2
z = 41 Subpersoalan 3
t=2 x1 = 4
x2 = 9/5

Gambar 8.4: Subpersoalan 1 dan 2 yang telah dlselesalkan


untuk subpersoalan 2 ke dalam bagian yang memiliki x 2 ≥ 2 dan x2 ≤ 1 sehingga
diperoleh 2 subpersoalan baru:
subpersoalan 4 = subpersoalan 1 + pembatas x1 ≥ 4 dan x2 ≥ 2
= subpersoalan 2 + pembatas x2 ≥ 2
subpersoalan 5 = subpersoalan 1 + pembatas x1 ≥ 4 dan x2 ≤ 1

10
= subpersoalan 2 + pembatas x2 ≤ 1
Daerah fisibel untuk subpersoalan 4 dan 5 adalah seperti pada Gambar 8.5.

Gambar 8.5: Daerah fisibel untuk subpersoalan 4 dan 5

Set dari subpersoalan yang belum diselesaikan terdiri dari subpersoalan 3, 4, dan 5.
Sekarang kita pilih salah satu subpersoalan untuk diselesaikan. Dalam hal ini, kita
akan menggunakan aturan LIFO yaitu menyelesaikan subpersoalan yang dibuat
paling akhir. Dengan kata lain, subpersoalan yang harus diselesaikan berikutnya
adalah subpersoalan 4 atau 5. Misalkan kita pilih subpersoalan 4 lebih dahulu. Dari
Gambar 8.5 kita lihat bahwa subpersoalan 4 tidak fisibel sehingga subpersoalan 4
tidak dapat memberikan solusi optimal. Untuk menandai hal ini, cantumkan tanda X di
dekat kotak subpersoalan 4 (lihat Gambar 8.6).

11
Subpersoalan 1
z = 165/4
t =1 x1 = 15/4
x2 = 9/4

x1 ≥ 4 x1 ≤ 3

Subpersoalan 2
z = 41 Subpersoalan 3
t=2 x1 = 4
x2 = 9/5

x2 ≥ 2 x2 ≤ 1

Subpersoalan 4
Subpersoalan 5
t=3 x
Tidak fisibel

Gambar 8.6: Subpersoalan 1, 2, dan 4 yang telah diselesaikan


Karena setiap cabang yang dibuat dari subpersoalan 4 tidak akan memberikan informasi yang
berguna, maka tidak ada gunanya pencabangan itu dilakukan. Apabila pencabangan dari
suatu subpersoalan tidak dapat memberikan informasi yang berguna, maka subpersoalan itu
disebut fathomed.
Subpersoalan yang masih harus diselesaikan adalah subpersoalan 3 dan 5. Dengan
aturan LIFO, subpersoalan 5 harus diselesaikan lebih dahulu. Dari Gambar 8.5 kita lihat
bahwa solusi optimal dari subpersoalan 5 adalah titik I, yaitu z = 365/9, x 1 = 40/9, x2 = 1.
Solusi ini masih mengandung variabel yang tidak integer sehingga kita lakukan pencabangan
dari x1. Dengan demikian, diperoleh dua subpersoalan baru (lihat Gambar 8.7):
subpersoalan 6 = subpersoalan 5 + pembatas x1 ≥ 5
subpersoalan 7 = subpersoalan 5 + pembatas x1 ≤ 4

12
Gambar 8.7: Daerah fisibel untuk subpersoalan 8 dan 7
Subpersoalan yang belum diselesaikan adalah subpersoalan 3, 6, dan 7. Dengan
aturan LIFO, misalkan kita pilih subpersoalan 7 untuk diselesaikan lebih dahulu. Dari
Gambar 8.7 kita lihat bahwa solusi optimal untuk subpersoalan 7 adalah titik H, yaitu z = 37,
x1 = 4, x2 = 1. Karena x1 dan x2 berharga integer, maka solusi ini fisibel untuk persoalan IP
semula. Suatu solusi yang diperoleh dengan cara menyelesaikan subpersoalan di mana
seluruh variabelnya berharga integer disebut sebagai calon solusi. Karena calon solusi ini
bisa saja optimal, maka kita simpan untuk kemudian kita bandingkan dengan calon solusi
yang lain (jika ada).

13
Gambar 8.8: Kondisi setelah 5 subpersoalan diselesaikan
Karena subpersoalan 7 ini tidak dapat memberikan solusi fisibel integer dengan z >
37, maka pencabangan selanjutnya dari subpersoalan 7 ini tidak akan memberikan informasi
baru mengenai solusi optimal untuk persoalan IP. Artinya, subpersoalan 7 sudah fathomed
(lihat Gambar 8.8).
Sampai di sini kita telah memperoleh solusi fisibel dari persoalan IP semula, yaitu z =
37, sehingga dapat disimpulkan bahwa nilai z-optimal untuk persoalan IP akan 37. Dengan
kata lain, nilai z-optimal dari calon solusi merupakan batas bawah dari nilai z-optimal untuk
persoalan IP semula. Untuk menandai batas bawah, cantumkan notasi LB = 37 dalam kotak
subpersoalan yang akan diselesaikan berikutnya, yaitu subpersoalan 6. Dari Gambar 8.7 kita
dapatkan bahwa solusi optimal untuk subpersoalan 6 adalah titik A, yaitu z = 40, x1 = 5, x2 =
0. Karena seluruh variabel keputusan telah berharga integer, maka solusi dari subpersoalan 6
adalah juga calon solusi. Calon ini memiliki nilai z = 40, yang berarti lebih besar daripada
nilai z dari calon terdahulu (z = 37). Hal ini menyatakan bahwa subpersoalan 7 tidak dapat

14
memberikan solusi optimal bagi persoalan IP. Nyatakan hal ini dengan mencantumkan tanda
X di dekat kotak subpersoalan 7, dan kita perbaiki LB menjadi 40 (lihat Gambar 8.9 dan
8.10).
Sekarang tinggal satu subpersoalan yang belum diselesaikan, yaitu subpersoalan 3.
Dari Gambar 8.3 kita dapatkan bahwa solusi optimal untuk subpersoalan 3 ini adalah titik F,
yaitu z = 39, xl = x2 = 3. Karena subpersoalan 3 tidak dapat memberikan nilai z yang lebih
besar dari batas bawah saat ini (yaitu LB = 40), maka subpersoalan 3 tidak dapat memberikan
solusi optimal pada persoalan IP semula. Karena itu, cantumkan tanda X di dekat kotak
subpersoalan 3 (lihat Gambar 8.10). Dari Gambar 8.10 kita tahu bahwa tidak ada lagi
subpersoalan yang belum diselesaikan dan bahwa hanya subpersoalan 6 yang dapat
memberikan solusi optimal terhadap persoalan IP. Dengan demikian, solusi optimal dari
persoalan IP untuk CV Kayu Indah adalah memproduksi 5 unit meja, dan tidak memproduksi
kursi, sehingga akan diperoleh keuntungan sebesar Rp 40.000,00.

15
Gambar 8.9: Kondisi setelah 8 subpersoalan diselesaikan
Dari apa yang telah kita lakukan, dapat ditarik kesimpulan sebagai berikut:
1. Jika pencabangan dari suatu subpersoalan tidak diperlukan, maka subpersoalan itu
adalah fathomed. Ada tiga situasi yang menyebabkan suatu subpersoalan fathomed,
yaitu:
a. Apabila subpersoalan itu tidak fisibel.
b. Apabila subpersoalan itu memberikan solusi optimal di mana seluruh variabelnya
berharga integer.

16
Gambar 8.10: Kondisi akhir dart persoalan CV Kayu Indah
c. Apabila nilai z-optimal untuk subpersoalan itu tidak lebih baik dari nilai z-optimal
subpersoalan lain (dalam persoalan maksimasi berarti nilai z-optimal dari
subpersoalan itu tidak lebih besar daripada batas bawah yang telah diperoleh).
2. Suatu subpersoalan dapat diabaikan (dieliminasi dari pertimbangan selanjutnya)
apabila subpersoalan itu berada dalam situasi berikut:
a. Tidak fisibel. Dalam contoh CV Kayu Indah, subpersoalan 4 diabaikan karena alas
an ini.
b. Batas bawah atau LB (yang menyatakan nilai z dari calon solusi terbaik) sekurang-
kurangnya berharga sama besar dengan nilai z dari subpersoalan yang
bersangkutan. Pada contoh CV Kayu Indah, subpersoalan 3 dan 7 diabaikan karena
alasan ini.

8.5 Menyelesalkan Persoalan IP Campuran dengan Teknlk Branch-And-Bound

17
Untuk menyelesaikan persoalan IP campuran dengan teknik branch-and-bound, kita
modifikasi uraian pada Subbab 8.4, yaitu dengan hanya melakukan pencabangan pada
variabel-variabel yang harus berharga integer. Sebagai contoh, perhatikan formulasi berikut
ini:
Maksimumkan: z = 2 x1 + x2
berdasarkan:
5 x1 + 2 x 2 ≤ 8
xl + x2 ≤ 3
x1, x2 ≥ 0 ; x1 integer
Seperti biasa, kita mulai dengan menyelesaikan LP relaksasi dari persoalan IP di atas.
Solusi optimal dari LP relaksasi ini adalah z = 11/3, x 1 = 2/3, x2 = 7/3. Karena x2 dibolehkan
berharga pecahan, maka pencabangan tidak akan dilakukan terhadap variabel ini. Dari
pencabangan terhadap x1 kita peroleh subpersoalan 2 dan 3 (lihat Gambar 8.11). Selanjutnya
kita pilih subpersoalan 2 untuk diselesaikan. Solusi optimalnya adalah z = 3, x 1 = 0, x2 = 3,
yang merupakan calon solusi. Sekarang kita selesaikan subpersoalan 3. Solusinya adalah
z = 7/2, x1 = 1, x2 = 3/2 yang juga merupakan calon solusi. Karena nilai z dari subpersoalan 3
lebih besar daripada nilai z dari subpersoalan 2, maka subpersoalan 2 dapat diabaikan dan
calon solusi da ri subpersoalan 3, yaitu z = 7/2, x 1 = 1, dan x2 = 3/2, adalah solusi optimal
untuk persoalan IP campuran di atas.

Gambar 8.11: Branch–and–bound untuk IP campuran


8.6 Menyelesalkan Persoalan Ransel (Knapsack Problem) dengan Teknlk Branch–

18
And–Bound
Pada Subbab 8.3 telah kita ketahui bahwa persoalan ransel adalah persoalan IP yang
hanya memiliki pembatas tunggal. Pada bagian ini kita hanya akan mendiskusikan persoalan
ransel yang seluruh variabelnya harus berharga 0 atau 1, yang dapat diformulasikan sebagai
berikut:
Maksimumkan: z = c1 x1 + c2 x2 + …… + cn xn
berdasarkan:
a1 x1 + a2 x2 + …… + an xn ≤ b
xi = 0 atau 1 (i. = 1, 2, …, n)
Ingat bahwa ci adalah manfaat yang dapat diperoleh apabila barang ke-i dipilih, b
adalah jumlah sumber yang tersedia, dan a i adalah jumlah sumber yang digunakan oleh
barang ke-i.
Apabila persoalan ini diselesaikan dengan branch-and-bound, maka ada dua aspek
dari pendekatan branch-and-bound yang disederhanakan. Pertama, karena setiap variabel
harus berharga 0 atau 1, maka pencabangan pada x i akan menghasilkan cabang xi = 0 dan
xi = 1. Kedua, LP relaksasi (dan subpersoalan yang lain) dapat diselesaikan dengan
melakukan pemeriksaan terhadap nilai ci/ai. Untuk melihat hal ini, perhatik.an bahwa c i/ai
dapat diinterpretasikan sebagai manfaat yang diperoleh barang ke-i dari setiap unit sumber
yang digunakan oleh barang ke-i. Jadi, barang yang terbaik adalah barang yang memiliki
nilai ci/ai terbesar, dan barang yang terburuk adalah yang memiliki nilai ci/ai terkecil.
Untuk menyelesaikan setiap subpersoalan yang dihasilkan dari suatu persoalan ransel
ini, hitunglah seluruh rasio ci/ai. Kemudian, masukkan barang terbaik ke dalam ransel.
Setelah itu, masukkan barang kedua terbaik, dan seterusnya, hingga ransel terisi dengan
sebanyak-banyaknya barang-barang ini. Sebagai ilustrasi, perhatikan contoh soal berikut ini:
Maksimumkan:
z = 40x1 + 80x2 + 10x3 + 10x4 + 4x5 + 20x6 + 60x7
berdasarkan:
40x1 + 50x2 + 30x3 + 10x4 + 10x5 + 40x6 + 30x7 ≤ 100
xi = 0 atau 1 (i = 1, 2, …, 7)
Untuk menyelesaikan persoalan di atas, kita mulai dengan menghitung rasio ci/ai dan
menentukan peringkat (rank) setiap variabel berdasarkan besarnya rasio ini (peringkat 1

19
menyatakan variabel terbaik). Hasilnya adalah sebagai berikut:

ci/ai Peringkat
Barang ke-1 1 3,5
2 8/5 2
3 1/3 7
4 1 3,5
5 4/10 6
6 1/2 5
7 2 1

Penyelesaian LP relaksasi dari persoalan di atas dimulai dengan memilih barang ke-7 (x 7 =
1). Maka sumber yang tersisa adalah 100 – 30 = 70 unit. Selanjutnya, pilih barang kedua
terbaik, yaitu barang ke-2 dengan menjadikan x 2 = 1. Sumber yang tersisa adalah 70 – 50 =
20 unit. Karena barang ke-1 dan barang ke-4 mempunyai rasio c i/ai yang sama, maka kita
dapat, memilih salah satu dari barang ini. Misalkan kita memilih untuk menjadikan x 4 = 1.
Maka sumber yang tersisa adalah 20 – 10 = 10 unit. Barang terbaik yang masih tersisa adalah
barang ke-1. Isilah ransel dengan sebanyak-banyaknya barang ke-1 yang dapat dimasukkan.
Sekarang perhatikan persoalan ransel pada Contoh 8.3-2. Formulasi dari persoalan tersebut
adalah:
Maksimumkan: z = 16 x1 + 22 x2 + 12 x3 + 8 x4
berdasarkan:
5 x1 + 7 x2 + 4 x3 + 3 x4 ≤ 14
xi = 0 atau 1 (j = 1, 2, 3, 4)
Pertama-tama hitungilah rasio ci/ai dan tentukan peringkatnya. adalah sebagai berikut:
Investasi ci/ai Peringkat
1 16/5 1
2 22/7 2
3 12/4 3
4 8/3 4

Solusi LP relaksasinya adalah z = 16 + 22 + (1/2) (12) = 44, dengan x1 = x2 = 1; x3 = 1/2; x4 =


0. Selanjutnya lakukan proses branch-and-bound sehingga diperoleh hasil seperti pada
Gambar 8.12

8.7 Menyelesalkan Persoalan IP dengan Metode Enumeras1 Implisit


Metode enumerasi implisit sering kali digunakan untuk menyelesaikan persoalan

20
programa bilangan bulat nol-satu. Metode ini berangkat dari kenyataan bahwa setiap variabel
harus berharga nol atau satu sehingga proses pencabangannya menjadi lebih sederhana dan
penentuan fisibel-tidaknya suatu node juga menjadi lebih efisien.
Sebelum melanjutkan diskusi tentang enumerasi implisit ini, akan kita pelajari lebih dahulu
bagaimana suatu persoalan IP murni dapat diekspresikan sebagai persoalan 0 - 1 IP. Caranya
adalah nyatakan setiap variabel pada persoalan IP semula sebagai penjumlahan dari bilangan
2 yang berpangkat. Sebagai contoh, misalkan variabel xi harus berharga integer. Tentukan n
sebagai bilangan integer terkecil sehingga xi < 2n+1 agar xi dapat secara unik dinyatakan
sebagai penjumlahan dari 2°, 21, …, 2n-1, 2n dan
xi = un 2n + Un-1 2n-1 + … + u2 22 + 2 u1 + u0 (8.7-1)
di mana ui = 0 atau 1 (i = 0, 1, …, n).
Untuk mengubah persoalan IP semula ke dalam bentuk 0-1 IP, gantilah setiap x i oleh ruas
kanan persamaan (8.7-1) di atas. Sebagai contoh, misalkan kita tahu bahwa x i < 100. Maka xi
< 26+1 = 128 sehingga persamaan di atas menjadi
xi = 64 u6 + 32 u5 + 16 u4 .1- 8 u3 + 4 u2 + 2 u1 + u0 (8.7-2)
di mana ui = 0 atau 1 (i = 0, 1, . . ., 6). Setelah itu, gantilah setiap x i dengan ruas kanan dari
persamaan (8.7-2).

Gambar 8.12: Branch-and-bound untuk persoalan ransel


Sekarang, bagaimana kita dapat memperoleh harga dari u yang berkaitan dengan harga x i
tertentu? Misalkan xi = 93. Maka u6 akan merupakan kelipatan terbesar dari 26 = 64 yang
berada dalam 93. Hal ini menghasilkan u 6 = 1. Sisa dari ruas kanan persamaan. (8.7-2)
haruslah sama dengan 93 - 64 = 29. Maka, 115 akan merupakan kelipatan terbesar dari 2 5 =
32 yang berada dalam 29. Hasilnya adalah u5 = 0. Selanjutnya, u4 akan merupakan kelipatan
terbesar dari 24 = 16 yang berada dalam 29 sehingga u4 = 1. Lanjutkan hal ini sehingga akan
diperoleh u3 = 1, u2 = 1, u1 = 0, dan u0 = 1. Artinya, 93 = 26 + 24 + 23 + 22 + 20.
Akan kita lihat nanti bahwa 0-1 IP secara umum lebih mudah diselesaikan daripada
IP murni. Kalau begitu, mengapa tidak kita ubah saja setiap IP murni ke dalam hentuk 0-1
IP? Jawabannya adalah karena mengubah IP murni ke dalam 0-1 IP akan meningkatkan
jumlah variabel. Narnun, banyak situasi yang secara alamiah menghasilkan persoalan 0-1 IP
(misalnya persoalan ransel) sehingga tidaklah sia-sia kita mempelajari cara penyelesaian

21
persoalan programa bilangan bulat nol-satu ini.
Sekarang kita mulai dengan pembahasan tentang metode enumerasi implisit. Gambar
pohon yang digunakan dalam metode ini sejenis dengan yang digunakan untuk
menyelesaikan persoalan ransel. Setiap cabang pohon akan menunjukkan harga xi = 0 atau xi
= 1, sedangkan setiap node menunjukkan nilai dan variabel-variabel itu. Sebagai contoh,
misalkan suatu persoalan 0-1 IP memiliki variabel x1, x2, x3, x4, x5, x6 dan sebagian dari
gambar pohonnya adalah seperti pada Gambar 8.13. Dari gambar ini terlihat bahwa pada
node 4, nilai dari x3, x4, dan x2 telah ditentukan (yaitu = 1). Variabel-variabel ini dinyatakan
sebagai variabel tetap (fixed variables). Variabel lain yang nilainya belum ditentukan pada
suatu node disebut sebagai variabel bebas (free variables). Artinya, pada node 4 dari Gambar
8.13 ini, x1, x5, dan x6 adalah variabel-variabel bebas.
Penentuan nilai seluruh variabel bebas pada suatu node disebut sebagai penyempurnaan node
itu. Jadi, x1 = 1, x5 = 1, x6 = 0 adalah penyempurnaan dari node 4.

x3 = 1

x4 = 1

x3 = 1

Gambar 8.13: Ilustrast dart variabel tetap dan bebas


Dalam menyelesaikan 0-1 IP dengan metode enumerasi implisit, ada tiga hal pokok
yang akan dilakukan, yaitu:
1. Melakukan penyempurnaan terbaik bagi suatu node
Penyempurnaan terbaik bagi suatu node dilakukan dengan menjadikan variabel bebas
berharga 0 atau 1 sedemikian sehingga diperoleh nilai fungsi tujuan terbesar (dalam per-
soalan maksimasi) atau terkecil (dalam persoalan minimasi). Jika penyempurnaan node
ini fisibel maka pencabangan berikutnya tidak perlu dilakukan.

22
Sebagai contoh, perhatikan soal berikut ini:
Maksimumkan: z = 4 x1 + 2 x2 – x3 + 2 x4
berdasarkan:
x1 + 3 x2 – x3 – 2 x4 ≥ 1
xi = 0 atau 1 (i = 1, 2, 3, 4)
Misalkan bahwa saat ini kita berada pada suatu node dengan x 1 = 0 dan x2 = 1 sebagai
variabel tetap. Maka penyempurnaan terbaik yang dapat kita lakukan adalah menetapkan
x3 = 0 dan x4 = 1 sehingga diperoleh z = 4. Karena x1 = 0, x2 = 1, x3 = 0, dan x4 = 1
adalah fisibel bagi persoalan di atas, maka kita telah memperoleh penyempurnaan terbaik
yang fisibel bagi node tersebut. Dengan dernikian, node ini fathomed dan dapat
digunakan sebagai calon soiusi.
2. Mengeliminasi suatu node dari pertimbangan selanjutnya
Suatu node akan diabaikan (dihilangkan dari pertimbangan selanjutnya) apabila setelah
dilakukan penyempurnaan terbaik terhadap node itu, diperoleh nilai fungsi tujuan yang
lebih buruk daripada nilai fungsi tujuan calon solusi sebelumnya. Sebagai contoh,
misalkan kita sedang menyelesaikan suatu persoalan yang mempunyai fungsi tujuan
memaksimumkan z = 4 x1 + 2 x2 + x3 – x4 + 2 x5. Misalkan juga bahwa kita telah
mendapatkan calon solusi dengan nilai z = 6, dan saat ini kita berada pada suatu node
dengan variabel tetap x1 = 0, x2 = 1, dan x3 = 1. Maka penyempurnaan terbaik bagi node
ini adalah x4 = 0 dan x5 = 1 sehingga diperoleh nilai z = 2 + 1 + 2 = 5. Karena z = 5 tidak
dapat mengalahkan calon solusi dengan z = 6, maka kita dapat segera mengabaikan node
tersebut tanpa harus memperhatikan apakah penyempurnaan node ini fisibel atau tidak.
3. Menguji ada-tidaknya penyempurnaan yang fisibel dari suatu node
Apabila penyempurnaan suatu node tidak memenuhi pembatas yang ada, maka pasti
tidak akan ada penyempurnaan yang fisibel dari node tersebut terhadap persoalan semula.
Sebagai contoh, misalkan kita sedang menyelesaikan persoalan yang mempunyai
pembatas sebagai berikut:
– 2 x1 + 3 x2 + 2 x3 – 3 x4 – x5 + 2 x6 ≤ –5
Misalkan juga bahwa saat ini kita berada pada suatu node d engan x 3 = 1, x4 = 1, dan x2 =
1 sebagai variabel tetap. Untuk menyempurnakan node ini, tentukanlah nilai variabel
bebasnya sedemikian sehingga ruas kiri pembatas di atas sekecil mungkin. Jadi, kita

23
tentukan x1 = 1, x5 = 1, dan x6 = 0 sehingga pembatas di atas menjadi – 2 + 3 + 2 – 3 – 1
+ 0 ≤ 5. Jelas bahwa pembatas di atas tidak terpenuhi. Hal ini menunjukkan bahwa tidak
akan ada penyempurnaan yang fisibel dari node tersebut terhadap persoalan semula
sehingga node yang bersangkutan dapat diabaikan.
Secara umum pengujian terhadap fisibilitas ini dapat dilakukan dengan
memperhatikan setiap pembatas yang ada dan menetapkan nilai dari variabel bebasnya
sebagai berikut:
Tandadari koefisien Nilai yang harus diberikan
Variabei bebas pada pada variabel bebas dalam
pembatas pengujian fisibilitas
≤ + 0
≤ – 1
≥ + 1
≥ – 0

Jika ada pembatas yang tidak terpenuhi oleh penyempurnaan dengan cara ini, berarti
bahwa node yang bersangkutan tidak memiliki penyempurnaan yang fisibel. Dalam hal
ini, node tersebut tidak dapat memberikan solusi yang optimal terhadap persoalan IP
semula. Meskipun demikian, perlu diingat bahwa pengujian secara kasar terhadap
fisibilitas ini tidak akan menunjukkan apakah suatu node memiliki penyempurnaan yang
fisibel atau tidak, sebelum kita bergerak terus hingga sampai pada node yang memiliki
lebih banyak variabel tetap. Jika kita tidak berhasil memperoleh suatu informasi
mengenai suatu node, lakukan pencabangan pada variabel x i yang bebas, dan tambahkan
dua node baru dengan xi = 1 dan node dengan xi = 0
Sebagai contoh, perhatikan soal 0-1 IP berikut:
Maksimumkan: z = - 7 x1 - 3 x2 - 2 x3 - x4 - 2 x5
berdasarkan:
–4 x1 – 2 x2 + x3 – 2 x4 – x5 ≤ –3 (8.7-3)
–4 x1 – 2 x2 – 4 x3 + x4 + 2 x5 ≤ –7 (8.7-4)
xi = 0 atau 1 (i = 1, 2, 3, 4, 5)
Pada mulanya (pada node 1), seluruh variabel adalah variabel bebas. Ujilah apakah
penyempurnaan terbaik dari node ini fisibel atau tidak. Ternyata penyempurnaan terbaik dari

24
node 1 ini, yaitu x1 = 0, x2 = 0, x3 = 0, x4 = 0, dan x5 = 0, tidak fisibel karena melanggar
kedua pembatas. Sekarang kita uji apakah benar node 1 tidak mempunyai penyempurnaan
yang fisibel. Untuk menguji (8.7-3), tentukan x1 = 1, x2 = 1, x3 = 0, x4 = 1, dan x5 = 1 yang
memberikan -9 ≤ -3 sehingga (8.7-3) terpenuhi. Untuk menguji (8.7-4), tentukan x l = 1, x2 =
1, x3 = 1, x4 = 0, x5 = 0, dan diperoleh -10 ≤ 7 sehingga (8.7-4) terpenuhi. Hal ini berarti
bahwa node 1 mempunyai penyempurnaan yang fisibel.
Sekarang kita lakukan pencabangan pada salah satu variabel bebas. Misalkan kita pilih x i.
Node baru yang diperoleh adalah node 2 dengan pembatas x i = 1 dan node 3 dengan
pembatas xi = 0 (lihat Gambar 8.14).

1 t=1

x1 = 1 x1 = 1

3 2

Gambar 8.14: Pencabangan pada node 1

Sekarang kita pilih node 2 untuk dianalisis. Penyempurnaan terbaik dari node 2 adalah x1 =
1, x2 = 0, x3 = 0, x4 = 0, dan x5 = 0. Akan tetapi, penyempurnaan ini tidak fisibel. Karena itu,
lakukan pengujian untuk mengetahui apakah node 2 memiliki penyempurnaan yang fisibel.
Kita tahu bahwa x1 = 1, x2 = 1, x3 = 0, x4 = 1, dan x5 = 1 memenuhi (8.7-3), dan x1 = 1, x2 = 1,
x3 = 1, x4 = 0, x5 = 0 memenuhi (8.7-4). Artinya, tidak ada informasi tentang apakah node 2
memiliki penyempurnaan yang fisibel atau tidak. Karena itu, lakukan pencabangan dari node
2 dengan memilih salah satu dari variabel bebas. Misalkan kita memilih x 2. Node baru dari
pencabangan ini adalah node 4 dengan pembatas x2 = 1 dan node 5 dengan pembatas x 2 = 0
(lihat Gambar 8.15)

1 t=1

x1 = 1 x1 = 1

2 t=2 3

x2 = 1 x2 = 0

4 5

Gambar 8.15: Pencabangan pada node 2

25
Berdasarkan aturan LIFO, kita pilih node 5 untuk dianalisis. Penyempurnaan terbaik dari
node 5 adalah x1 = 1, x2 = 0, x3 = 0, x4 = 0, x5 = 0. Penyempurnaan ini juga tidak fisibel.
Karena itu, lakukan pengujian fisibilitas pada node 5. Dengan menentukan x 1 = 1, x2 = 0, x3 =
0, x4 = 1, x5 = 1 pada (8.7-3), kita peroleh -7 ≤ -3 sehingga (8.7-3) terpenuhi. Berikutnya,
tentukan x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 0 pada (8.7-4). Kita peroleh -8 ≤ -7 sehingga (8.7-
4) terpenuhi. Hal ini menunjukkan bahwa tidak ada informasi mengenai ada-tidaknya
penyempurnaan yang fisibel pada node 5 ini. Karena itu, lakukan pencabangan pada node 5
dengan memilih variabel bebas x3 sehingga diperoleh node 6 dan 7 (lihat Gambar 8.16).
Dengan aturan LIFO, kita pilih node 6 untuk dianalisis. Penyempurnaan terbaik bagi
node 6 adalah x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 0. Penyempurnaan ini fisibel sehingga kita
mendapatkan calon solusi dengan z = -9. Berikutnya, kita analisis node 7. Penyempurnaan
terbaik dari node 7 adalah xl = 1, x2 = 0, x3 = 0, x4 = 0, x5 = 0 dengan z = -7. Karena z = -7
lebih baik daripada z = -9, maka ada kemungkinan bagi node 7 untuk mengalahkan calon
solusi yang ada saat ini. Untuk itu, lakukan pengujian terhadap node 7 untuk mengetahui
apakah node 7 ini memiliki penyempurnaan yang fisibel. Perhatikan bahwa x1 = 1, x2 = 0, x3
= 0, x4 = 1, x5 = 1 memenuhi (8.7-3), sedangkan x1 = 1, x2 = 0, x3 = 0, x4 = 0, x5 = 0 tidak
memenuhi (8.7-4). Hal ini berarti

1 t=1

x1 = 1 x1 = 1

2 t=2 3

x2 = 1 x2 = 0

4 5 t=3

x3 = 1 x3 = 0

6 7

Gambar 8.16: Pencabangan pada node 5

bahwa tidak akan ada penyempurnaan dari node 7 yang dapat memenuhi (8.7-4). Jadi, node 7
tidak memiliki penyempurnaan yang fisibel sehingga dapat diabaikan (nyatakan hal ini
dengan membubuhkan tanda X pada Gambar 8.17).

26
1 t=1
x1 = 1 x1 = 1

2 t=2 3
x2 = 1 x2 = 0

4 5 t=3
x3 = 1 x3 = 0

6 t=4 7 t=5

Calon solusi X
dengan z = -9 Tidak fisibel

Gambar 8.17: Node 6 sebagal calon solusi dan node 7 yang tidak memiliki penyempurnaan
yang fisibel
Sesuai dengan aturan LIFO, sekarang kita analisis node 4. Penyempurnaan terbaik dari node
4 adalah x1 = 1, x2 = 1, x3 = 0, x4 = 0, x5 = 0. Solusi ini memberikan z = –10. Karena itu, node
4 tidak dapat mengalahkan calon solusi dari node 6 (z = –9) sehingga node 4 dapat diabaikan
(lihat Gambar 8.18).

1 t=1
x1 = 1 x1 = 1

2 t=2 3
x2 = 1 x2 = 0

4 5 t=3
z = -10
x3 = 1 x3 = 0

6 t=4 7 t=5
Calon solusi X
dengan z = -9 Tidak fisibel

Gambar 8.18: Node 4 tidak dapat mengalahkan calon solusi pada node 8
Dari Gambar 8.18 kita tahu bahwa satu-satunya node yang tersisa adalah node 3.
Penyempurnaan terbaik untuk node 3 adalah x 1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0 yang tidak

27
fisibel. Tetapi, karena penyempurnaan ini memberikan z = 0, maka ada kemungkinan bahwa
node 3 dapat memberikan solusi fisibel yang lebih baik daripada calon solusi saat ini (z = –
9). Untuk itu, lakukan pengujian untuk mengetahui apakah node 3 memiliki penyempurnaan
yang fisibel. Dengan memasukkan x1 = 0, x2 = 1, x3 = 0, x4 = 1, x5 = 1 ke dalam (8.7-3),
diperoleh –5 ≤ –3, yang berarti node 3 memenuhi (8.7-3). Selanjutnya, dengan memasukkan
x1 = 0, x2 = 1, x3 = 1, x4 = 0, x5 = 0 ke dalam (8.7-4), diperoleh –6 ≤ –7, yang berarti bahwa
node 3 tidak memenuhi (8.74). Jadi, node 3 dapat diabaikan (lihat Gambar 8.19).

1 t=1
x1 = 1 x1 = 1

2 t=2 3 t=7
x2 = 1 x2 = 0 X
Tidak fisibel
4 t=6 5 t=3
z = -10
X x3 = 1 x3 = 0

6 t=4 7 t=5

Calon solusi X
dengan z = -9 Tidak fisibel

Gambar 8.19: Node 3 tidak memiliki penyempurnaan yang fisibel


Karena tidak ada lagi node yang harus dianalisis, maka calon solusi pada node 6 dengan z =
-9 pastilah optimal. Dengan demikian maka x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 0 dan z = -9
adalah solusi optimal bagi persoalan 0-1 IP semula.

8.8 Menyelesalkan Persoalan IP dengan Teknik Cutting Plane


Teknik ini merupakan teknik penyelesaian yang telah lebih dahulu dikenal dan digunakan
orang sebelum kita mengenal teknik branch-and-bound. Pendekatan yang dilakukan dalam
teknik cutting plane adalah dengan membuat pembatas tambahan yang memotong ruang
fisibel dari LP relaksasi sehingga dapat mengeliminasi solusi yang tidak integer. Proses
pemotongan akan terus berlangsung sehingga diperoleh solusi dengan seluruh variabel (yang
dikehendaki) berharga integer.
Keberhasilan teknik ini sangat terbatas, bergantung pada struktur persoalan yang

28
dihadapi. Artinya, hanya persoalan tertentu yang dapat diselesaikan dengan teknik ini.
Karena itu, sekarang teknik ini hampir tidak pernah lagi digunakan.
Sebagai ilustrasi perhatikan soal berikut ini:
Maksimumkan: z = 7 x1 + 9 x2
berdasarkan:
– xl + 3 x 2 ≤ 6
7 x1 + x2 ≤ 35
x1, x2 ≥ 0 ; x1, x2 integer
Solusi LP relaksasi dari persoalan di atas adalah x1 = 9/2, x2 = 7/2 dan z = 63 (buktikan!)

Gambar 8.20: Pemotongan daerah fisibel oleh pembatas sekunder


Ide algoritma ini adalah mengubah konveks dari ruang solusi sedemikian sehingga titik
ekstrem yang sesuai menjadi integer. Pembatasan atau pemotongan ruang solusi ini harus
berada dalam set konveks. Misalnya, pada persoalan di atas dapat ditambahkan pembatas
sekunder sehingga membentuk titik ekstrem baru (4,3) yang memberikan solusi optimum
integer (lihat Gambar 8.20). Perhatikan bahwa area yang terpotong pada ruang solusi asal
tidak mengandung harga integer.
Uraian berikut akan menunjukkan bagaimana membuat pembatas sekunder secara
sistematis, baik pada persoalan IP murni maupun campuran.

29
8.8-1 Algoritma pecahan (integer murni)
Persyaratan dasar bagi pemakaian algoritma ini adalah bahwa semua koefisien pembatas dan
ruas kanannya harus integer. Hal ini diperlukan karena adanya koefisien pecahan pada
pembatas akan menyebabkan harga variabel slack yang pecahan juga.
Rincian algoritma ini adalah sebagai berikut:
1. Persoalan dipecahkan sebagai masalah programa linier biasa.
2. Jika solusi optimum integer, maka tidak ada yang harus dikerjakan lagi. Kalau
tidak, pembatas sekunder yang akan menekan solusi ke arah solusi integer harus
dikembangkan sebagai berikut:
Tabel optimum dari suatu persoalan programa linier adalah sebagai berikut:
Basis x1 … xi … xm w1 … wj … wn Solusi
z 0 … 0 … 0 c1 … cj … cn β0
x1 1 … 0 … 0 11 …  1
j
… 1n β1
. . . . . . . .
. . . . . . . .
. . . . . . . .
xi 0 … 1 … 0  i1  ij  in βi
. . . . . . . .
. . . . . . . .
. . . . . . . .
xm 0 … 0 … 1  m1  mj  mn βm

Variabel-variabel xi (i = 1, 2, ..., m) menyatakan variabel-variabel basis, sedangkan variabel-


variabel (j = 1, 2, ..., n) menyatakan variabel-variabel nonbasis.
Perhatikan persamaan ke-i di mana variabel basis xi diasumsikan mempunyai harga yang
tidak integer. Maka:
n
xi   i    i j w j , βi noninteger (1)
j 1

Setiap persamaan seperti di atas akan dinyatakan sebagai baris sumber (source row).
Misalkan:
i   i   fi
 
 i j   i j  f ij

Dimana : [βi] = integer terbesar sedemikian sehingga


[βi] ≤ βi

30
[  i j ] =integer terbesar sedemikian sehingga
[  ij ] ≤  ij
0 < fi < 1
0 ≤ fij < 1
Dengan demikian persamaan diatas menjadi :

 
n n
xi    i   f i    i j w j   f ij w j
j 1 j 1

Atau:

 
n n
f i   f ij wij  xi    i     i j w j (2)
j 1 j 1

Ruas kiri persamaan (2) harus integer supaya harga x i dan wj integer juga. Implikasinya
adalah bahwa ruas kanan harus integer. Karen a f ij ≥ 0 dan wj ≥ 0 untuk setiap harga i dan j,
maka:
n

f
j 1
ij wj  0

Konsekuensinya ialah f i   f ij w j  f i
j 1

n
Hal ini berarti bahwa f i   f ij w j  1 karena fi < 1
j 1

Karena ruas kiri harus integer, maka haruslah


n
f i   f ij w j  0
j 1

Kalau bentuk di atas dimodifikasi dengan menambahkan variabel slack, maka didapat :
n
f i   f ij w j  S i  0
j 1

Atau :
n
S i   f ij w j  f i
j 1

di mana Si adalah variabel slack nonnegatif yang berdasarkan definisi harus integer.
Persamaan pembatas ini didefinisikan sebagai fractional cut (potongan pecahan) atau disebut
juga pembatas sekunder.

31
Pada tabel terakhir didapat wj = 0 sehingga Si = fi yang berarti tidak fisibel. Hal ini berarti
bahwa pembatas baru tersebut tidak terpenuhi oleh solusi semula sehingga untuk mengatasi
ketidakfisibelan ini dapat digunakan metode dual simpleks, yang pada dasarnya sama dengan
memotong ruas solusi hingga solusi integer optimum.
Setelah pembatas sekunder ditambahkan, maka tabel baru menjadi :

Basis x1 … xi … xm w1 … wj … wn Si Solusi
z 0 … 0 … 0 c1 … cj … cn 0 β0
x1 1 … 0 … 0 11 …  1
j
… 1n 0 β1
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
xi 0 … 1 … 0  i1  ij  in 0 βi
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
xm 0 … 0 … 1  m1  mj  mn 0 βm
Si 0 … 0 … 0 -fi1 -fij -fin 1 -fi

Jika solusi baru (yang diperoleh dari metode dual simpleks) ini integer, maka proses
perhitungan selesai. Jika tidak, maka pembatas tambahan lainnya harus dibentuk kembali.
Lakukan prosedur ini berulang kali hingga semua variabel berharga integer.
Sebagai ilustrasi kita lihat contoh soal yang telah diformulasikan pada awal Subbab 8.8
sebagai berikut:
Maksimumkan: z = 7x1 + 9x2
berdasarkan pembatas:
–x1 + 3x2 ≤ 6
7x1 + x2 ≤ 35
x1, x2 integer nonnegatif
Setelah diselesaikan dengan metode simpleks, diperoleh solusi optimum sebagai berikut:
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

32
(Solusi di atas kemudian disebut sebagai solusi kontinu optimum.) Karena hasilnya masih
belum integer, maka diperlukan pembatas tambahan. Karena x 2 dan x1 sama-sama
merupakan noninteger, maka salah satu dapat dipilih untuk menurunkan persamaan pembatas
baru tersebut.
Dalam hal ini, variabel yang akan terpilih harus memberikan ketidaksamaan yang "kuat",
yaitu yang dapat mempercepat pencapaian solusi integer optimum.
Untuk jelasnya, perhatikanlah dua ketidaksamaan berikut ini :
n

f
j 1
ij w j  fi (i)

Dan
n

f
j 1
kj wj  fk (ii)

Ketidaksamaan (i) dikatakan "lebih kuat" dari (ii) jika fi ≥ fk dan fij ≥ fkj untuk seluruh harga j.
Definisi "kekuatan" ini dijabarkan menjadi suatu aturan yang mengatakan bahwa pembatas
baru harus diturunkan dari baris yang mempunyai:
a. maxi ( fi ), artinya dari baris dengan pecahan terbesar atau :
 n  n

b. maxi  f i /  f ij  , artinya dari baris dengan rasio f i /  f ij terbesar


 j 1  j 1

Kembali kepada contoh soal di atas, karena baik persamaan x 2 maupun persamaan x1
mempunyai harga yang sama (f1 = f2 = 1/2), maka tidak ada harga max i (fi). Karena itu,
pemilihan harus didasarkan pada aturan b) dengan cara sebagai berikut :
 Mengubah koefisien pembatas yang merupakan bilangan bertanda negatif, sedemikian
sehingga akhirnya diperoleh bilangan positif. Pada contoh di atas, koefisien x 3 dari per-
samaan x1 adalah –1/22 yang diubah dengan cara: –1/22 = 21/22 – 1. Selanjutnya,
koefisien x3 dari persamaan x1 ini dinyatakan sebagai 21/22.
n

 Mencari harga maksimum dari rasio f i /  f ij


j 1

Dengan demikian diperoleh:


persamaan x1 : 21/22 x3 + 3/22 x4 1/2
persamaan x2 : 7/22 x3 + 1/22 x4 ½

33
1/ 2 1/ 2
karena 
7 / 22  1 / 22 21 / 22  3 / 22
maka persamaan x2 terpilih untuk menurunkan persamaan pembatas baru.
x2 + 7/22 x3 + 1/22 x4 = 3½
atau:
x2 + (0 + 7/22)x3 + (0 + 1/22)x4 = (3 + 1/2)
persamaan pembatas barunya adalah:
S1 – 7/22 x3 – 1/22 x4 = – 1/2
masukkan ke dalam tabel semula hingga didapat:
Basis x1 x2 x3 x4 S1 Solusi
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 3½
x1 1 0 -1/22 3/22 0 4 4/7
S1 0 0 -7/22 -1/22 1 -1/2
Dengan metode dual simpleks diperoleh:
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 4/7
x3 0 0 1 1/7 –22/7 1 4/7

Karena solusi di atas masih noninteger, maka harus dibuat lagi pembatas baru dari persamaan
x1
X1 + (0 + 1/7)x4 + (-1 + 6/7)S1 = (4 + 4/7)
S2 – 1/7 x4 – 6/7 S1 = –4/7
Masukkan pada tabel terakhir hingga didapat:

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

34
Dengan metode dual simpleks, akhirnya didapat:
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

Solusi integer optimum telah tercapai dengan x1 = 4, x2 = 3 dan z = 55.

8.8-2 Algoritma campuran


Tentukan xk sebagai variabel integer dari persoalan campuran. Seperti halnya pada persoalan
integer murni, perhatikanlah persamaan xk pada solusi kontinu optimumnya sebagai berikut:
n n
xk   k    kj w j    k   f k    kj w j
j 1 j 1

Atau :
n
xk    k   f k   kj w j (baris sumber)
j 1

Karena ada beberapa variabel wj yang tidak dibatasi oleh harga integer, maka kita tidak dapat
lagi menggunakan fractional cut seperti pada kasus integer murni. Walaupun demikian, dapat
dibuat suatu potongan (cut) baru dengan berdasarkan pada ide yang sama. Supaya x k
berharga integer, maka salah satu kondisi di bawah ini harus dapat terpenuhi:
xk    k 

Atau :
xk    k   1

Dari baris sumber di atas didapat kondisi-kondisi di atas ekuivalen dengan :


n


j 1
k
j
wj  fk (i)


j 1
k
j
w j  fk 1 (ii)

35
Tentukan
J+ = set dari subscript j untuk  kj ≥ 0

J- = set dari subscript j untuk  kj < 0


Maka dari (i) dan (ii) didapat :

 
k
j
wj  fk (iii)
jJ

fk

f k  1 jJ 
 kj w j  f k (iv)

Karena (i) dan (ii) yang dengan sendirinya (iii) dan (iv) tidak dapat terjadi secara simultan
(bersamaan), maka (iii) dan (iv) dapat dikombinasikan ke dalam satu pembatas yang
berbentuk :

 f 

S k    kj w j  k  kj w j    f k (potongan campuran).

 jJ  f k  1 jJ  

di mana Sk ≥ 0 adalah variabel slack nonnegatif.
Persamaan terakhir di atas merupakan persamaan potongan campuran (mixed cut) yang
diperlukan, yang menyatakan kondisi yang diperlukan untuk menjadikan xk integer.
Karena seluruh wj = 0 pada tabel optimum semula, maka potongan di atas menjadi tidak
fisibel sehingga untuk mengatasinya digunakan metode dual simpleks.

Contoh: Lihat lagi contoh soal pada 8.8-1


Misalkan hanya x1 yang dibatasi dengan harga integer. Dari persamaan x1 didapat:
x1 – 1/22 x3 + 3/22 x4 = (4 + 1/2)
J– = {3}, J+ = {4}, f1 = 1/2
Dengan demikian, mixed cut-nya adalah :
  1/ 2  
S1  3 / 22 x4     1 / 22  x3   1 / 2
 1/ 2  1 
Atau
S1 – 1/22 x3 – 3/22 x4 = –1/2

36
Masukkan persamaan pembatas ini ke dalam tabel, maka didapat :

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 –1/22 –3/22 1 –1/2
Dengan dual simpleks diperoleh:
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/3 11/3
Solusi optimum telah tercapai dengan x1 = 4, x2 = 10/3 dan z = 58 di mana pembatas integer
untuk x1 telah terpenuhi pula.

8.9 Soal
1. Seorang pengusaha mempunyai 5 alternatif proyek yang dapat dipilih sebagai tempat
menanamkan modalnya. Lamanya masa penanaman modal untuk kelima jenis proyek ini
adalah 3 tahun, dan pengusaha tersebut dapat menyediakan modal sebesar 25 juta rupiah
pada tiap-tiap tahunnya. Jika keuntungan yang dapat diperoleh serta biaya yang harus di-
keluarkan setiap tahunnya adalah sebagai berikut:
Biaya (juta rp) Keuntungan
Proyek
Tahun 1 Tahun 2 Tahun 3 (juta rp)
1 5 1 8 20
2 4 7 10 40
3 3 9 2 20
4 7 4 1 15
5 8 6 10 30
proyek mana sajakah yang harus dipilih agar diperoleh keuntungan maksimum?
Selesaikan dengan algoritma aditif.
2. Modal sebesar Rp 4 juta dapat dipinjamkan kepada tiga pengusaha dalam jangka waktu
tertentu. Masing-masing pengusaha akan mampu membayar bunga yang besarnya bergantung pada
jumlah modal yang dipinjam seperti yang tertera dalam tabel berikut ini. (Modal hanya dipinjamkan
dalam satuan juta; tidak dalam pecahannya.)

37
Bila modal Bunga yang akan dapat diberikan oleh
yang dipinjamkan pengusaha
adalah sebesar A B C
0 juta Rp 0 ribu RP 0 ribu Rp 0 ribu
1 juta 15 ribu 15 ribu 26 ribu
2 juta 40 ribu 40 ribu 40 ribu
3 juta 80 ribu 60 ribu 45 ribu
4 juta 95 ribu 73 ribu 51 ribu

Berapa besar masing-masing pengusaha A, B, C sebaiknya diberi pinjaman agar jumlah


keuntungan yang akan diperoleh pemilik modal dapat maksimum?
3. Sebuah perusahaan angkutan laut mendapat permintaan untuk mengangkut 5 jenis mesin
perkakas dari pelabuhan Sabang ke Tanjung Perak. Kapal yang disediakan untuk
mengangkut mesin-mesin itu mempunyai kapasitas (daya ahgkut) maksimum sebesar
112 ton dengan volume 109 m3. Jika berat/unit, volume/unit, dan harga/unit masing-
masing mesin adalah sebagai berikut:
Jenis mesin Berat/unit Volume/unit Harga/unit
1 5 1 4
2 8 8 7
3 3 6 6
4 2 5 5
5 7 4 4

bagaimanakah formulasi persoalan di atas sehingga total mesin yang diangkut


mempunyai nilai (harga) terbesar? (Ingat bahwa jumlah masing-masing jenis mesin yang
diangkut harus merupakan bilangan bulat).
4. Sebuah perusahaan mendapat tawaran untuk mengangkut 5 jenis barang pada waktu yang
bersamaan. Untuk setiap kilogram barang yang diangkutnya, perusahaan yang memiliki
pesawat tersebut akan memperoleh Rp 100 ditambah sejumlah bonus tertentu yang tidak
bergantung pada berat barang, tetapi bergantung pada jenis barang. Pesawat dapat
mengangkut maksimum 2000 kg.

Data mengenai barang yang diangkut adalah sebagai berikut:

38
Berat Volume Bonus
Jenis barang
(kg) (ft) (Rp)
Barang kelontong 1000 70 Rp 75.000
Sepeda motor 1100 100 " 90.000
Makanan kaleng 700 100 " 120.000
Obat-obatan 800 80 " 110.000
Beras 500 50 " 70.000

a. Formulasikan persoalan di atas sebagai persoalan programa integer.


b. Jika ternyata bobot bara ng tidak menjadi masalah, tetapi volume kabin maksimum
adalah 200 ft3, maka barang apa saja yang sebaiknya diangkut?
5. 5. Selesaikan persoalan integer di bawah ini:
a. Maks.: xo = 40xi + 80x2 + 40x3 + 30x4 + 60x5
s/t: 10 x1+ 8 x2 + 6 x3 + 14 x4 + 16 x5 ≤ 50
2 x1 + 14 x2 + 18 x3 + 8 x4 + 12 x5 ≤ 50
16 x1 + 20 x2 + 4 x3 + 2 x4 + 20 x5 ≤ 50
xj = 0 atau 1
b. Maks.: x0 = x1 + 2x2
s/t: 4x1 + 2x2 ≤ 13
x1, x2 integer nonnegatif.
c. Maks.: x0 = 3x1 + x2 + 3x3
s/t: –x1 + 2x2 + x3 ≤ 4
4x2 – 3x3 ≤ 2
x1 – 3x2 + 2x3 ≤ 3
x1, x2, x3 = 0 atau 1
6. Sebuah persoalan programa linier dengan fungsi tujuan maksimasi mempunyai solusi
optimum sebagai berikut: x1 = 13/7, x2 = x3 = 0 dengan Z = 39. Jika variabel-variabel
keputusannya harus berupa bilangan bulat positif, selesaikanlah persoalan tersebut
dengan cara branch-and-bound.
7. Selesaikan persoalan berikut ini dengan menggunakan metode cutting plane:
Maks.: x0 = 30.000 x1 + 80.000 x2 + 65.000 x3
s/t: x1 + 3x2 + 2x3 ≤ 5
x1, x2, x3 integer nonnegatif.

39

Anda mungkin juga menyukai