Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


4.8.4. Методы кодирования

В классическом генетическом алгоритме применяется двоичное кодирование хромосом. Оно основано на известном способе записи десятичных чисел в двоичной системе, где каждый бит двоичного кода соответствует очередной степени цифры 2. Например, двоичная последовательность  представляет собой код числа 19, поскольку . Такой способ кодирования применялся в примерах 4.1 и 4.5. Для кодирования действительных чисел  реализуется отображение (4.5) так, как это делалось в примерах 4.2 и 4.6.

В генетических алгоритмах можно, например, использовать код Грея, который характеризуется тем, что двоичные последовательности, соответствующие двум последовательным целым числам, отличаются только одним битом. Такой способ кодирования хромосом может оказаться оправданным при использовании операции мутации [8].

Логарифмическое кодирование (logarithmic coding) применяется в генетических алгоритмах для уменьшения длины хромосом. Оно используется, главным образом, в задачах многомерной оптимизации с большими пространствами поиска решений.

При логарифмическом кодировании первый бит () кодовой последовательности - это бит знака показательной функции, второй бит () - бит знака степени этой функции, а остальные биты () представляют значение самой степени:

,

где  означает десятичное значение числа, закодированного в виде двоичной последовательности . Например,

представляет собой кодовую последовательность числа

,

а

представляет собой кодовую последовательность числа

.

Заметим, что таким образом с помощью пяти битов можно закодировать числа из интервала . Это значительно больший интервал, чем  из примера 4.5. Логарифмическое кодирование было реализовано в программе FlexTool [48] в качестве дополнительной опции для задач повышенной сложности.

Еще одна модификация классического генетического алгоритма основана на кодировании действительными, а не двоичными числами. Это означает, что гены хромосом принимают действительные значения (аллели являются действительными числами). Такой способ кодирования применяется, в частности, в программе Evolver [49].

 



<< ПредыдущаяОглавлениеСледующая >>