Sezgisel (Heuristic) Optimizasyon Algoritmaları

w1sd0m

Katılımcı Üye
28 Mar 2020
699
626
/802.1x/
hp61ok8.png


---> Heuristic algorithms <---
Sezgisel Optimizasyon Algoritmaları


r22gs9i.jpeg


Merhaba dostlarım, bu gün sizlere yapay zeka alanında, optimizasyon sorunlarının çözümünde kullanılan algoritmalardan biri olan:
“Sezgisel Optimizasyon Algoritmaları”
konusunu anlatacağım.

Foruma katkısı ve bu alanda çalışacak arkadaşlara faydalı olması dileğiyle başlamak istiyorum.

İyi okumalar.

|

|
v

Algoritma nedir?


byqbaza.jpg


Öncelikle algoritma kavramına ve ardından optimizasyon kavramına değinerek başlayacağım.
Kısa tanımı ile algoritma; belirli bir problemin ya da sorunun çözümü için ihtiyaç duyulan tüm işlemlerin sıralı ve mantıksal olarak ifade edilme şeklidir.

Kapsamlı tanımı ile algoritma, Matematik ve bilgisayar biliminde belirli bir problem sınıfını çözmek veya bir hesaplama gerçekleştirmek için kullanılan, iyi tanımlanmış talimatların sonlu bir dizisidir. Algoritmalar, hesaplamalar yapmak ve veri işlemek için spesifikasyonlar olarak kullanılır. Algoritmalar, yapay zekayı kullanarak otomatik kesintiler yapabilmek ve kodu çeşitli yollardan yönlendirmek için matematiksel ve mantıksal testlerde kullanılabilir.
Buluşsal yöntem; özellikle iyi tanımlanmış doğru veya optimal sonucun olmadığı problem alanlarında, tam olarak belirlenemeyen, doğru veya optimal sonuçları garanti etmeyebilecek bir problem çözme yaklaşımıdır.
Etkili bir yöntem olarak bir algoritma, bir fonksiyonu hesaplamak için sınırlı bir uzay ve zaman miktarı içinde ve iyi tanımlanmış bir biçimsel dilde ifade edilebilir. Bir ilk durumdan ve ilk girdiden başlayarak komutlar yürütüldüğünde, sonlu sayıda iyi tanımlanmış ardışık durum boyunca ilerleyen ve sonunda "
output(çıktı)" üreten bir hesaplama tanımlanır.
Nihai bir bitiş durumunda sona erer. Bir durumdan diğerine geçiş mutlaka deterministik değildir; rastgele algoritmalar olarak bilinen bazı algoritmalar,
rastgele girdi içerebilir.

Örneğin basitçe yazdığınız "Vücut kitle endeksi hesaplama uygulamanız" da bir algoritma örneğidir.
Python:
size=int(input("Boyunuzu giriniz(cm): "))
weight=float(input("kilonuzu giriniz: "))
index=weight / ((size/100)**2)
print("Vücut kitle index'iniz {}".format(round(index,2)))
print("Durumunuz: ")
if index <=18.5:
    print("Zayıf")
    print("{} kilogram ekmek yemen lazım.".format(round(18.5*((size/100)**2)-weight,2)))
elif index <=24.9:
    print("Normal")
elif index <=29.9:
    print("Fazla kilolu")
    print("{} kilogram fazlan var.".format(round(weight-24.9*((size/100)**2)),2))
elif index <=39.9:
    print("Obez")
    print("{} kilogram fazlan var.".format(round(weight - 24.9 * ((size/100)**2)), 2))
else:
    print("Aşırı obez.")
    print("{} kilogram fazlan var.".format(round(weight - 24.9 * ((size / 100) ** 2)), 2))


Optimizasyon Nedir?

s5wb4o9.jpg

Matematik, bilgisayar bilimi, ekonomi veya yönetim biliminde matematiksel optimizasyon, bazı mevcut alternatifler arasından en iyi öğenin seçilmesidir.
Diğer bir tanımla bir optimizasyon problemi, izin verilen bir küme içinden girdi değerlerini sistematik olarak seçerek ve fonksiyonun değerini hesaplayarak gerçek bir fonksiyonu en üst düzeye çıkarmak veya en aza indirmekten oluşur.
Kısaca optimizasyon, çeşitli farklı türde amaç işlevleri ve farklı etki alanları dahil olmak üzere, tanımlanmış bir alana verilen bazı amaç fonksiyonlarının "
mevcut en iyi" değerlerini bulmayı içerir.

Peki "Algoritma" ve "Optimizasyon" kavramlarına değindiğimize göre, bu makalenin konusu olan “Sezgisel optimizasyon algoritmaları” başlığına geçebiliriz.



Sezgisel Algoritma nedir?


