Ответ 1
Проще говоря, niching - это класс методов, которые пытаются сходиться к нескольким решениям за один прогон.
Niching - идея сегментирования популяции GA на непересекающиеся множества, предназначенные для того, чтобы у вас был хотя бы один член в каждом регионе функции пригодности, который является "интересным"; обычно под этим мы подразумеваем, что вы покрываете несколько локальных оптимумов.
Представьте себе такую функцию, как f(x) = sin(x^2)
.
Нормальная GA в конечном счете сходится к одному из двух глобальных минимумов. Какой из них зависит от начальной популяции и случайного генетического дрейфа, происходящего на протяжении всего цикла, но в конечном итоге вы получите n
копии одного человека в той или иной долине. Например, если вы посмотрели на такую GA, когда она почти сходилась, вы можете увидеть что-то вроде
Niching - это общий класс методов, предназначенных для достижения примерно половины населения, сходящегося в каждом минимуме (или, возможно, даже включая несколько членов в минимальном минимальном значении при x=0
).
Как я только что сказал, niching на самом деле не алгоритм, а общий класс алгоритмов. Одним из таких методов является совместное использование Goldberg. В этом методе мы определяем радиус ниши sigma
. Любые два человека ближе друг к другу, чем этот sigma
, считаются находящимися в одной и той же нише и, следовательно, должны делиться своими значениями пригодности (думайте об этом как о функции, которая уменьшает пригодность каждого члена ниши, чем более густонаселенная ниша является). Затем вы используете GA для общих значений пригодности вместо сырых.
Идея здесь заключается в том, что вы препятствуете конвергенции в одном регионе функции фитнеса, притворяясь, что там есть ограниченные ресурсы. Чем больше людей пытаются двигаться, тем хуже все они. В результате, когда GA сходится к одному локальному оптимуму где-то, пригодность этого оптимума уменьшается из-за усиления конкуренции внутри ниши. В конце концов, еще один регион фитнес-ландшафта становится более привлекательным, и люди мигрируют туда. Идея заключается в достижении устойчивого состояния - фиксированной точки в динамике, - где поддерживается соответствующее представление каждой ниши.
Совместное использование затруднено из-за необходимости вручную устанавливать радиус ниши, и алгоритм довольно чувствителен к этому выбору. Другая альтернатива - скученность. В частности, вы можете найти "Детерминированную переполненность", которая была популярным методом в течение определенного периода времени. В методах, основанных на толпе, вместо того, чтобы иметь дело с явным радиусом, мы работаем, ограничивая набор индивидуумов, которые новое потомство может заменить на некоторый набор подобных решений, например, отпрыску может быть разрешено заменить только одного из его родителей. Эффект заключается в том, чтобы попытаться предотвратить замену уникального человека тем, что очень похоже на десяток других в популяции и, таким образом, сохранить разнообразие таким образом.