9 Kasım 2023 Perşembe

MATLAB ORTAMINDA PARÇACIK SÜRÜ OPTİMİZASYONU ÖRNEĞİ

 


1. Aşama: Başlangıç popülasyonunun oluşturulması

Yukarıda oluşan popülasyonda ssize satır sayısını, d ise sütun sayısını ifade eder.

2. Aşama: Başlangıç popülasyonlarının amaç (uygunluk) değerlerinin hesaplanması


3. Aşama: Parçacık ve sürü en iyi değerlerinin iterasyon boyunca güncellenmesi


Dikkat edilirse sürü içerisinde en düşük uygunluk değerine sahip çözüm (PSO literatüründe parçacık) find komutu bulunmuştur. Dolayısıyla en düşük değerine sahip çözüm (sürüde en iyi değere sahip parçacık) 4. çözümdür.

En iyi değere sahip parçacık, sürüdeki en iyi konuma sahiptir. (İlk iterasyon sonucudur.)



4. Aşama: Hız güncellemesi

Formüle ilk hızın katsayısı olacak şekilde w:eylemsizlik katsayısı da eşlik edebilir. c1 katsayısı bilişsel katsayı, c2 katsayısı ise sosyal katsayı olarak adlandırılır. Formülden çıkarılması gereken sonuç şudur:

Parçacık, hız güncellemesi yaparken önce ilk hızını korur, sonra kendisinin en iyi konumu ile arasındaki mesafeyi ardından da sürüdeki en iyi konum ile arasındaki mesafeyi kapatmaya çalışılır. Bu şekilde hızını artırmayı hedefler.

Kodlamada hız güncellemesi for döngüsü ile gerçekleştirilmiş ve her parçacığın hızı aşağıda verildiği gibi güncellenmiştir.


En düşük uygunluk değerine sahip parçacık, 4. parçacıktır. Ayrıca dikkat edilirse 4. parçacığın ilk iterasyondaki hız güncellemesi sıfır(0) şeklinde gerçekleşmiştir. Ancak diğer parçacıklardan bazılarının hızı artmışken bazılarının ise azalmıştır. Bu durumu şu şekilde açıklayabiliriz:

Başlangıç popülasyonunda hızlar zeros komutu ile sıfırdan başlatılmıştır. Dolayısıyla tüm parçacıkların ilk hızı sıfır ve en iyi konumları da mevcut konumlarıdır, hız değişiminin sebebi uygunluk değerlerinin minimize olmamasıdır. Minimize olmayan bir uygunluk değerinin (en iyi değere sahip olmayan parçacık) hız değişimine etki “c2 katsayısına sahip bileşen”den gelir. Çünkü uygunluk değeri minimal olmayan bu parçacıklardan hiç birisi sürü içerisinde en iyi konuma sahip değildir.

Yukarıda görülen hız güncelleme matrisinde, alt ve üst sınırların dışına taşan değerler görülmektedir. Arama sahasının hıza bağlı genişlemesi, global aramanın sağlanmasının rassal gerçekleşmesine neden olur, bu da algoritma mantığı ile çelişen bir durumdur. Bu nedenle, hız değerlerinin belirli bir aralıkta kalması sağlanmalıdır. Bu aralık da her satır ve sütunda; alt ve üst sınırlarına bağlı olarak örneğimizde -10 ile +10 arasında olmuştur.


Yeni hız güncelleme matrisi şu şekildedir: Görüldüğü gibi hız aralığını aşan değerler, +10 ve -10 değerlerinde sabitlenmiştir.



5. Aşama: Pozisyon güncellemesi yapılırken parçacığın sürü içerisindeki mevcut konumuna hız güncellemesi sonucu oluşan hız değeri ile birim zaman çarpımı eklenir, birim zaman değerce 1 olarak alındığı için; yeni konum, mevcut konuma yeni hızın eklenmesi ile bulunur.

İlk Konum Değerleri:
Son Hız Güncellemesi:
Güncelleme Sonrası Oluşan Yeni Konum = İlk Konum + Son Hız:

Hız güncellemesinde olduğu gibi iterasyon boyunca pozisyon güncellemesinde alt ve üst sınır değerleri aşılabilir, bu durumun da önüne geçilmelidir:

6. Aşama: Her parçacığın her iterasyon sonunda sürüdeki en iyi değer ve en iyi konumunun belirlenmesi sağlanmalıdır. Bunun için sürüdeki ilk değerler ile iterasyon sonunda elde edilen son değerler karşılaştırılır; minimizasyonun sağlandığı değer hangi parçacığa ait ise o parçacık sürüdeki en iyi konumuna ulaşır.

7. Aşama: Her parçacık sürüdeki en iyi konuma sahip olabilmek için çaba göstermektedir, ancak bu mücadelenin sonunda bir parçacık galip gelir ve sürüdeki en iyi konumuna ulaşır. Bu aşamada sürünün en iyisini bulmalıyız.

Her iterasyon sonunda en düşük uygunluk değerine sahip parçacık sürünün en iyi değerine sahip olur ve sürüdeki en iyi konuma ulaşır.


Kodlama sonucunda çıktı olarak sürüdeki en iyi konum ve sürüdeki en iyi değer alınır ve 50. iterasyon sonunda elde edilen sonuçlar şu şekilde gerçekleşir:




İterasyon boyunca uygunluk değerlerinde yaşanan iyileşmeleri ve ilerlemeleri her iterasyon sonunda gözlemleyebilmek için de amacit fonksiyonu kullanılabilir.




Görüldüğü gibi sürüdeki en iyi konuma sahip parçacığın uygunluk değeri ilk iterasyon başından yani 163,2169 değerinden, 50. iterasyon sonuna yani 1,9034’e kadar minimize edilmiştir.

Faydalı olması dileğiyle…

LinkedIn: www.linkedin.com/in/onurbagdat








Hiç yorum yok:

Yorum Gönder