"Popülasyon optimizasyon algoritmaları: Bakteri yiyecek arama optimizasyonu (Bacterial Foraging Optimization, BFO)" makalesi için tartışma

 

Yeni makaleye göz atın: Popülasyon optimizasyon algoritmaları: Bakteri yiyecek arama optimizasyonu (Bacterial Foraging Optimization, BFO).

E. coli bakterisinin yiyecek arama stratejisi, bilim insanlarına BFO optimizasyon algoritmasını yaratmaları için ilham vermiştir. Algoritma, optimizasyona yönelik orijinal fikirler ve umut verici yaklaşımlar içermekte olup daha fazla çalışmaya değerdir.

Bakteri yiyecek arama optimizasyonu (Bacterial Foraging Optimization, BFO) algoritması, son derece karmaşık veya imkansız sayısal fonksiyon maksimizasyon/minimizasyon problemlerine yaklaşık çözümler bulmak için kullanılabilen büyüleyici bir optimizasyon tekniğidir. Algoritma, dağıtılmış optimizasyon ve kontrol için global bir optimizasyon algoritması olarak yaygın bir şekilde tanınmaktadır. BFO, Escherichia coli'nin sosyal yiyecek arama davranışından esinlenmiştir. BFO, çeşitli uygulama alanlarında ortaya çıkan gerçek dünya optimizasyon problemlerini çözmedeki etkinliği nedeniyle araştırmacıların dikkatini çekmiştir. E. coli'nin yiyecek arama stratejisinin arkasındaki biyoloji özgün bir şekilde taklit edilmiş ve basit bir optimizasyon algoritması olarak kullanılmıştır. 

E. coli veya salmonella gibi bakteriler gezegendeki en başarılı organizmalar arasındadır. Bu çevik bakteriler, flagella adı verilen yarı sert uzantılara sahiptir ve bu uzantılarla kendilerini bir kıvrılma hareketiyle ilerletirler. Tüm flagellalar saat yönünün tersine döndüğünde, bir pervane etkisi yaratılır ve bakteri hemen hemen doğrusal bir yönde hareket eder. Bu durumda bakteri yüzme adı verilen bir hareket gerçekleştirir. Tüm flagellalar aynı yönde döner.

parent_clone

Şekil 1. Replikasyon: orijinal (hareket vektörünün korunması) ve klonlanmış (hareket vektöründe değişiklik) bakterilere bölünme.
Takla - bakterinin hareket vektöründe bir değişiklik.

Yazar: Andrey Dik

 

Tüm bu optimizasyon algoritmalarının, parametrelerin beş veya daha fazla olduğu, kombinasyon sayısının fazla olduğu daha gerçek veriler üzerinde test edilmesi iyi olacaktır.

 
Aliaksandr Hryshyn #:

Tüm bu optimizasyon algoritmalarının, parametrelerin beş veya daha fazla olduğu, kombinasyon sayısının fazla olduğu daha gerçek veriler üzerinde test edilmesi iyi olacaktır.

testlerde üç tip test fonksiyonu kullanılmıştır (smooth, smooth with "needle" extremum ve discrete), bu fonksiyonların her biri 10, 50 ve 1000 parametre ile test edilmiştir (toplam 9 test). ayrıca testler 0! adım ile yapılmıştır.

Adım 0, 16. basamağa kadar hassasiyetin iki katı olduğu anlamına gelir, 1000 parametre için adımın 0.0000000000000001 olduğu anlamına gelir, bu nedenle, kaç kombinasyon elde ettiğinizi sayın.

Tamam, hesaplayacağım. çok kabaca, 10e10^1000, yani yaklaşık 10e16000. bu da görünür evrendeki molekül sayısından daha fazla.

 

Parametre sayısıdır:

input int    Test1FuncRuns_P    = 5;     //1) Testteki fonksiyon sayısı
input int    Test2FuncRuns_P    = 25;    //2) Testteki fonksiyon sayısı
input int    Test3FuncRuns_P    = 500;   //3) Testteki fonksiyon sayısı

Bu popülasyon büyüklüğüdür:

input int    BatsNumber_P       = 50;    //Yarasa sayısı

Epok sayısı hesaplanır:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Koddan her şeyi doğru anladım mı?

 
Aliaksandr Hryshyn #:

1- Bu parametre sayısıdır:

2. Nüfusun büyüklüğüdür:

3. Epok sayısı tahmin edilir:

Koddan her şeyi doğru anladım mı?

1. Hayır. Test fonksiyonları iki boyutludur. yani, örneğin:

input int    Test1FuncRuns_P    = 5;     //1) Testteki fonksiyon sayısı
Rusça'da 5 test fonksiyonu anlamına gelir, bu nedenle 2 ile çarpın - 10 optimize edilmiş parametre

25 - 50 optimize edilmiş parametre

500 - 1000 optimize edilmiş parametre

2. Evet.

3. Evet, bu doğru, tahmini epok sayısı, toplam FF çalıştırma sayısının aynı olması ve algoritmalardaki popülasyon boyutu seçimine bağlı olmaması için yapılır. yani algoritmaların test edilmesi, farklı algoritmalardaki farklı popülasyon boyutu parametrelerinde adil olacaktır.

 

Tamam, teşekkürler.

Yazı dizisindeki tüm bu algoritmalar paralelleştirilebilir, diğerlerine bakmadınız mı? Sanırım bunu kullanabilirim, kullanışlı, sadece optimize edilecek fonksiyon daha karmaşık, hem gerçek hem de tamsayı olmak üzere dinamik sayıda parametreye sahip ve farklı aralıklarda, problemi daha sonra çözmeniz gerekiyor

 
Aliaksandr Hryshyn #:

Anlıyorum, teşekkür ederim.

Yazı dizisindeki tüm bu algoritmalar paralelleştirilebilir, diğerlerine bakmadınız mı? Sanırım bunu kullanabilirim, kullanışlı, sadece optimize edilen fonksiyon daha karmaşık, hem gerçek hem de tamsayı olmak üzere dinamik sayıda parametreye sahip ve farklı aralıklarda, problemi daha sonra çözmeniz gerekiyor.


Evet, tabii.
 
harika iş 👏
 
Lorentzos Roussos #:
harika iş 👏
teşekkür ederim!)