• Tidak ada hasil yang ditemukan

BAB VI ANALISIS PEMECAHAN MASALAH

MANEJER UMUM DAN PERSONALIA

3.4. Algoritma Branch and Bound

3.4.1. Definisi Metode Branch And Bound

Metode Branch And Bound diusulakan pertama kali oleh A.H.Land dan A.G.Doig pada tahun 1960. Sebenarnya metode ini dibuat untuk pemrograman linier (linier programming)5), Namun kenyataanya metode ini mampu menyelesaikan permasalahan seperti TSP dan beberapa masalah lain. Metode ini menggunakan pohon pencarian (Search Tree), setiap simpul di pohon merupakan representasi dari sejumlah kemungkinan solusi dari TSP. Metode ini hanya dapat digunakan untuk masalah optimasi saja (optimazion problem).

Algoritma dimulai dengan pengisian sebuah nilai ke akar dari pohon pencarian tersebut. Pencabangan dilakukan dengan memasang sebuah pending node ke pending node lain yang lebih rendah levelnya. Bobot juga dihitung pada setiap proses dan ditulis di simpul pohon. Jika sebuah simpul diketahui merupakan solusi yang tidak mungkin bagi persoalan yang dihadapai, simpul tersebut diisi dengan nilai tak terbatas (infinity). Algoritma berhenti ketika sudah tidak mungkin lagi untuk membentuk simpul baru di pohon atau hasil terakhir yang ditemukan merupakan hasil yang lebih rendah (minimum) dari isi simpul yang telah ada pada level yang lebih rendah6).

Kita definisikan S = {Ej} merupakan kumpulan dari berbagai kemungkinan solusi yang ada, dengan kata lain, E1, E2, E3, …,En merupakan himpunan simpul – simpul yang membentuk sirkuit Hamilton dan dari sekian banyak kemungkinan sirkuit Hamilton tersebut terdapat sebuah solusi untuk TSP. Kita definisikan juga | S | sebagai kardinalitas dari S dan f merupakan fungsi yang didefinisikan pada elemen Ej. Kita akan mencari solusi E*∈ S yang merupakan solusi minimum dari fungsi f .

Misalkan persoalan mempunyai properti yang memungkinkan melakukan partisi (∏) dari himpunan bagian S0lm..p dari S.

Secara rekursif :

Dengan kondisi awal :

Representasi gambar dari persoalan ini dilukis pada gambar 2.1, di sini kita melihat sebuah pohon pencarian (search tree). Setiap simpul merupakan sebuah himpunan bagian S dari dari Solusi. Superscript i menyatakan level simpul di pohon pencarian. 0lm..pk menyatakan path atau jalan dari akar pohon.

Gambar 3.1 Solution Search Tree

Closed node pada pohon merupakan simpul yang sudah tidak diproses lagi (tidak bisa dipartisi lagi). Sedangakan Pending node merupakan simpul yang belum ditutup artinya masih bisa diproses lagi atau di partisi. Sebagai contoh, S0,

S01 merupakan closed node dan S011 merupakan pending node.

Selama simpul pohon masih bisa dipartisi menjadi dua atau lebih, kardinalitas dari himpunan bagian menurun sejalan dengan bertambahnya level.

Kita akan mencapai sebuah simpul (Pending node) yang hanya mengandung satu elemen dari S, yang juga mengandung solusi. Simpul ini disebut

Terminal node 7).

Tujuan dari metode ini adalah untuk menemukan solusi dengan mengenumerasikan sedikit mungkin simpul pohon. Dalam melakukan pencabangan harus dipilih sebuah pending node yang mempunyai bobot paling kecil. Pencarian solusi dengan pencabangan berhenti ketika kita telah menemukan solusi yang mungkin dan merupakan bobot terkecil dari semua bobot pending node 7).

3.4.1.1 Pencabangan (Branching)8)

Bilamana kita menghadapi peubah-peubah biner maka cara paling langsung yang digunakan untuk membagi gugus penyelesaian layak menjadi anak gugus-anak gugus adalah dengan menetapkan nilai salah satu peubah (misalkan x1) pada x1=0 untuk satu anak gugus dan pada x1=1 untuk anak gugus yang lain.

Gambar 3.2 memperlihatkan pembagian (pencabangan) menjadi dua submasalah ini dengan suatu pohon dengan cabang-cabang (busur) dari simpul semua (yang bersesuaian dengan keadaan bahwa masalah keseluruhan mempunyai semua penyelesaian layak) menjadi dua simpul yang bersesuaian dengan dua submasalah. Pohon ini, yang akan terus ‘bercabang-kembang’ setahap demi setahap, disebut sebagai pohon penyelesaian (solution tree atau pohon pencacahan) untuk algoritma tersebut. Peubah yang digunakan untuk melakukan pencabangan pada suatu iterasi dengan memberikan nilai pada peubah tersebut disebut peubah pencabangan.