qc1kbvf.png


Sezgisel algoritmalar, büyük boyutlu optimizasyon problemleri için, kabul edilebilir sürede optimuma yakın çözümler verebilen algoritmalardır.
Geçiş süresini daha verimli hale getirebilmek için en iyi çözümü aramaktan vazgeçerek çözüm zamanını azaltırlar.
Sezgisel algoritmalar en iyi sonucu bulacaklarını garanti etmezler fakat makul bir süre içerisinde bir çözüm elde edeceklerini garanti ederler. Genellikle en iyiye yakın olan çözüm yoluna hızlı ve kolay bir şekilde ulaşırlar.
Genel amaçlı sezgisel optimizasyon algoritmaları, biyoloji tabanlı, fizik tabanlı, sürü tabanlı, sosyal tabanlı, müzik tabanlı ve kimya tabanlı olmak üzere altı farklı grupta değerlendirilmektedir.

Toparlayacak olursak;

Sezgisel Algoritmalar
,
> Sezgisel ya da buluşsal (heuristic) bir problem çözme tekniğidir.
> Sonucun doğruluğunun kanıtlanabilir olup olmadığını önemsenmez (en iyi sonucu bulacaklarını garanti etmezler).
> Çeşitli alternatif hareketlerden etkili olanlara karar vererek iyiye yakın çözüm yolları elde etmeyi amaçlar.
> Makul bir süre içerisinde bir çözüm elde edeceklerini garanti ederler.
> Genellikle en iyiye yakın olan çözüm yoluna hızlı ve kolay bir şekilde ulaşırlar.


Peki “neden tercih edilirler?” sorusuna cevap olarak şöyle diyebiliriz;
> Optimizasyon problemi, kesin çözümü bulma işleminin tanımlanmadığı bir yapıya sahip olabilir, anlaşılabilirlik açısından sezgisel algoritmalar karar verici için çok daha basit olabilir, öğrenme amaçlı ve kesin çözümü bulma işleminin bir parçası olabilir.
> Matematiksel ifadeler ile yapılan tanımlamalarda genellikle birçok parametre/kısıt ihmal edilir, bu durumda, model parametrelerini belirleme aşamasında kullanılan verinin hatalı olması, sezgisel yaklaşımın üretebileceği alt optimal çözümden daha büyük hatalara neden olabilir.

Bu gibi durumlardan ötürü “sezgisel algoritmalar” tercih edilir.


b83j8ah.png
r5p4yan.png


Peki genel olarak Sezgisel optimizasyon yöntemleri nelerdir, onlara bakalım;

  • Genetik Algoritma (Genetic Algorithm)(GA)
  • Karınca Kolonisi Optimizasyonu (Ant Colony Optimization)(ACO)
  • Parçacık Sürü Optimizasyonu (Particle Swarm Optimization)(PSO)
  • Yapay Arı Kolonisi (Artificial Bee Colony)(ABC)
  • Diferansiyel Gelişim Algoritması (Differential Evolution Algorithm) (DEA)
  • Benzetim Tavlama (Simulated Annealing)(SA)
  • Yerçekimi Arama Algoritması (Gravity Search Algorithm)(GSA)
  • Gaz Brownian Hareketi Optimizasyonu( Gases Brownian Motion Optimization) (GBMO)
  • Isı Transferi Arama (Heat transfer search)(HTS)
  • Elektromanyetik Alan Optimizasyonu (Electromagnetic Field Optimization) (EFO)
  • Optikten Esinlenen Optimizasyon (Optic Inspired Optimization)(OIO)
  • Ağırlıklı Süperpozisyon Çekimi (Weighted Superposition Attraction (WSA)
  • Orman Optimizasyonu Algoritması (Forest Optimization Algorithm)(FOA)
  • Kasırga Temelli Optimizasyon Algoritması (Hurricane Based Optimization Algorithm)
  • Kara Delik Optimizasyon Algoritması
  • Su Döngüsü Optimizasyon Algoritması
  • Meyve Sineği Optimizasyon Algoritması
  • Krill Sürü Optimizasyon Algoritması
  • Bakteri Yiyecek Arama Davranışı
  • Yarasa Algoritması
  • Ateş Böceği Algoritması
  • Aslan Algoritması
  • Gri Kurt Algoritması
  • Yunus Balığı Algoritması
  • Çalı Kolonisi Algoritması
  • Yapay Alg Algoritması
  • Virüs Koloni Arama Algoritması
  • Köpekbalığı Koku Alma Optimizasyon Algoritması
  • Sosyal Örümcek Algoritması
  • Ağaç-Tohum Algoritması(Tree-Seed Algorithm)(TSA)
  • Tabu arama Algoritması
şeklinde listeleyebiliriz.

Konunun daha iyi anlaşılabilmesi için bu yöntemlerden birtanesine biraz değinmek istiyorum.

Artificial Bee Colony Algorithm (ABC)

askljee.jpeg

Artificial Bee Colony (Yapay arı kolonisi) algoritması; sayısal problemleri optimize etmek için “Dr.Derviş Karaboğa” tarafından tanıtılan sürü tabanlı bir meta-sezgisel algoritmadır.
Algoritmanın ilham kaynağı “
bal arılarıdır”.
Model üç temel bileşenden oluşmaktadır. Bunlar;
işçi toplayıcı arılar, işsiz toplayıcı arılar ve gıda kaynaklarıdır. İşçi ve işsiz toplayıcı arılar, zengin besin kaynaklarını kovanlarına yakın ararlar. Algoritma bu bakış açısından yola çıkılarak oluşturulur. Ayrıca kendi kendini organize etme ve kolektif zeka için gerekli olan iki önde gelen davranış biçimini de tanımlar. Bunlar; olumlu geri bildirimle sonuçlanan zengin gıda kaynaklarına toplayıcıların alınması, olumsuz geri bildirime neden olan toplayıcılar tarafından zayıf kaynakların terk edilmesi olarak belirtilir.
Bu algoritmada yapay toplayıcı arılar (
yani aracılar), kolonisi zengin yapay gıda kaynakları (yani,bir sorun için en iyi çözümler) arar.
Algoritmayı uygulamak için ele alınan optimizasyon problemi ilk önce bir amaç fonksiyonunu minimize eden en iyi parametre vektörünü bulma problemine dönüştürülür.

Daha sonra, yapay arılar rastgele bir başlangıç çözüm vektörleri popülasyonu keşfederler ve stratejilerini uygulayarak bunları yinelemeli olarak geliştirirler. Zayıf çözümleri terk ederler ve komşu arama mekanizması aracılığıyla daha iyi çözümlere doğru ilerlerler.

Listeleyerek bakacak olursak;

Yapay arı kolonisi algoritması;

> Bal arılarından esinlenmiştir.
> Optimizasyon algoritmasıdır.
> Sürü zekasına dayanır.
> Sürü davranışını modeller.


İşçi arılar;
> Belli kaynaklardan yiyeceği kovana getirir.
> Kaynağın konumunu ve kalitesini koloniyle paylaşır.


İşsiz arılar;
> Kaynakları arama eğilimindedirler ve ikiye ayrılırlar.
> Kaşif arılar,
> Gözcü arılar.


t0val12.png


Arıların davranışlarını inceleyecek olursak;
> Arılar, kaliteli besin kaynakları aramak için çevreyi rastgele keşfetmeye başlarlar.
> Besin kaynağını bulduktan sonra arı işçi arı olarak vazifelenir ve kaynaktan besin çıkarmaya başlar.
> Kaynaktaki nektarı çıkaran işçi arı kovana dönerek nektarı boşaltır.
> Bu işlemi yaptıktan sonra arı 2 tür davranış sergileyebilir; tekrar keşfettiği kaynağa dönebilir, dans alanında bir dans sergileyerek kaynağın konumuna dair bilgi paylaşabilir.
> Eğer bir besin kaynağı tükenirse işçi arı, kaşif arı olur ve rastgele yeni bir kaynak keşfetmeye başlar.
> Kovanda bekleyen gözcü arılar ise, çalışan arıları besin kaynağı koleksiyonunda izler ve kaynaklar arasında en karlı olanları seçer.

> Bir besin kaynağının seçimi, kaynağın kalitesi(uygunluk değeri) ile orantılıdır.


f890rrq.jpeg


İşin matematiğine girmeyeceğim dostlarım. Çünkü konumuz ABC algoritması değil.

Genel hatlarıyla “
Sezgisel optimizasyon algoritmaları” nedir, nerelerde kullanılır, neden kullanılır ve türleri nelerdir sorularına cevap verdik.

Hepimizin gördüğü ve göreceği gibi, hayatımızı kolaylaştıran ve sorunlarımıza çözüm bulduğumuz algoritmalar aslında doğanın ve yaşamın birer yansımasıdır. İnsanoğlu; doğayı,kainatı ve dahi yaşamı gözlemlediği, anladığı ve zarar vermediği sürece bilim her daim gelişecektir.


^
|
|


Evet dostlarım bir makalenin daha sonuna geldik.
Beni artık sadece CTF konusu açarken değil, aynı zamanda Python, Yapay Zeka, Makine Öğrenmesi gibi konularda da makale yazarken göreceksiniz.
Vatana,millete ve THT ailesine hayırlı uğurlu olsun 😊

Okuduğunuz için teşekkürler.



hp61ok8.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.