Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм оптимизации бактериального поиска пищи (Bacterial Foraging Optimization — BFO)"

 

Опубликована статья Популяционные алгоритмы оптимизации: Алгоритм оптимизации бактериального поиска пищи (Bacterial Foraging Optimization — BFO):

Основа стратегии поиска пищи бактерией E.coli (кишечная палочка) вдохновила ученых на создание алгоритма оптимизации BFO. Алгоритм содержит оригинальные идеи и перспективные подходы к оптимизации и достоин дальнейшего изучения.

Алгоритм оптимизации бактериального поиска пищи (BFO) — это увлекательная техника оптимизации, которую можно использовать для поиска приблизительных решений чрезвычайно сложных или невозможных числовых задач максимизации или минимизации функций. Алгоритм получил широкое признание в качестве алгоритма глобальной оптимизации, представляющего текущий интерес для распределенной оптимизации и управления. BFO вдохновлен социальным поведением Escherichia coli при поиске пищи. BFO уже привлек внимание исследователей своей эффективностью в решении реальных задач оптимизации, возникающих в нескольких областях применения. Биология, лежащая в основе стратегии поиска пищи E.coli эмулируется оригинальным образом и используется как простой алгоритм оптимизации.

Бактерии, такие как кишечная палочка или сальмонелла (лат. Salmonella), являются одними из самых успешных организмов на планете. Эти подвижные бактерии имеют полужесткие придатки, называемые жгутиками, с помощью которых они продвигают себя при помощи вращательных движений. Когда все жгутики вращаются против часовой стрелки, создается эффект пропеллера, и бактерия будет двигаться в более или менее прямолинейном направлении. При этом бактерия совершает движение, которое называют плавание (swims), все жгутики вращаются в одном и том же направлении.



parent_clone

Рисунок 1. Репликация: деление на оригинальную (сохранение вектора движения) и клонированную (изменение вектора движения ) бактерии.
Кувырок - изменение вектора движения бактерии.

Автор: Andrey Dik

 

Было бы хорошо проверить эти все алгоритмы оптимизации на более реальных данных, где параметров пять и более, количество комбинаций большое.

 
Aliaksandr Hryshyn #:

Было бы хорошо проверить эти все алгоритмы оптимизации на более реальных данных, где параметров пять и более, количество комбинаций большое.

в тестах используется три вида тестовых функций (гладкая, гладкая с "игольным" экстремумом, и дискретная), каждая из этих функций тестируется с 10, 50 и 1000 параметров (всего 9 тестов). кроме того, тестирование проводится с 0-м! шагом.

шаг 0 означает, что точность до 16-го знака double, это означает, что шаг 0,0000000000000001 для 1000 параметров, итак, посчитайте сколько получается комбинаций.

ок, я посчитаю. если очень грубо, то это 10e10^1000, то есть, что то около 10e16000. это больше, чем молекул в видимой Вселенной.

 

Это количество параметров:

input int    Test1FuncRuns_P    = 5;     //1) Number of functions in the test
input int    Test2FuncRuns_P    = 25;    //2) Number of functions in the test
input int    Test3FuncRuns_P    = 500;   //3) Number of functions in the test

Это размер популяции:

input int    BatsNumber_P       = 50;    //Number of bats

Количество эпох расчётное:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Я правильно всё понял по коду?

 
Aliaksandr Hryshyn #:

1. Это количество параметров:

2. Это размер популяции:

3. Количество эпох расчётное:

Я правильно всё понял по коду?

1. Нет. тестовые функции двумерные. тоесть, например:

input int    Test1FuncRuns_P    = 5;     //1) Number of functions in the test
означает по русски 5 тестовых функций, значит умножаем на 2 - 10 оптимизируемых параметров

25 - 50 оптимизируемых параметров

500 - 1000 оптимизируемых параметров

2. Да.

3. Да, верно, расчетное количество эпох сделано что бы общее количество запусков FF было одинаковое и не зависело от выбора размера популяции в алгоритмах. то есть, что бы тестирование алгоритмов было справедливым при разных параметрах размеров популяций в разных алгоритмах.

 

Понятно, спасибо.

Все эти алгоритмы, из серии статей, парралеляться, не смотрел толком остальные? Думаю, мне пригодится это, полезно, только сама оптимизируемая функция сложнее, имеет динамическое количество параметров, как вещественных, так и целых, и с разными диапазонами, надо потом решать задачу

 
Aliaksandr Hryshyn #:

Понятно, спасибо.

Все эти алгоритмы, из серии статей, парралеляться, не смотрел толком остальные? Думаю, мне пригодится это, полезно, только сама оптимизируемая функция сложнее, имеет динамическое количество параметров, как вещественных, так и целых, и с разными диапазонами, надо потом решать задачу


да, конечно.
Причина обращения: