Исследование эффективности работы генетического алгоритма оптимизации с альтернативным представлением решений
Автор: Панфилов Илья Александрович, Базанова Екатерина Петровна, Сопов Евгений Александрович
Журнал: Сибирский аэрокосмический журнал @vestnik-sibsau
Рубрика: Математика, механика, информатика
Статья в выпуске: 4 (50), 2013 года.
Бесплатный доступ
Описывается исследование различных вариантов представления решений в генетическом алгоритме. Помимо традиционных бинарного кодирования и кода Грея, используемых для представления вещественных переменных, в исследовании рассмотрены: гамма- и дельта-коды Элиаса, гамма-коды Левенштейна, коды Го-ломба, коды Райса и другие. Для апробации данных представлений использовался модифицированный генетический алгоритм с переменной длиной строк. Проводится статистическая значимость данных параметров для работы алгоритма. Приводятся результаты численных исследований на представительном множестве тестовых задач. Показана целесообразность использования некоторых альтернативных видов кодирования для отдельных задач.
Генетический алгоритм, бинарное кодирование, оптимизация
Короткий адрес: https://sciup.org/148177161
IDR: 148177161
Текст научной статьи Исследование эффективности работы генетического алгоритма оптимизации с альтернативным представлением решений
Огромное число работ посвящено исследованию генетических алгоритмов. Традиционно исследователи рассматривают влияние вероятности мутации, размера популяции, способов селекции и др., легко настраиваемые параметры алгоритма. Представление решений же, как правило, осуществляется кодированием в бинарную строку вещественных переменных с помощью традиционного бинарного кодирования или грей-кода. Целью данной работы было исследовать возможность применения в генетическом алгоритме альтернативных способов бинарного кодирования вещественных чисел.
При проектировании генетического алгоритма выбор способа представления решений является определяющим. В зависимости от решаемой задачи составляют хромосомы решений из вещественных чисел, целых чисел, специальные алфавиты, используют порядковое представление, представление в виде «деревьев» и др. Стандартный генетический алгоритм использует в качестве хромосомы бинарный вектор.
Представление хромосом определяется способом кодирования. Как правило, в генетическом алгоритме применяется двоичное представление хромосом. Оно основано на известном способе записи десятичных чисел в двоичной системе, где каждый бит двоичного кода соответствует очередной степени цифры 2. Например, двоичная последовательность [10011] представляет собой код числа 19, поскольку 1*24+0*23+0*22+1*21+1*21=19. Данный способ кодирования решений будем называть прямым бинарным кодом . Существует много способов бинарного кодирования решений, рассмотрим некоторые из них.
Код Грея – это бинарный код целого числа, такой, что для смежных целых чисел расстояние между их кодами в метрике Хемминга равно 1.
Стандартное рефлексивное грей-кодирование целого числа получается применением оператора исключающего ИЛИ, к стандартному бинарному кодированию целого числа и к тому же бинарному коду, смещенному на одну позицию вправо, последний бит отсекается.
Для многих практических задач код Грея оказывается более эффективным, чем бинарное кодирование [1]. Код Грея частично сохраняет структуру окрестностей пространства поиска в бинаризованном пространстве. В результате, грей-код не может образовать оптимумов больше, чем у исходной целевой функции. Более того, так как у текущей точки в коде Грея соседних точек больше, чем в дискретной целевой функции, то в пространстве поиска грей-кода число оптимумов обычно меньше. В противоположность, прямой бинарный код часто создает новые оп-тимумы, которых у исходной целевой функции не было [2].
Практически не встречается в научной литературе использование для генетического алгоритма бинарных кодов с переменной длиной. Значащие цифры начинаются со старшей ненулевой цифры, например, в числе 000001101 2 =1*20+0*21+1*22+1*23+0*24+0*…=13 это последние 4 цифры. Порядок числа определяется позицией старшей ненулевой цифры в записи числа. Как и при обычной записи в десятичной системе, он равен числу цифр в записи числа без предшествующих незначащих нулей. В данном примере порядок равен четырем. Методы этой группы являются трансформирующими и поточечными (т. е. могут применяться даже в том случае, когда длина блока с данными не задана).
Унарный код – это запись числа N , последовательность из N нулевых бит и одного единичного.
Гамма-коды Элиаса ( Elias γ-codes ). Данные коды формируются в зависимости от диапазона числа. Допустим, кодируется число n , тогда гамма-кодом Элиаса для числа n будет его обыкновенное бинарное представление без старшей единицы, дополненное слева унарным представлением числа (табл. 1).
Таблица 1
Гамма-коды Элиаса
Диапазон |
Гамма-коды Элиаса* |
Длина кода, бит |
1 |
1 |
1 |
2…3 |
01x |
3 |
4...7 |
001xx |
5 |
8…15 |
0001xxx |
7 |
16…31 |
00001xxxx |
9 |
32...63 |
000001xxxxx |
11 |
* Символами «х» обозначены биты мантиссы без старшей единицы.
Дельта-коды Элиаса (Elias δ-codes). Дельтакодами Элиаса называются гамма-коды, в которых унарная часть также закодирована гамма-кодами. То есть для получения дельта-кода нужно закодировать L (количество значащих битов в двоичном представлении числа n) с помощью гамма-кода Элиаса и дописать двоичное представление числа без старшей единицы (табл. 2).
Таблица 2 Дельта-коды Элиаса
Диапазон |
Дельта-коды Элиаса* |
Длина кода, бит |
1 |
1 |
1 |
2...3 |
010x |
4 |
4...7 |
011xx |
5 |
8…15 |
00100xxx |
8 |
16...31 |
00101xxxx |
9 |
32...63 |
00110xxxxx |
10 |
Единственное отличие между γ - и δ -кодами состоит в том, что в γ -кодах экспоненты записываются в унарном виде, а в δ -кодах к ним еще раз применяется γ -кодирование. Видно, что γ -коды первых 15 чисел короче δ -кодов, а γ -коды первых 31 числа не длиннее δ -кодов. То есть чем неравномернее распределение вероятностей, чем круче возрастает вероятность чисел при приближении их значения к нулю, тем выгоднее γ – коды по сравнению с δ -кодами [3].
Гамма-коды Левенштейна ( Levenstein γ-codes ). Данный код для числа n получается путем обращения последовательности битов в двоичной записи этого числа и добавления перед каждым битом, кроме последнего, флагового (flag bit) бита 0. Последним флаговым битом является бит 1, который совпадает с самым старшим битом в исходной двоичной записи числа n (табл. 3).
Таблица 3
Гамма-коды Левенштейна
n |
Гамма-коды Левенштейна |
1 |
1 |
5 |
01001 |
13 |
0100011 |
63 |
01010101011 |
129 |
010000000000001 |
Коды Голомба ( Golomb codes ). Код Голомба для n с заданным параметром m , дает соединение двух кодов: унарная запись числа q = n/m и кодированный остаток r от деления n/m :
Если m является степенью числа 2, то код остатка представляет собой двоичную запись числа r , размещённую в log 2 m битах;
Если m не является степенью 2, вычисляется число b = log 2 m .
Если r < 2 b - m , код остатка представляет собой двоичную запись числа r , размещённую в b –1 битах, иначе остаток r кодируется двоичной записью числа r < 2 b - m , размещённой в b битах (табл. 4).
Коды Райса ( Rice codes ). Код Райса для n с заданным параметром k дает соединение двух кодов: унарная запись числа q = n /2 k и кодированный остаток r от деления n /2 k , представляющий собой двоичную запись числа r , размещённую в k битах (табл. 5).
Таблица 4
Коды Голомба
n/m |
1 |
2 |
3 |
4 |
5 |
0 |
0 |
00 |
00 |
000 |
000 |
1 |
10 |
01 |
010 |
001 |
001 |
2 |
110 |
100 |
011 |
010 |
010 |
3 |
1110 |
101 |
100 |
011 |
0110 |
Таблица 5
Коды Райса
n/m |
1 |
2 |
3 |
4 |
5 |
0 |
0 |
000 |
0000 |
00000 |
000000 |
1 |
10 |
001 |
0001 |
00001 |
000001 |
2 |
110 |
010 |
0010 |
00010 |
000010 |
3 |
1110 |
011 |
0011 |
00011 |
000011 |
Стандартный генетический алгоритм работает с бинарными хромосомами с фиксированной длиной. В данной работе использовался модифицированный генетический алгоритм, в котором были реализованы операторы процентного скрещивания для хромосом с переменной длиной [4].
Исследование эффективности генетического алгоритма проводилось на задаче минимизации следующих тестовых функций: функция Розенброка, функция Шекеля, функция Растригина, функция Катнико-ва, функция Гриванка, функция Де Йонга. Количество независимых переменных изменялось от 2 до 4. Длина каждой переменной для генетического алгоритма с прямым бинарным и грей-кодированием была взята равной 10. Для генетического алгоритма с кодированием гамма- и дельта-кодами Элиасса, гамма-кодами Левенштейна, кодами Голомба и Райса длина каждой переменной из меняется от 1 до 15. Статистика набралась по 100 запускам алгоритма. Размер популяции – 50 индивидов. Число поколений – 50. Для оценки эффективности алгоритмов использовалась надежность. Надежность – процент успешных запусков (решение найдено) алгоритма от общего числа запусков. Результаты решения тестовых задач приведены в табл. 6.
Из табл. 6 видно, что наилучший результат показал алгоритм с кодированием решений с помощью кода Райса. Генетический алгоритм с прямым бинарным кодированием хорошо работает на простых задачах, когда допустимая область обладает удобными для оптимизации свойствами (большой размер, выпуклая и т. д.). Однако из полученных результатов можно сделать вывод, что для сложных задач безусловной оптимизации генетический алгоритм с кодом Райса дает более высокую эффективность.
Для оценки статистической значимости полученных результатов использовался критерий ANOVA. Критерий ANOVA представляет собой непараметрическую оценку Манна–Уитни при значимости α = 0,05. Сравнения проводились попарно для каждого алгоритма со всеми остальными, представленными в табл. 6. Метод ANONA позволил определить, что различия результатов сравнения алгоритмов статистически достоверны.
Таблица 6
Результаты решения тестовых задач
Функция Растригина |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
25 |
67 |
50 |
17 |
17 |
84 |
Функция Гриванка |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
25 |
75 |
50 |
17 |
17 |
84 |
Функция Катникова |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
75 |
84 |
67 |
17 |
84 |
100 |
Функция Шекеля |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
50 |
75 |
67 |
20 |
84 |
100 |
Функция Де Йонга |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
75 |
75 |
100 |
100 |
67 |
100 |
Функция Розенброка |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
59 |
84 |
50 |
34 |
50 |
84 |
Функция «Сомбреро» |
||||||
Способ кодирования |
Прямой бинарный код |
Код Грея |
Гамма-коды Элиаса |
Дельта-коды Элиаса |
Гамма-коды Левенштейна |
Коды Райса |
Надежность |
75 |
84 |
50 |
17 |
50 |
100 |
Таким образом, показана эффективность использования в генетическом алгоритме для решения задач оптимизации не только хорошо известных методов бинарного кодирования (прямой метод и грей-код), но и альтернативных способов. Особый интерес альтернативные способы кодирования представляют для гибридных генетических алгоритмов с локальным спуском. В данный момент проводятся исследования таких алгоритмов.