Tahap 7. Pengecekan Optimalisasi Tabel Simpleks Iterasi Pertama
3.2. Metode Branch and Bound
Metode Branch and Bound mula-mula dipakai dan dikembangkan oleh Land and Doig (1960) untuk menyelesaikan program integer yang kemudian dimodifikasi oleh Dakin (1965) dan telah dengan sukses menerapkannya di dalam kitab undang-undang hukum dagang banyak orang dalam memecahkan persoalan program integer (Sidabutar, 2008).
Metode ini telah menjadi kode komputer standar untuk program integer, dan penerapan-penerapan dalam praktek tampaknya menyarankan bahwa metode ini lebih efisien dibanding dengan pendekatan Gomory. Teknik ini dapat diterapkan baik untuk masalah pure programming maupun mixed programming.
Secara umum, bentuk umum dari program integer adalah sebagai berikut. Maksimumkan:
∑ dengan kendala:
∑ (≥, =, ≤) bi; i = 1, 2, …, m xj ≥ 0 semua bilangan cacah, j = 1, 2, …, n
Asumsikan fungsi tujuan program integer adalah sebagai berikut. Maksimumkan: z = c1x1 + c2x2 + … + cnxn maka, ( ) = = ∑ ; j = 1, 2, …, n
Selanjutnya, asumsikan fungsi kendala program integer adalah sebagai berikut.
maka, ∑ ; i =1, 2, …, m
Langkah-langkah Metode Branch and Bound
Gagasan yang umum digunakan metode Branch and Bound dalam program integer dapat diuraikan sebagai berikut.
Asumsikan suatu masalah program integer. Maksimumkan
Kendala dimana S0 = {x | Ax = b, x ≥ 0, dan integer}. Ide umum dari metode branch and bound adalah pertama untuk menyelesaikan problema sebagai model kontinu, yakni menyelesaikan program integer sebagai program linier:
Maksimumkan
Kendala dimana T0 = {x | Ax = b, x ≥ 0}.
Andaikan bahwa xr merupakan peubah yang berkendala integer yang mempunyai nilai optimum kontimu xr* yang pecahan. Hasil dari tidak memuat solusi integer yang layak. Sebagai akibatnya nilai integer layak dari xr harus memenuhi salah satu dari dua kondisi berikut yakni:
atau
Kedua kondisi ini bilamana diaplikasikan untuk model yang kontinu maka hasilnya merupakan dua problema saling lepas (mutually exclusive) dengan himpunan kendala sebagai berikut:
(i) { } (ii) { }
dan bilamana kendala-kendala integernya dimasukkan, maka diperoleh himpunan: S1 = {x|Ax = b, , x ≥ 0, dan integer} dan
S2 = {x|Ax = b, , x ≥ 0, dan integer}
Sebenarnya bentuk ini merupakan pemisahan dari S0, yakni , . Solusi optimal x* dari problema yang diberikan, harus berada di salah satu S1 atau S2 dan harus juga merupakan solusi optimal dari salah satu subproblema berikut:
(i) Maksimumkan z = c.x kendala (ii) Maksimumkan z = c.x kendala
kembali bila solusi optimal mempunyai komponen yang bernilai pecahan atau tidak integer. Proses percabangan ini akan membangun pohon keputusan, dengan setiap node k dari pohon keputusan tersebut berhubungan dengan sebuah subproblema: Maksimumkan z = c.x kendala . Jika solusi optimal yang berhubungan dengan program linier tersebut layak (memenuhi) atau mempunyai komponen-komponen bulat, maka solusi ini dicatat dan nilai objektifnya merupakan batas bawah untuk nilai optimum. Dalam kasus seperti ini tidak perlu dilakukan percabangan lebih jauh lagi dari subproblema ini dan node yang demikian difathom atau dipangkas. Node yang belum terfathom disimpan dalam master list. Pada beberapa node, nilai optimal (nilai integer terbesar yang lebih kecil atau sama dengan nilai optimum jika fungsi objektif mempunyai koefisien- koefisien integer) ̅̅̅ dari program linier yang bersangkutan merupakan sebuah batas atas untuk nilai optimum dari semua turunannya. Jika batas atas tersebut lebih kecil dari batas bawah terbaik yang ada, maka subproblema ini tidak dicabangkan lagi. Proses Branch and Bound diteruskan sampai setiap subproblema berhenti karena salah satu dari dua alasan berikut, yakni
(i) Sebuah solusi integer, atau
(ii)Batas atas lebih kecil dari batas bawah yang ada sekarang (Bangun, 2004). Berdasarkan uraian di atas, maka prosedur atau langkah-langkah metode Branch and Bound untuk masalah maksimasi adalah sebagai berikut.
1. Selesaikan masalah program linier dengan metode simpleks.
2. Teliti solusi optimumnya. Apabila variabel keputusan yang diharapkan merupakan bilangan integer, maka solusi optimum integer telah tercapai. Apabila satu atau lebih variabel keputusan yang diharapkan ternyata bukan bilangan integer, lanjutkan ke langkah 3.
3. Jadikan solusi pada penyelesaian langkah 1 menjadi batas atas dan untuk batas bawahnya merupakan solusi yang variabel keputusannya telah diintegerkan (rounded – down).
4. Pilih variabel yang mempunyai nilai pecahan terbesar (artinya bilangan desimal terbesar dari masing-masing variabel untuk dijadikan pencabangan ke dalam sub-sub masalah). Tujuannya adalah untuk menghilangkan solusi yang tidak memenuhi persyaratan integer dalam masalah itu. Pencabangan itu dilakukan secara mutually exclusive untuk memenuhi persyaratan integer dengan jaminan tidak ada solusi fisibel (layak) yang diikutsertakan.
5. Untuk setiap sub-masalah, nilai optimum fungsi tujuan ditetapkan sebagai batas atas. Solusi optimum yang diintegerkan menjadi batas bawah (solusi yang sebelumnya tidak integer kemudian diintegerkan). Sub-sub masalah yang memiliki batas atas kurang dari batas bawah yang ada, tidak diikutsertakan pada analisa selanjutnya. Suatu solusi integer fisibel (layak) adalah sama baik atau lebih baik dari batas atas untuk setiap sub masalah yang dicari. Jika solusi yang demikian terjadi, suatu sub masalah dengan batas atas terbaik dipilih untuk dicabangkan. Kembali ke langkah 4 (Winston, 2004).
Perhitungan dalam Metode Branch and Bound
Satu kerugian dasar dari metode Branch and Bound adalah bahwa metode ini mengharuskan pemecahan program linier yang lengkap di setiap node. Dalam masalah besar, hal ini dapat sangat memakan waktu, terutama ketika satu-satunya informasi yang diperlukan di node tersebut adalah nilai tujuan optimumnya. Hal ini diperjelas dengan menyadari bahwa sebuah batas yang “baik” diperoleh, “banyak” node dapat disingkirkan dengan diketahui nilai tujuan optimum mereka.
Hal di atas mengarah pada pengembangan sebuah prosedur di mana kita tidak perlu memecahkan semua bagian masalah dari pohon pencabangan tersebut.
lebih kecil daripada nilai tujuan yang berkaitan dengan pemecahan integer terbaik yang tersedia, node tersebut disingkirkan. Keuntungan utamanya adalah bahwa batas atas tersebut dapat diestimasi dengan cepat dengan perhitungan minimal. Gagasan umum ini mengestimasi penalti (yaitu, penurunan nilai tujuan) yang dihasilkan dari pemberlakuan kondisi dan . Ini dapat dicapai dengan menambahkan setiap batasan ini ke tabel optimum di node tersebut.
Walaupun metode Branch and Bound memiliki kekurangan, dapat dikatakan bahwa sampai sekarang, ini adalah metode yang paling efektif dalam memecahkan program-program integer dengan ukuran praktis. Pada kenyataannya, semua program komersial yang tersedia didasari oleh metode Branch and Bound. Tetapi, ini tidak berarti bahwa setiap program integer dapat dipecahkan dengan metode Branch and Bound. Ini hanya berarti bahwa ketika pilihannya adalah metode pemotongan dan metode Branch and Bound, metode terakhir ini umumnya terbukti lebih baik (Taha, 1996).
BAB 4