Gambar 3.2 Pohon penyelesaian yang dibuat dengan pencabangan pada iterasi 1.

Pada bagian ini nanti anda akan melihat bahwa satu dari submasalah ini dapat diselesaikan (dihentikan) langsung, sedangkan submasalah yang lain akan memerlukan pembagian lebih lanjut menjadi subamsalah yang lebih kecil dengan memberikan nilai x2=0 atau x2=1, dan seterusnya.

Untuk masalah PB (Pemrograman Bilangan Bulat) dengan peubah bilangan bulatnya mempunyai lebih dari dua nilai yang mungkin maka pencabangan masih dapat dilakukan dengan memberikan nilai tertentu pada peubah pencabangan kemudian membuat lebih dari dua submasalah baru. Suatu pendekatan pengganti yang baik dari pemberian nilai ini adalah dengan memberikan wilayah (range) nilai peubah pencabangannya (sebagai contoh, xj≤ 2

atau xj≥ 3) untuk setiap submasalah baru.

3.4.1.2 Pembatasan (Bounding)

Sekarang, untuk setiap submasalah ini kita perlu mendapatkan suatu batas untuk penyelesaian layak terbaiknya. Cara baku untuk melakukan ini adalah dengan menyelesaikan relaksasi dari submasalah tersebut. Pada kebanyakan kasus, relaksasi suatu masalah diperoleh secara sederhana dengan menghilangkan satu gugus kendala yang membuat masalah tersebut sulit diselesaikan. Untuk masalah PB, kendala yang menjadi masalah utama adalah kendalah yang memerlukan masing-masing peubah berupa bilangan bulat. Oleh karena itu, relaksasi yang banyak digunakan adalah PL (Pemrograman Linear) relaksasi yang menghilangkan gugus kendala ini.

3.4.1.3 Penghentian (Fathoming)

Suatu submasalah dapat diselesaikan (dihentikan), dan dengan demikian akan dihilangkan dari penghitungan selanjutnya.

Suatu submasalah dihentikan (dihilangkan dari pertimbangan berikutnya) jika :

Uji 1: Batasnya ≤ Z*, atau

Uji 2: PL-relaksasinya tidak mempunyai penyelesaian layak, atau

Uji 3: Penyelesaian optimal untuk PL-relaksasinya berupa bilangan bulat. (Jika penyelesaian ini lebih baik dari ‘incumbent’, maka penyelesaian ini menjadi ‘incumbent’ yang baru, dan uji 1 digunakan kembali untuk semua submasalah yang tidak dihentikan dengan nilai Z* baru yang lebih besar.)8) Langkah-langkah dalam penyelesaian metode Branch dan Bound untuk masalah maksimalisasi adalah sebagai berikut.9)

a. Menyelesaiakan masalah linear programming dengan metode simpleks yang umum (tanpa integer).

b. Meneliti solusi optimalnya. Jika variabel basis yang diharapkan bernilai bulat dan ternyata bulat, maka solusi optimal bulat sudah tercapai. Tetapi, jika satu atau variabel basis yang diharapkan bulat ternyata tidak bulat maka dilanjutkan langkah berikutnya.

c. Nilai solusi desimal pada solusi yang layak dicabangkan ke dalam sub-sub masalah. Tujuannya adalah untuk menghilangkan solusi kontinyu yang tidak memenuhi persyaratan integer. Pencabangan itu dilakukan melalui kendala-

8) Frederick S. Hiller, Gerald J. Lieberman, “Pengantar Riset Operasi”,

Edisi Kelima. Jilid 1. Penerbit Erlangga, 1994, hal.468 - 472.

9) Dra. Fien Zulfikarijah, M.M, “

Operation Research”, Edisi Pertama. Bayu Media Publishing, 2004, hal.249

kendala mutually exclusive yang perlu untuk memenuhi persyaratan integer

dengan syarat tidak ada solusi integer layak yang diikutsertakan.

d. Untuk setiap submasalah, nilai solusi optimal kontinyu fungsi tujuan ditetapkan sebagai batas atas. Solusi terbaik menjadi batas bawah (pada awalnya, ini adalah solusi kontinyu yang dibulatkan kebawah) Sub-sub masalah yang memiliki batas atas kurang dari batas bawah yang ada tidak diikutsertakan dalam analisis selanjutnya. Suatu solusi integer layak adalah sama baik atau lebih baik dari batas atas untuk setiap submasalah yang dicari. Jika terdapat solusi yang demikian, maka suatu submasalah dengan batas atas terbaik dipilih untuk dicabangkan dan kembali ke langkah c.

Dokumen terkait