задание целевой функции
Мутация. Попутно с копированием каждого бита родителя в бит
ребенка генерируется второе случайное число. Если это случайное число
оказывается меньше или равно вероятности мутации, то данный бит инвертируется.
То есть, бит, бывший О у родителя, становится 1 у ребенка, и наоборот. Мутация
помогает сохранить разнообразие в популяции. Вероятность мутации обычно
должна быть невелика (= 0,001), иначе алгоритм вырождается в случайный поиск.
Однако по мере приближения алгоритма к оптимальному варианту, мутация
приобретает все большее значение, ибо кроссовер не может сохранить генетическое
разнообразие в столь локализованном объеме (п + 1)-мерного пространства.
Теперь вы можете вернуться к
заданию целевой функции и выполнить процесс для следующего поколения. Попутно
вы должны отслеживать наибольшую текущую целевую функцию и соответствующий ей
ген. Повторяйте этот процесс до тех пор, пока не получите X неулучшившихся
поколений, то есть X поколений, для которых наилучшее значение целевой функции
не было превзойдено. При выполнении этого условия остановитесь и используйте
ген, соответствующий наилучшему значению целевой функции, в качестве искомого
множества решений.
Для примера рассмотрим реализацию
генетического алгоритма с целевой функцией вида:
Y= 1500-(X- 15)2
Для простоты в этом примере у нас
будет только одна переменная, то есть каждый член популяции будет нести двоичный
код только для этой одной переменной.
Присмотревшись к целевой функции,
легко заметить, что оптимальная величина X равна 15, что приводит к значению Y,
равному 1500. Какими бы редкими ни были случаи, когда доведется узнать
оптимальные значения переменных, в этом простом примере нам будет полезно
знать оптимум, чтобы можно было проследить, как к нему нас приведет алгоритм.
Пусть у нас есть начальная
популяция из трех членов, каждый со значениями переменной, закодированными
пятибитовыми строчками, которые вначале случайны:
Теперь путем случайного отбора по
приспособленности определяются Родители 1 и 3 первого поколения для Индивидуума
1 второго поколения (заметьте, что Родитель 2 с приспособленностью 0 погиб и
не передаст далее своих генетических свойств). Предположим, что случайный
кроссовер происходит после четвертого бита. Поэтому, наследуя первые четыре
бита от Индивидуума 1 и последний бит от Индивидуума 3 первого поколения,
Индивидуум 1 во втором поколении принимает вид 01011.
Статья размещена в рубрике: Новый подход к управлению капиталом
|