Генетический алгоритм в изложении Холланда, который принято считать классическим, выглядит следующим образом:
НАЧАЛО /* генетический алгоритм */
Создать начальную популяцию
Оценить приспособленность каждого индивида
останов := FALSE
ПОКА НЕ останов ВЫПОЛНЯТЬ
НАЧАЛО /* создать популяцию нового поколения */
ПОВТОРИТЬ (размер_популяции/2) РАЗ
НАЧАЛО /* цикл воспроизводства */
Выбрать двух индивидов с высокой приспособленностью из предыдущего поколения для скрещивания
Скрестить выбранных индивидов и получить двух потомков
Оценить приспособленности потомков
Поместить потомков в новое поколение
КОНЕЦ
ЕСЛИ все индивиды одинаковы или пройдено заданное количество поколений ТО останов := TRUE
КОНЕЦ
КОНЕЦ
Этот ГА был представлен Д. Холландом в одной из первых работ, и создавался исключительно с теоретической целью. Применяемые на практике алгоритмы, как правило, сильно отличаются от приведенного выше.
Принцип действия алгоритма прост: выживает сильнейший, но реальный механизм его работы весьма сложен. Вполне понятно, что за счет замены «плохих» решений «хорошими», и составления новых решений, мы будет получать все более и более «хорошее» множество решений. Однако совсем не очевидно как это происходит, и можем ли мы гарантировать, что, в конце концов, доберемся достаточно близко к самому лучшему решению?







