Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde kullanılan algoritma tiplerinden birisi de sezgisel algoritmalardır. Temel olarak çalışmalarında kesinlik bulunmayan bu algoritmalar ya her zaman aynı performans ile çalışmaz ya da her zaman sonuç vermeyi garanti etmez ancak yine de problemi iyileştirme (optimisation) için kullanışlı algoritmalardır.
Üstsezgisel algoritmalar ise bu sezgisel algoritmalar üzerinde çalışan bir karar mekanizmasıdır. Yani bir problem için 3 farklı yöntem kullanabileceğimizi ve bu yöntemlerin hepsinin farklı açılardan avantajlı olan sezgisel algoritmalar olduğunu düşünelim. Bu sezgisel yöntemlerden hangilerinin seçileceğinin seçilmesine metaheuristic (sezgi üstü) algoritma ismi verilir.
Günümüzde pek çok alanda çözüm için birden fazla yöntem geliştirilmiş ve bu yöntemler probleme göre iyileştirilmiştir. Ancak bir problem için birden fazla olan çözüm yöntemleri arasında seçim yapma ihtiyacı bu yolla ortadan kaldırılmış olur. Basitçe bir sezgi üstü algoritma bu algoritmalar arasında seçim yapmakta ve en başarılı olanı çalıştırmaktadır.
Algoritma seçimine karar veren bu mekanizma ise çoğu zaman istatistiksel verilere dayanarak çalışmaktadır. Ancak bu algoritmanın da sezgisel olarak yazıldığı durumlar mevcuttur.
Meta Heuristic ve Hyper Heuristic Ayrımı
Mustafa Özgür Bey’in yorumu üzerine bu başlığı ekleme ihtiyacı duydum. Terim ve anlam olarak birbirine çok yakın olan meta heuristic (üst setgisel algoritmalar) ve hyper heuristic (hiper sezgisel algoritmalar) arasındaki ayrım aslında bir probleme çözüm aranılan uzaya göre farklılaşmaktadır. Yani iki yaklaşımda da bir probleme sezgisel olarak (heuristic) çözüm aranmakta fakat iki yaklaşımdaki çözüm aranan uzaylar farklı olmaktadır.
Basitçe sezgi üstü algoritmalarda (meta heuristic) arama işlemi problemin çözüm kümesinde (search space) yapılırken hiper sezgisel (hyper heuristic) algoritmalarda arama işlemi sezgisel uzayda (heuristic search space) yapılır.
Bu anlamda hiper sezgisel bir yaklaşımda problemin çözümünden daha çok hangi sezgisel algoritma ile çözüme daha verimli ulaşılabileceğine karar verilmeye çalışılır. Yani bir problemin birden fazla sezgisel çözümü varsa bunlardan hangisinin daha başarılı olacağına karar verilmesine hiper sezgisel (hyper heuristic) ismi verilir.
Buna karşılık sezgi üstü algoritmalar (meta heuristic algorithms) probleme getirilen sezgisel yaklaşımı bir kara kutu (black box) olarak kabul eder ve çözüm için geliştirilen bu algoritmanın detayıyla ilgilenmez. Tek yaptığı çözümde kullanılan bir yada daha fazla fonksiyonu en verimli şekle getirmeye çalışmaktır. Bu fonksiyonlara hedef fonksiyon (goal function , objective function) ismi verilir.
Bu ayrımı bir şekil ile ifade edecek olursak hiper sezgisel yaklaşım için:
Yukarıdaki şekilde görüldüğü üzere aynı problemde çözüme ulaşmak için kullanılan çok sayıdaki sezgisel algoritmadan hangisinin seçileceğine hiper sezgisel algoritma karar vermektedir. Benzer şekilde birden fazla sezgisel algoritmanın arka arkaya uygulanması gibi durumlarda da karar veren algoritmaya hiper sezgisel algoritma ismi verilir.
Üst sezgisel algoritma ise:
Yukarıdaki şekil çizilebilir. Şekilde görüldüğü üzere üst sezgisel algoritmaya konu olan sezgisel algoritma bir tanedir. Üst sezgisel algoritma bu sezgisel algoritmanın üzerinde çalışarak bu algoritmayı verimli hale getirmeye (optimisation) çalışır. Bunun için de genellikle algoritmanın bir fonksiyonunu (ki bu fonksiyona hedef fonksiyon (goal function, objective funtion) ismi verilir) iyileştirmeye çalışır.
Bu anlamda üst sezgisel algoritmanın konusu sanki giriş ve çıkış değerlerine göre bir kara kutuya (black box) benzetilebilir.
Meta-Hyper Heuristic ( Üst Hiper Sezgisel) algoritmalar
Yukarıdaki farkı araştırırken karşılaştığım bir yaklaşımda hem üst sezgisel hem de hiper sezgisel yaklaşımların birleştirilmiş olduğu çözüm modelleri oldu. Bu yaklaşımda hem kullanılan sezgisel algoritmaların verimlileştirilmesi için hedef fonksiyonlara ( goal function , objective function) müdahale edilmekte hem de bu algoritmalar arasından seçim yapılmaktadır.
Açıklamalar için teşekkürler ama Meta-heuristic yerine Hyper-heuristic olmalı.
Bilgilendirici yazınız için teşekkürler.