1. Giriş
Harmoni arama, biyolojik algoritmalardan ilham alan bir optimizasyon algoritmasıdır. Harmoni arayışı fikri, müzisyenlerin iyi bir uyum elde etmek için sürekli olarak enstrümanlarını ayarlamalarından kaynaklanmaktadır. Algoritma Zong Woo Geem ve diğerleri tarafından 2001 yılında geliştirilmiş olup, kolay uygulanması ve optimum çözüme hızlı yakınlaşması nedeniyle yaygın olarak kullanılmaktadır.
Algoritmanın fikri bir grubun birlikte çalmasına dayanıyor. Gruptaki bir müzisyen belli bir uyum sağlanana kadar enstrümanı akort eder. Başlangıçta kötü bir uyumla çalan orkestra, belli bir iyi uyum düzeyine ulaşana kadar enstrüman akortunu ayarlar. Ortaya çıkan her uyum, sorunun çözümüdür. Harmoni algoritması, orkestra gibi önceki çözümlerde rastgele değişiklikler yaparak yinelemeli olarak iyileşen yeni çözümler üretir.
2. Algoritma
3. Harmoni Arama Kullanım Alanları
Kolay uygulanabilirliği ve verimliliği nedeniyle harmoni arayışı birçok alanda kullanılmaktadır. Örneğin herhangi bir akademik kurumda oldukça zorlu bir görev olan ders çizelgelemede kullanılabilir. Su dağıtım ağının tasarımı HSA'nın başka bir kullanımıdır. Şebekenin düşük maliyetle sorunsuz bir su temini sağlaması için boru çapı, yükseklik ve ayrım farklılıkları dikkate alınarak inşa edilmesi gerekir. HSA ayrıca mümkün olan en düşük maliyetle çok fazla elektrik sağlamayı içeren güç kaynağı optimizasyonu için de kullanılır. Sonuç olarak harmoni arama algoritması planlama, inşaat mühendisliği, elektrik mühendisliği gibi birçok alanda kullanılmaktadır.
4. Örnek Problem
4.1 Problem Tanımı
Hedefe en yakın noktayı bulmak için harmoni arama algoritmasını kullanacağız. Hedef 100x100 koordinat sisteminin 1. bölgesindeki rastgele bir noktadır.
4.2 Uygunluk Fonksiyonu
Uygunluk fonksiyonu iki nokta arasındaki mesafenin formülüdür. Amaç, fonksiyonu en aza indirmektir.
4.3 Parametreleri Tanımlama
Harmony memory en iyi harmonileri saklar. Harmony history her nesildeki harmonileri saklar. Problem tanımıyla tanımlanan hedef nokta, x ve y koordinatlarından oluşan bir tuple'dır. Harmony memory size, harmoni hafızasının maksimum uzunluğudur. Number of improvisations, harmonileri geliştirmek için yapılan yinelemelerin sayısıdır. Harmony memory considering rate, mevcut bir harmoniyi hafızadan seçme olasılığıdır. Pitch adjusting rate, hafızadan seçilen harmonide küçük değişiklikler yapma olasılığıdır. Maksimum x ve maksimum y koordinat sisteminin sınırıdır.
4.4 İlk Harmonileri Yaratma
Başlangıç harmonileri algoritmanın başlangıcında rastgele oluşturulur. Üretilen her harmoni için uygunluk fonksiyonu çalıştırılır.
4.5 Memory Consideration
Memory consideration fonksiyonu, harmoni belleğinden rastgele bir harmoni seçer.
4.6 Pitch Adjustment
Pitch adjustment fonksiyonu harmoniyi biraz değiştirir. Koordinat sisteminin sınırlarını kontrol ederek koordinatları şansa bağlı olarak birer birer artırır veya azaltır.
4.7 Random Selection
Random selection fonksiyonu rastgele yeni bir uyum yaratır.
4.8 Harmoni Belleğini Güncelle
Update harmony memory fonksiyonu, eğer yeni uyum en kötü uyumdan daha iyi bir çözüm ise, hafızadaki en kötü uyumu yeni uyumla değiştirir.
4.9 Ana Fonksiyon
Algoritma bu ana fonksiyonla yürütülür. İlk olarak harmony memory rastgele kurulur. Daha sonra ya yeni bir harmoni yaratılır ya da hafızadan rastgele seçilir. Eğer harmoni harmoni memory'den rastgele seçilirse pitch adjustment function ile biraz değiştirilebilir. Bundan sonra harmoni hafızası güncellenir. Mevcut harmoni daha iyi bir çözüm ise, en kötü harmoni mevcut harmoniyle değiştirilir. Döngünün son adımı olarak, mevcut yinelemenin yeni nesil olması durumunda harmony history güncellenir. Son olarak en iyi harmoni ve uygunluk fonksiyonu değeri ekrana yazdırılır.
5 Sonuçlar
Algoritma sürekli olarak en kötü çözümü iyileştirerek tüm çözümlerin en iyiye yakın olmasını ve tüm çözümlerin uyum içinde olmasını sağlar. Şekil 4.1'de görüldüğü gibi ilk iterasyonda çözümler dağınık ve uyumsuzdur ancak Şekil 4.2'de tüm çözümler hedefe yakın olup genel uyum sağlanmaktadır.