You are on page 1of 2

Simbiyotik Organizmalar Algoritması Ders tekrar Notları (04.12.

2023)

Symbiotic Organisms Search: A new metaheuristic optimization algorithm


2014 yılında Prayogo tarafından bulunmuş bir algoritma. Matlab File Exchange kısmında SOS.m file
dosyası indirilebilir. Emre hocanın bu algoritmayı güçlendirerek yayınladığı bir makalesi var.

Bu algoritmanın en önemli özelliklerinden bir tanesi hiçbir parametre değiştirmiyoruz ayar


yapmıyoruz, tek parametre iterasyon sayısı.

Mutual faz da formülde yer alan BF1, BF2 var, bunlar rastgle olarak ya 1 ya da 2 seçiliyor. 1 kısmi fayda
olarak geçiyor, 2 ful fayda olarak geçiyor.

Eskiden karşılaştırmalar iterasyon sayısına göre yapılırken, yeni algoritmalar içerisinde bir iterasyonun
içinde çok defa iterasyonlar olabildiğinden, artık karşılaştırmalarda amaç fonksiyonunun kaç kere
çağrıldığı kullanılıyor.

Haftaya, SALP Swarm algoritması (2018)


Sonraki Hafta Aritmetik Optimizasyon (2022)
Sonraki hafta Yılan Arama algoritması (2023) anlatılacak.
Her bireye organizma denilir.

• _Initialization
• REPEAT
• Mutualism phase
• Commensalism phase Her organizma bu 3 fazda işlem görür.
• Parasitism phase
• UNTIL (termination criterion is met)

Öncelikle ekosistem oluşturulur.


İterasyon sayısı belirlenir.
Diyelim ki i=0 dan 9 a kadar. Yani X1, X2, X3, …X9 organizmaları var. Ör; 4 boyutlu X
organizması X1=[ 1.2 4 6.4 8 ] şeklinde düşünülebilir.

Bu ekosistemden rastgele Xi organizması ve buna eşit olmayacak şekilde Xj organizması


seçiliyor. Select one organism randomly, Xj, where Xj ≠ Xi

Seçilen bu Xi, önce mutual faz, sonra commensalism faz, sonrada parazit fazda işlem
görecek. Sonra, i değeri 1 artırılarak tekrar bu işlemler ekosistemdeki bütün X
organizmaları için yapılacak. Bütün Xler için bu 3 fazda tamamlanınca ilk iterasyon bitmiş
sayılacak. İkinci iterasyon başlayacak.

Melih AKTAŞ
Simbiyotik Organizmalar Algoritması Ders tekrar Notları (04.12.2023)

Mutual Fazda

Select one organism randomly, Xj, where Xj ≠ Xi


Mutual vector belirleniyor.
• Mutual_Vector = (Xi + Xj) / 2 yani Xi=X1 olsun Xj=X5 olsun. X1’in içindeki değerler ile X5’in
içindeki değerlerin ortalaması alınıyor.
• BF1 ve BF2 rastgele 1 veya 2 seçiliyor.
• Yeni X1new ve X5new değeri belirleniyor.
• Xi new = Xi + rand(0,1) * (Xbest – Mutual_Vector * BF1)
• Xj new = Xj + rand(0,1) * (Xbest – Mutual_Vector * BF2)
• Yeni X1new eğer X1 den iyiyse, X1in yerini artık Xnew alıyor, Kötüyse X1 olarak kalıyor.
Greedy yaklaşımla devam ediliyor. Aynı şey Xj içinde geçerli.

Commensalism Fazı

Bu fazda ortak fayda olmadığı için tek taraflı fayda olduğu için sadece Xj den bağımsız Xi
tekrar hesaplanıyor.
Select one organism randomly, Xj, where Xj ≠ Xi
Modify organism Xi with the assist of organism Xj
Xi new = Xi + rand(-1,1) * (Xbest – Xj)

Parazit Fazı

Bu fazda X1=[1 2 3 4] 4 boyutlu bir organizma olsun. X1 in rastgele boyutundaki değerleri


rastgele olarak değiştiriyor. Hepsini de değiştirebilir sadece 1’inide olay tamamen rastgele.
Buna parazit vektör deniliyor. X1parazit vektörü X1 den daha iyiyse kabul ediliyor, değilse X1
aynı kalıyor.

Ekosistemdeki bütün organizmalar için bu 3 faz gerçekleşti ise 2. İterasyona başlıyor.

Melih AKTAŞ

You might also like