• Tidak ada hasil yang ditemukan

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.

Dokumen terkait