Branch and bound merupakan merupakan metode algoritma yang umum digunakan untuk menentukan penyelesaian optimal dari masalah optimisasi, khususnya pada diskrit dan optimisasi kombinatorial. Pada intinya algoritma ini menggunakan pendekatan enumerasi dengan cara mematikan search space yang tidak mengarah pada penyelesaian.
Pada tahun 1960, algoritma branch and bound diperkenalkan oleh A.H. Land dan A.G. Doig. Sesuai dengan namanya branch and bound memiliki dua alat yaitu branching dan bounding.
Branching dilakukan dengan cara meng-cover daerah penyelesaian yang layak dengan beberapa sub daerah layak yang lebih kecil.
Bounding dilakukan dengan cara menentukan nilai batas atas dan batas bawah untuk penyelesaian optimal di dalam sub daerah yang layak.
Proses branching menggunakan skema Breadth First Search (BFS). Simpul atau titik yang dibangkitkan terlebih dahulu merupakan simpul yang bertetangga dengan simpul akar. Namun proses pemilihan simpul yang akan diperluas (simpul expand) tidak seperti pada BFS murni. Tidak seperti BFS murni yang memilih simpul expand berdasarkan urutan pembangkitan, pada algoritma branch and bound pemilihan simpul expand didasarkan pada nilai fungsi objektif. Masalah optimisasi biasanya memiliki fungsi untuk menghasilkan nilai batas yang unik. Sedangkan pada algoritma branch and bound pemilihan formula fungsi menggunakan metode heuristic, berdasarkan pada pengalaman dan instinc pembuat program dan tidak ada bukti matematisnya. Hasil optimisasi yang diperoleh melalui algoritma ini bergantung pada keakuratan pemilihan fungsi batas tersebut. Tidak ada cara baku untuk menentukan fungsi batas karena masalah yang sama bisa saja memiliki rumus perhitungan nilai batas yang berbeda.
Langkah-langkah
algoritma branch and bound untuk menyelesaikan TSP adalah sebagai berikut.
Langkah
1:
Tetapkan
penyelesaian awal masalah. Penyelesaian yang ditetapkan merupakan rute
perjalanan lengkap. Tentukan batas tertinggi pada nilai minimum fungsi objektif
dengan mencari berbagai kemungkinan rute perjalanan. Batas atas ini dinotasikan
dengan fU .
Langkah
2:
Buat
cabang awal dengan mengatur X1 =1 untuk masing-masing kota j = 2,3,...,n . Untuk i = j, nilai Cij = M untuk menyatakan rute yang tidak mungkin. Hitung
batas terendah yang dinotasikan dengan fL pada nilai minimum fungsi
objektif di setiap titik. Dari data awal, hapus baris pertama dan kolom ke j,
serta ganti Cij = M. Tentukan penyelesaian masalah dan tambahkan harga f ke Cij
untuk memperoleh fL sehingga fL = Cij + f. Jika fL <= fU aktifkan simpul, dan jika sebaliknya hapus
simpul.
Langkah
3:
Jika
tidak ada simpul aktif pada langkah ini maka penyelesaian terbaik saat ini
adalah optimal. Jika tidak, pilih simpul dengan nilai fL terkecil dan buat cabang
baru dengan mengatur Xjk = 1 untuk setiap kota yang belum dikunjungi sebelumnya.
Langkah
4:
Buat
batasan f pada setiap simpul dengan menghapus baris j dan kolom k dari data
pada simpul aktif diatasnya. Tambahkan nilai f ke Cjk dengan seluruh
nilai sebelumnya.
HASIL DAN
PEMBAHASAN
Penerapan
Algoritma Branch And Bound Pada TSP
Misalkan terdapat
5 kota yang harus dikunjungi dengan jarak antar kota seperti pada tabel 1.
Tabel 1. Jarak
Antar Kota

Langkah 1.
Penyelesaian
awal untuk masalah TSP ditetapkan X12 = X23 = X34 = X45 = X51
=1
dengan nilai 131 + 139 + 127 + 130 + 131 = 658, sehingga f1U = 658
.
Langkah 2.
Buat
cabang X12 =1 (simpul 2), X13 =1
(simpul 3), X14 =1 (simpul 4), X15 =1
(simpul 5). Pada simpul 2 hapus baris pertama dan kolom kedua dari data awal
serta ganti C21 = M , sehingga diperoleh :

X23
= X35 = X54 = X41
=1dengan
nilai 139 + 118 + 130 + 144 = 531, dengan f = 531. Jadi fL = C12 + f
= 131 + 531 = 662. Atur f2U = 662, kemudian simpan penyelesaian ini
sebagai penyelesaian baru dan simpul 2 sebagai simpul aktif sementara. Pada simpul
3 hapus baris pertama dan kolom ketiga dari data awal serta ganti C31
= M, sehingga diperoleh:

X35
= X54 = X42 = X21
=1
dengan nilai 118 + 130 + 153 + 131 = 532, dengan f = 532. Jadi fL = C13
+ f = 120 + 532 = 652 . Karena fL < f2U, maka simpan
penyelesaian ini sebagai penyelesaian baru. Hapus simpul 2 dan atur simpul 3
sebagai simpul aktif sementara. Pada simpul 4 hapus baris pertama dan kolom
keempat dari data awal serta ganti C41 = M
, sehingga diperoleh :

X43
= X35 = X52 = X21
=1
dengan nilai 127 + 118 + 154 + 131 =
530, dengan f = 530. Jadi fL = C14 + f = 144 + 530 = 674. Karena fL >
f2U, maka hapus simpul 4. Pada simpul 5 hapus baris
pertama dan kolom kelima dari data awal serta ganti C51 = M
, sehingga diperoleh:
X53
= X34 = X42 = X21
=1
dengan nilai 118 + 127 + 153 + 131 =
529, dengan f = 529.
Jadi fL = C15 +
f = 131 + 529 = 660. Karena fL > f2U, maka hapus
simpul 5.
Langkah
3.
Terdapat
satu simpul aktif yaitu simpul 3 dengan fL
= 652.
Buat cabang X32 =1
(simpul 6), X34 =1
(simpul 7), X35 =1
(simpul 8). Buat batasan pada simpul 6, 7, 8, dengan memodifikasi data pada
simpul 3. Pada simpul 6 hapus baris ketiga dan kolom kedua dari data di simpul
3 serta ganti C21 = M , sehingga diperoleh:

X24 = X45 = X51 =1 dengan nilai 153 + 130 + 131 = 414, dengan f = 414. Jadi fL = C13 + C32 + f = 120 + 139 + 414 = 673. Atur f3U = 673, kemudian simpan penyelesaian ini sebagai penyelesaian baru dan simpul 6 sebagai simpul aktif sementara. Pada simpul 7 hapus baris ketiga dan kolom keempat dari data di simpul 3 serta ganti C41 = M, sehingga diperoleh :

X45 = X52 = X21 =1 dengan nilai 130 + 154 + 131 = 415, dengan f = 415. Jadi fL = C13 + C34 + f = 120 + 127 + 415 = 662. Karena fL < f3U, maka simpan penyelesaian ini sebagai penyelesaian baru. Hapus simpul 6 dan atur simpul 7 sebagai simpul aktif sementara. Pada simpul 8 hapus baris ketiga dan kolom kelima dari data di simpul 3 serta ganti C51 = M , sehingga diperoleh:

X54
= X42 = X21 =1
dengan nilai 130 + 153 + 131 = 414, dengan f =
414. Jadi fL = C13 + C35 + f = 120 + 118 + 414 = 652. Karena
fL < f3U, maka simpan penyelesaian ini sebagai
penyelesaian baru. Hapus simpul 7 dan atur simpul 8 sebagai simpul aktif.
Langkah
4.
Terdapat satu simpul aktif yaitu simpul 8 dengan fL = 652. Buat cabang X52 =1 (simpul 9), X54 =1 (simpul 10). Pada simpul 9 hapus baris kelima dan kolom kedua dari data di simpul 8 serta ganti C21 = M, sehingga diperoleh :

Penyelesaiannya
adalah
X24
= X41 =1 dengan nilai 153 + 144 = 297, dengan f =
297. Jadi
fL
= C13 + C35 + C52 + f
= 120
+ 118 + 154 + 297
= 689
Karena
fL > f3U, maka hapus simpul 9.
Pada simpul 10 hapus baris kelima dan kolom keempat dari data di simpul 8 serta ganti C41 = M, sehingga diperoleh :

Penyelesaiannya
adalah
X42
= X21 =1 dengan nilai 153 + 131 = 284, dengan f =
284. Jadi
fL
= C13 + C35 + C54 + f
= 120 + 118 + 130 + 284
= 652.
Karena fL > f3U, maka hapus simpul 10. Tidak ada simpul
yang aktif. Terdapat alternatif perjalanan yang optimal yaitu 1 - 3 - 5 - 4 - 2
- 1 dengan nilai 652. Pohon algoritma branch and bound diperlihatkan pada
gambar 1.
Perbandingan Hasil
Algoritma Branch And Bound Dengan Exhaustive Search Hasil iterasi pada
exhaustive search diperlihatkan pada tabel 2.
Dari tabel di atas
terlihat bahwa penyelesaian optimal yang diperoleh dengan exhaustive search
sama dengan algoritma branch and bound yaitu 1-3-5-4-2-1 atau dengan rute
terbalik 1-2-4-5-3-1 memiliki nilai optimal 652. Karena exhaustive search akan
memberikan hasil 100% benar, maka untuk contoh kasus ini hasil yang diperoleh melalui
algoritma branch and bound juga pasti benar.
Gambar 1. Pohon algoritma
branch and bound
0 comments:
Post a Comment