чтобы из-за шелухи вроде "хромосома", "кроссиговер" и проч. не созадвалось обманчивое впечатление об уникальности алгоритма.
А может быть, вы ошиблись, и алгоритм-то на самом деле уникален, и вы пытаетесь доказать несуществующую эквивалентность его другим алгоритмам? Вы не задумывались о таком варианте?
Тема заявлена как вопрос о том, что же в ГА принципиально нового. Стандартный научный подход в таких случаях - попытаться свести новое явление к чему-то ранее уже известному, отбрасывая все несущественные детали (в том числе нововведенную терминологию). Те места, где это не удастся сделать, скорее всего и будут средоточием "новизны".
Я не сказал, что он только к такому классу функций приложим. Я сказал, что на таком классе функций он даёт выигрыш по сравнению с Монте-Карло.
Кстати, а можно попросить все же привести парочку примеров реально востребованных на практике (не в физике) функций из того класса?
Наверное, ГА даёт выигрыш и шире: он схож не просто с Монте-Карло, а с Монте-Карло + покоординатным спуском.
Вот в том и проблема, что "наверное". Хотелось бы что-нибудь более конкретного, чтобы знать, где целесообразно его применять, а где нет.
Это мои собственные соображения. Но у меня сложилось впечатление, что ваше знакомство с ГА - чуть более чем поверхностное.
Я изложил выше, какое у меня представление. Уточню для вас специально еще раз - мое представление большей частью основывается на изложении, приведенном здесь:
1.2. Генетические алгоритмы. Если вы считаете, что там упущена какая-то принципиально важная мысль, прошу указать на нее.
Но в "Поле чудес" вы знаете, какую букву отгадали, а здесь нет!
А здесь мы имеем функцию адаптации. Конкретно в примере 1.10 она равна сумме совпадений символов в искомой и эталонной строке.
Не знаю, может, я не совсем ясно изложил мысль. Речь идет о применении ГА к задачам поиска максимумов/минимумов функций. Функция адаптации в таких задачах и есть та функция, максимум которой надо найти. Соответственно, в общем случае нет никакой возможности узнать заранее, что выбранное тем или иным образом значение одного из аргументов этой функции является оптимальным (в точке максимума будет именно таким). (Представьте, что вы не знаете, какую фразу нужно составить и не знаете, как конкретно вычисляется совпадение текущей фразы с заданной. У вас есть лишь информация о том, что чем ближе фраза к заданной, тем выше значение функции адаптации, плюс имеется возможность получать конкретные значения функции адаптации для любой фразы.)
Но в "Поле чудес" вы знаете, какую букву отгадали, а здесь нет!
Именно поэтому у каждого предка образуется случайно несколько потомков, с разными попытками "взять букву".
Если это было обращено ко мне, то это очевидно, а потому непонятно, зачем было сказано.
Еще раз повторюсь, я в курсе, какая аналогия между ГА и биологией, и на каком принципе ГА работает. Меня интересует другое - какой общий (не привязанный к генетике и теории эволюции) принцип позволяет ускорять перебор.
Ладно, давайте тогда более конкретно, раз мой вопрос не понятен.
Пусть есть задача максимизации некоторой функции
. Область определения функции дискретизиурется таким образом, чтобы оставить только точки, кодирующиеся с помощью некоторого кодирующего отображения
где
- некоторая универсальная константа. На множестве кодирующих бинарных последовательностей введем метрику
И рассмотрим два алгоритма - ГА и следующий:
шаг 0. Набрасываем в
случайным образом (например, равномерно)
точек
шаг 1. Вычисляем в соответствующих им исходных точках значения функции f
шаг 2. Отбираем
-штук точек с самыми большими значениями функции, остальные точки выбрасываем из рассмотрения
Шаг 3. В отобранных точках случайным образом выбираем
пар
, для каждой из которых:
Шаг 3.1 Случайным образом выбираем значение
.
Шаг 3.2 Каким-либо образом выбираем две новые точки
,
, удовлетворяюшие:
1)
2)
Шаг 4. Получившиеся
точек дополняем до
точками
, выбранными случайным образом, отталкиваясь от некоторых точек
и иcходя из условия
.
Шаг 5. Переходим к шагу 1 (с учетом проверки условия на останов).
Вопрос:
какой принципиальный момент отличает эти два алгоритма друг от друга, позволяющий ГА более эффективно (за меньшее в среднем число итераций) найти максимум?