• Sonuç bulunamadı

2. SAYISAL VE ALGORİTMA TABANLI YAKLAŞIMLAR

2.2 Evrimsel Algoritmalar

2.2.3 Evrimsel algoritmalarda maliyet değeri

Evrimsel algoritmaların çalışması ile ilgili bazı önemli durumlar söz konusudur. Bunların arasında algoritma parametreleri, başlangıç popülasyonun oluşturulması, maliyet fonksiyonunun belirlenmesi ve algoritmanın sonlandırılması yer almaktadır. Evrimsel algoritmalar genellikle rastgele üretilen, yani arama uzayında rastgele dağıtılan bireyler ile çalışmaya başlarlar. Eğer istenilen amaca yönelik bilinen bir çözüm kümesi varsa, bu çözümler algoritmaya başlangıç olarak verilebilir. Aksi halde, algoritma yerel optimuma takılı kalabilir. Bu yüzden, rastgele üretilen bireyler ile bir evrimsel algoritmayı başlatmak arama uzayında çok farklı yerlere dağılabilmeyi sağlar. Bu sayede bireyler arasındaki çeşitlilik artmış olur.

Bir diğer önemli konu ise bir iterasyondaki birey sayısıdır. Birey sayısının fazla olması, arama uzayında daha fazla alana yayılmayı sağlayabilir. Ancak, birey sayısının fazla olması algoritmanın çalışma süresini artıracaktır. Özellikle pahalı (uzun süren) hesaplamalar gerektiren maliyet fonksiyonu hesaplamalarının olduğu bir algoritmada birey sayısının fazla olması algoritmanın hızını büyük ölçüde yavaşlatacaktır.

Bireyler, kendi içlerinde parametre bilgilerini barındırırlar. Bir birey içerisinde bulunan parametreler aslında sistemde tasarlanması istenilen parametrelerdir. Algoritmanın çalışmasını etkileyen diğer etkenler ise algoritmanın mekanizmalarından kaynaklanan katsayı değerleri olabilmektedir. Bu tür evrimsel algoritmalarda rastgelelik söz konusu olduğu için bu rastgeleliği bir düzene oturtmak adına bazı katsayılar kullanılır. Örneğin; mutasyon katsayısı, bir bireydeki bir parametrenin mutasyona uğrama olasılığını belirleyen eşik değeridir.

Algoritmalarda her bir bireye karşılık bir maliyet değeri bulunmaktadır. Bireylerin maliyet değerleri kullanıcı tarafından belirlenen maliyet fonksiyonuna göre

hesaplanır. Eniyileme algoritmaları genellikle azaltma (minimizasyon) işlemi için kullanıldığından dolayı literatürde bu fonksiyonlara maliyet fonksiyonu denilmektedir. Eğer algoritma artırma (maksimizasyon) için kullanılırsa bu tür bir fonksiyona amaç fonksiyonu adı verilmektedir. Maliyet ve amaç fonksiyonları aslında aynı kavramlardır. Burada tek fark, algoritmanın minimizasyon veya maksimizasyon işlemi yapmasıdır. Bu fonksiyonlardan bahsedilirken genellikle maliyet fonksiyonu olarak bahsedilir, benzer şeylerin amaç fonksiyonu için de geçerli olduğu unutulmamalıdır.

Bir algoritmada maliyet fonksiyonun belirlenmesi oldukça önemlidir ve dikkat gerektirmektedir. Hatalı veya eksik tanımlanan bir maliyet fonksiyonu algoritmanın yakınsamasını engelleyecektir. Bazı durumlarda, kullanılan eniyileme algoritmasının çok amaçlı eniyileme yapması da istenilebilir. Burada birden fazla amacın etkisini tek bir maliyet fonksiyonu altında birleştirmek gerekmektedir. Bu nedenle, farklı hedeflerin ortak maliyet fonksiyonunu nasıl etkileyeceğini dikkatli kararlaştırmak gerekmektedir. Burada, ağırlıklandırma katsayılarından faydalanılır. Örneğin; çok amaçlı bir eniyileme işlemi için seçilen algoritmadaki maliyet fonksiyonu (f) aşağıdaki gibi tanımlanabilir:

! = #$|& − &(| + #*|+ − +(| (2.1) Burada, xd ve yd hedeflerin sayısal değerleridir. x ve y ise, eldeki bireyin hesaplanan performans değerlerini göstermektedir. Hesaplanan değerler ile ulaşılması istenilen değerler arasındaki farkı azaltma işlemi bir minimizasyon işlemidir. Ancak, birden fazla hedef olduğu için bunların maliyet fonksiyonlarına olan etkilerini dengelemek gerekmektedir. Bunun için w1 ve w2 gibi ağırlıklandırma katsayıları kullanılmaktadır.

Eğer bu ağırlıklandırma katsayıları kullanılmazsa, algoritma istemsizce iki hedeften kolay olanına yönelebilir ve sadece onu iyileştirmeye çalışabilir. Bir başka durum ise, ulaşılması istenilen hedeflerin sayısal değerlerden biri diğerinden görece çok büyük olabilir. Bu durumda da bir hedef için hesaplanan fark değeri küçük ise maliyet fonksiyonuna olan etkisi az olacaktır ve algoritma sayısal olarak küçük fark değerine sahip hedefi iyileştirmek yerine sadece sayısal olarak büyük fark değerine sahip hedefi iyileştirmeyi seçecektir. Bu durum algoritmanın çok amaçlı bir eniyileme yapmasını engelleyecektir. Bu nedenle maliyet fonksiyonunun ve ağırlıklarının dikkatli belirlenmesi algoritmanın yakınsaması için oldukça önemlidir.

Algoritmaya hedef olarak çok zor değer koymak algoritmanın asla iyi bir sonuca ulaşamamasına da neden olabilir. Çünkü eniyileme algoritmaları en iyi çözümün bilinmediği tasarım problemlerinde kullanılırlar. Maliyet fonksiyonu ile belirlenen hedef belki de teorik olarak gerçekleşmesi mümkün olmayan bir hedeftir. Bu nedenle, algoritmaya ulaşılması mümkün olunmayan hedefler tanımlanmamalıdır. Aksi halde, algoritma hedeflerden sadece birini iyileştirmeyi seçebilir.

Bu noktada şöyle bir yöntem izlenebilir: yeteri kadar iyi olan ve ulaşılmasının kolay olacağı tahmin edilebilen bir hedef için maliyet fonksiyonu belirlenir ve algoritmanın çalışması takip edilir. Eğer algoritma istenilen hedefe ulaşabiliyorsa, bir sonraki adım olarak maliyet fonksiyonu değiştirilir ve algoritmaya daha zor bir hedef gösterilir, yani algoritmanın daha iyi bir sonuç bulması istenebilir. Burada algoritmanın nasıl çalıştığının da takip edilmesi önemlidir. Bu sebeple algoritmanın her iterasyona kadar bulduğu en iyi bireye ait maliyet fonksiyonu değerinin kaydedilmesi gerekir. Örneğin; minimizasyon işlemi yapılıyorsa maliyet fonksiyonu değerinin iterasyon sayısı arttıkça azalması beklenir. İlk iterasyonlarda maliyet fonksiyonunun değerinin azalma hızı yüksek olabilir ancak iterasyon sayısı arttıkça bu azalma hızının düşmesi beklenir. Aksi halde, sürekli hızlı bir şekilde azalan maliyet fonksiyonu değeri algoritmanın yerel optimuma gitmekte olduğunu gösterir. Ayrıca, eğer bir algoritmada uzun iterasyonlar boyunca maliyet fonksiyonu değeri sabit kalmışsa, bu durum algoritmanın yerel optimumda takılı kaldığını gösterir. Bu durumda çaprazlama veya seçim mekanizmasının veya maliyet fonksiyonunun değiştirilmesi gerekmektedir. Eğer bir algoritmanın maliyet fonksiyonu değeri uzun bir süre sabit kalmış ve sonrasında tekrar azalmaya başlamışsa bu algoritmanın yerel optimumdan kurtulabilme becerisinin olduğu anlaşılır ve bu iyi bir durumun göstergesidir.