Как стать автором
Обновить

Комментарии 16

Всегда удивляло, как эти вещи работают. Вроде-бы притянутый за уши концепт, но он работает. И при этом более-менее стабильно.

Сама идея таких алгоритмов мне кажется удивительной. Буквально в пару десятков строчек кода можно сделать что-то, что будет выглядеть как живое (формально) и будет обладать каким-никаким простейшим разумом (коллективным). И при этом будет неплохо справляться с поставленной задачей.

Так-то некоторые может и знают как выглядит Химмельблау, но было бы лучше добавить в визуализацию рельеф целевой функции. А на счет выглядит как живое из простого кода это да, это бывает действительно потрясно
image

Да, действительно. На будущее учту. Постараюсь больше картинок добавлять, чтобы было более наглядно видно, как работают алгоритмы.
отличная статья, мне понравилось…
спасибо!
Для наглядности использовать функцию от двух переменных можно (и нужно) — графики рельефа можно наглядно показать. Но в реальности приходится иметь дело с многоэкстремальными функциями от десятка переменных (а может быть и тысячи переменных). Поэтому раз уж мы стали сравнивать два метода, то нужно показать время поиска минимума (пусть и не глобального) для каких-то реально сложных функций. К сожалению сходу не могу найти (везде x,y). Я изучал несколько методов поиска более десяти лет назад и тогда взял функцию вида
for I := 0 to 17-3 do begin
  result:=result+sin(x[i]*i+x[i+1]+2*x[i+2])*sqr(x[i]);
end; 

(в этом случае каждый x[i] последовательно применяется с разными множителями).

Более сложный вариант:
for I := 0 to 17-3 do begin
   result:=result+sin(Round(x[i]*i)+x[i+1]+2*x[i+2])*sqr(x[i]);
 end;

lit999.narod.ru/soft/ga/index.html
В моих экспериментах, чем сложнее функция, тем больше ощущается выигрыш от использования генетических алгоритмов (речь идет об ускорении на несколько порядков).
Есть теорема, доказанная Д. Вольпертом и У. Макриди в 1997 году, которая гласит, что все алгоритмы оптимизации работают одинаково хорошо при усреднении по всем возможным задачам. А вот если говорить о конкретных функциях, то тут разные алгоритмы могут иметь разное качество сходимости. Поэтому нет смысла говорить, что один или другой алгоритм работает лучше / хуже без указания на то, о каких функциях идет речь.

А потом была их 2я статья где они подтвердили простую идею. Метаалгоритм управления множеством метаалгоритмов создает узкоспециализированный алгоритм под каждую задачу.

Ну тут цимес в том, что мы ищем не по всем возможным задачам (там большинство функций бессмысленные всюду разрывные), а лишь по некоторому подмножеству "разумных" задач (с +/- аналитически выглящящими функциями)

А вот на рузмных задачах эвристики уже имеют смысл

спасибо!)

А есть информация, на которой итерации каждый алгоритм нашел ближайшее к оптимальному решению?


Или график отклонения от экстремума по времени.


Понятно, что в связи с особенностями генетического алгоритма все точки никогда не соберутся в экстремуме.


Но нам нужны не все точки, а только лучшая из них

Даниил, а что вы думаете про применение алгоритма роя для задачи рассмотренной в этой публикации: https://habr.com/ru/post/664766/

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории