Branch and Bound Algorithm
Operations Research I
Giriş
Operasyonel Araştırmalar I dersinde, gerçek hayatta karşılaştığımız problemlerin matematiksel modellemesini ve bu modellerin nasıl çözüleceğini öğrendik. Başlangıçta Doğrusal Programlama (Linear Programming - LP) üzerine odaklandık ve daha sonra Tamsayılı Programlama (Integer Programming - IP) konusuna geçtik. Bu makalede, Branch and Bound Algoritması ile tamsayılı programlama problemlerini nasıl çözeceğimizi inceleyeceğiz.
Doğrusal Programlama ve Çözüm Yöntemleri
LP problemlerini çözerken genellikle aşağıdaki yöntemleri kullandık:
- Grafik Yöntemi: İki değişkenli LP problemlerinde kullanılır. Kısıtları grafik üzerinde göstererek, feasible region (uygulanabilir bölgeyi) belirleriz. Optimal çözüm, bu bölgenin köşe noktalarından birinde bulunur.
- Simplex Yöntemi: Daha yüksek boyutlu LP problemleri için kullanılır.
- Two-Phase Simplex
- Big M Method
- Dual Simplex
- Revised Simplex
Bu yöntemlerin hepsi LP problemlerinin çözümü için geliştirilmiştir.
Tamsayılı Programlamaya Giriş
LP ve IP arasındaki temel fark, IP'de karar değişkenlerinin tamsayı olması gerektiğidir. Ancak, LP'de kullandığımız grafik yöntemi veya simplex yöntemi, değişkenlerin tamsayı olma şartını doğrudan ele alamaz. Bu nedenle, tamsayı kısıtlarını dikkate alan özel yöntemlere ihtiyaç duyarız.
Branch and Bound Algoritması Nedir?
Branch and Bound (Dallan ve Sınırla) Algoritması, tamsayılı programlama problemlerini çözmek için kullanılan bir yöntemdir. Bu algoritma, problemi daha küçük alt problemlere bölerek ve belirli bir sırayla bu alt problemleri çözerek optimal tamsayı çözümü bulmayı hedefler.
Ana Fikir
- Branching (Dallanma): Karar değişkenlerinin tamsayı olmaması durumunda, bu değişkenler üzerinde dallanmalar yaparız. Örneğin, değişken tamsayı değilse, ve şeklinde iki yeni alt problem oluştururuz.
- Bounding (Sınır Koyma): Alt problemlerin hedef fonksiyon değerlerini kullanarak, daha kötü sonuçlar verecek dalları budarız (prune).
Örnek Bir Problem ve Çözümü
Bir örnek üzerinden Branch and Bound algoritmasını inceleyelim.
Problem:
Maksimize edin:
Kısıtlar:
Adım 1: LP Relaxation Çözümü
İlk olarak, tamsayı kısıtlarını göz ardı ederek LP problemini çözelim.
Çözüm:
LP'nin optimal çözümü , ve bulunur.
Ancak, ve tamsayı değildir.
Adım 2: Dallanma
Tamsayı olmayan değişkeni üzerinde dallanalım.
- Dal 1:
- Dal 2:
Dal 1:
Bu kısıtı LP problemimize ekleyerek çözüyoruz.
Çözüm:
Yeni LP'nin optimal çözümü , , .
hala tamsayı değil.
Tamsayı olmayan üzerinde dallanırız:
- Dal 1.1:
- Dal 1.2:
Dal 1.1:
Kısıtlarımız:
Çözüm:
Optimal tamsayı çözüm elde edilir: , , .
Bu bir Candidate Solution (Aday Çözüm) olarak saklanır.
Dal 1.2:
Kısıtlarımız:
Bu kısıtlar altında feasible (uygulanabilir) bir çözüm yoktur. Bu dal Pruned (Budanır).
Dal 2:
Kısıtlarımız:
Çözüm:
Yeni LP'nin optimal çözümü , , .
Her iki değişken de tamsayı olduğundan, bu çözüm yeni Candidate Solution'ımız olur.
Adım 3: Sonuç
En iyi tamsayı çözüm ile , olarak bulunur.
Branch and Bound Algoritmasının Özellikleri
- Kesin Çözüm: Branch and Bound, optimal tamsayı çözümü garanti eden bir yöntemdir.
- Esneklik: Hem maksimizasyon hem de minimizasyon problemlerinde kullanılabilir.
- Etkililik: Büyük ölçekli problemler için hesaplama yükü artabilir, ancak dalları budama stratejileri ile etkinlik artırılabilir.
Özet
Branch and Bound algoritması, tamsayılı programlama problemlerini efektif bir şekilde çözmek için kullanılan güçlü bir yöntemdir. Ana fikir, problemi alt problemlere bölmek ve uygun olmayan dalları elemek üzerine kuruludur. Bu sayede, optimal tamsayı çözümüne ulaşılır.
Unicourse ile sınavlardan istediğin notları al.
Türkiye'nin en iyi üniversitelerinden 20.000'den fazla öğrenci sınavlarına Unicourse ile hazırlanıyor. Sen de aramıza katıl.