Teorema 2.5 Kondisi optimal path (path optimality condition)
2.6 Metode Balas (Balas Additive Algorithm)
Branch and bound merupakan salah metode dalam menyelesaikan
permasalahan integer programming. Dasar dari metode ini adalah dengan cara mengenumerasi semua solusi integer yang mungkin dalam bentuk struktur tree.
Misalkan sebuah enumerasi secara lengkap dari sebuah permasalahan di mana terdapat 3 (tiga) variabel x1,x2,x3 yang mana 1 x1 3, 0 x2 1 dan 1 x3 1.
Gambar 2.9 Tree enumerasi secara lengkap
Ide utama dari metode branch and bound adalah menghindari pembentukan seluruh cabang tree yang mungkin karena hal ini akan sangat rumit jika berhadapan dengan permasalahan dengan variabel yang banyak. Dalam metode branch and bound
pembentukan cabang pada setiap tingkatan hanya akan dilakukan pada node yang memberi harapan dan memungkinkan mendapatkan solusi optimal. Dalam penentuan
node yang lebih menjanjikan untuk mendapatkan solusi optimal adalah dengan
melakukan pendekatan terhadap batas pada nilai terbaik dari fungsi objektif. Metode ini disebut dengan percabangan. Percabangan (branching) adalah membangun node
terpilih untuk selanjutnya akan cabangkan lagi ke tingkat selanjutnya yang merupakan anak dari node yang telah dibentuk sehingga diharapkan pada penyelesaian akhir hanya sedikit bagian dari enumerasi secara lengkap yang dibentuk.
Hal terpenting dalam metode branch and bound adalah penghentian percabangan, yang mana akan dilakukan pemotongan secara permanen dan tidak dilakukan percabangan lagi pada node yang sudah ditentukan. Penghentian percabangan ini dilakukan jika bisa dipastikan bahwa untuk percabangan pada tingkat selanjutnya tidak akan memperoleh hasil yang fisibel maupun optimal. Penghentian percabangan ini merupakan bagian yang paling penting guna menghindari percabangan yang terlalu banyak pada tree.
2 x x3 1 x 1 2 3 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 Z 1 0
Dalam pendeskripsian metode branch and bound secara detil akan dilakukan pendefinisian terhadap beberapa terminologi:
Node: Solusi sebagian atau solusi lengkap. Sebagai contoh, sebuah node pada
tingkatan ke dua dari permasalahan yang melibatkan 5 variabel akan di presentasikan sebagai solusi sebagian (3,17,x3,x4,x5) yang mana variabel pertama bernilai 3 dan variabel ke dua bernilai 17, sedangkan nilai untuk tiga variabel belum diberikan dan dianggap sebagai variabel bebas.
Leaf (Leaf Node): Sebuah solusi lengkap yang mana semua variabel telah di
ketahui nilainya.
Bud (bud node): Sebuah solusi sebagian baik itu fisibel maupun tidak yang
selanjutnya masih akan dilakukan percabangan lagi.
Bounding function (fungsi pembatas): Metode dalam pendekatan nilai terbaik
dari fungsi objektif yang dihasilkan pada saat bud node dicabangkan. Hanya
bud node yang mempunyai nilai fungsi pembatas.
Branching (percabangan): proses pembentukan anak dari node untuk setiap
bud node. Sebuah anak dari node dibentuk untuk setiap variabel selanjutnya
yang mungkin.
Incumbent: Penyelesaian terbaik yang telah didapatkan sejauh percabangan
yang sudah dibentuk. Pada saat pertama dimulai proses pencarian solusi belum ditentukan nilai incumbent. Dalam kasus ini solusi fisibel pertama akan menjadi incumbent sampai ditemukan solusi fisibel yang lebih baik dari nilai
incumbent yang ada dan menggantikan posisi incumbent itu. Sampai tidak ada
lagi node yang bisa dicabangkan, nilai incumbent ini menilai nilai solusi optimal.
Ada beberapa aturan dalam pemilihan node untuk memilih bud node
selanjutnya dalam percabangan selanjutnya:
Best-first or global bud node selection: Pemilihan bud node dilakukan dengan
memilih bud node yang memiliki nilai terbaik bagi fungsi objektif. Pada kasus
minimize ini berarti akan dipilih bud node yang mempunyai nilai fungsi
Depth-first: Pemilihan akan hanya dilanjutkan pada bud node yang telah di bentuk kemudian memilih bud node yang mempunyai nilai terbaik dari bud
node yang lain pada tingkatan yang sama. Pemilihan secara depth-first terarah
pada penelusuran terhadap satu bud node sehingga hal ini memungkinan lebih cepat mendapatkan penyelesaian secara lengkap (leaf). Setelah didapatkan leaf
percabangan akan dilanjut kan pada bud node di tingkatan atas yang belum dicabangkan.
Breadth-first: Percabangan bud node dilakukan pada tingkatan yang sama di
mana bud node itu dibentuk pertama kali.
Salah satu variasi dari metode Branch and Bound adalah metode Balas. Egon Balas mengembangkan suatu cara atau algoritma untuk menyelesaikan persoalan pemrograman 0-1. Pendekatan yang dilakukan adalah pendekatan enumerasi, baik secara total maupun secara implicit terhadap setiap kombinasi variabel yang diatur sama dengan 0 dan 1.
Pada dasar nya algoritma Balas bekerja adalah sebagai berikut: 1. Bentuk umum dari algoritma Balas adalah:
1 1 2 1, 2, ..., 1, 2, ..., 0 ... n j j j ij j i n M in im ize c x Su b je c t to a x b i m j n c c c
Kondisi yang tidak mengikuti bentuk umum dari algoritma Balas akan dilakukan beberapa perubahan, antara lain:
Fungsi objektif yang setiap variabel xj mempunyai nilai koefisien negatif, untuk variabel xj diganti menjadi (1 xj ).
(1 )
j j
Kendala i dengan pertidaksamaan , pertidaksamaan ini akan diubah kedalam bentuk dengan cara mengalikan ruas kiri dan kanan dengan
( 1).
ij j i ij j i
a x b a x b
Kendala yang merupakan bentuk persamaan, diubah ke dalam bentuk pertidaksamaan. ij j i ij j i ij j i a x b a x b a x b
2. Fungsi objektif berbentuk minimalisasi, dan semua koefisien pada fungsi objektif harus bernilai nonnegative. Untuk mendapatkan nilai terkecil dari Z hal yang dilakukan adalah dengan memberikan nilai 0 pada semua variabel
j x .
3. Pemberian nilai 0 pada semua variabel xj ternyata melanggar salah satu atau lebih dari kendala yang telah ditentukan, akan dilakukan percabangan dengan memberikan nilai 0 dan 1 pada setiap cabang yang dibentuk.
4. Penentuan nilai fungsi pembatas dari percabangan yang telah dibentuk: 1 N x , * 1 N j j j Z c x 0 N x , * 1 1 N j j N j Z c x c Keterangan: N
x = variabel yang diberikan nilai pada level percabangan tertentu, dan *
Z = nilai fungsi pembatas
5. Untuk menentukan apakah solusi yang diberikan oleh fungsi pembatas fisibel atau tidak dilakukan dengan mengambil semua variabel xN (ketika xN 1) atau xN 1 (ketika xN 0) dan variabel bebas yang akan diberikan nilai 0 kemudian diuji terhadap kendala yang ada. Jika semua kendala terpenuhi pada solusi yang diberikan oleh fungsi pembatas, maka node tersebut terukur
lebih baik pada node tersebut apabila node tersebut dicabangkan lagi. Dengan adanya solusi fisibel yang diberikan oleh fungsi pembatas yang memenuhi kendala maka nilai fungsi pembatas ini disebut dengan solusi sementara
(incumbent). Untuk solusi fisibel selanjutnya yang didapatkan akan di
bandingkan dengan solusi sementara yang ada. Jika solusi baru yang dihasilkan lebih baik dari solusi sementara yang ada, maka nilai incumbent
akan digantikan oleh solusi yang baru, begitu seterusnya sampai didapatkan solusi yang optimal.
6. Sebuah bud node dikatakan terukur (fathomed) infisibel jika percabangan yang dilakukan pada bud node tersebut tidak akan menghasilkan solusi yang fisibel. Hal ini bisa dilakukan dengan menguji setiap kendala dengan memberikan nilai 1 pada semua variabel bebas yang memiliki koefisien positif dan nilai 0 pada varibel bebas yang koesifien bernilai negatif. Apabila nilai sisi kiri dari pertidaksamaan kendala ternyata masih lebih kecil dari nilai sisi kanan, kendala tersebut tidak akan bisa memenuhi, sehingga node tersebut bisa dieleminasi sebagai “imposible”.
7. Algoritma Balas menggunakan strategi depth-first node selection untuk pemilihan node dalam percabangan.