Научная статья на тему 'ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ МУТАЦИИ В ГЕНЕТИЧЕСКОМ АЛГОРИТМЕ ПСЕВДО-БУЛЕВОЙ ОПТИМИЗАЦИИ'

ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ МУТАЦИИ В ГЕНЕТИЧЕСКОМ АЛГОРИТМЕ ПСЕВДО-БУЛЕВОЙ ОПТИМИЗАЦИИ Текст научной статьи по специальности «Математика»

CC BY
5
2
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
псевдо-булевая оптимизация / генетический алгоритм / псевдо-случайные числа / геометрическое распределение / мутация / pseudo-boolean optimization / genetic algorithm / pseudo-random numbers / geometric distribution / mutation

Аннотация научной статьи по математике, автор научной работы — Ф.В. Безгачев, П.В. Галушин

Предлагается реализация мутации для генетического алгоритма псевдо-булевой оптимизации, превосходящая по быстродействию прямолинейные реализации. Использование этой реализации способно уменьшить временные и энергетические затраты на решение задач псевдо-булевой оптимизации сложных систем, в том числе, возникающие при проектировании ракетно-космической техники.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

EFFICIENT IMPLEMENTATION OF A MUTATION IN A GENETIC ALGORITHM OF PSEUDO-BOOLEAN OPTIMIZATION

This paper proposes a mutation implementation for a genetic algorithm of pseudo-Boolean optimization that outperforms naive implementations. This implementation allows to reduce time and energy costs of solving problems of pseudo-Boolean optimization of complex systems, including those arising in the design of rocket and space technology.

Текст научной работы на тему «ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ МУТАЦИИ В ГЕНЕТИЧЕСКОМ АЛГОРИТМЕ ПСЕВДО-БУЛЕВОЙ ОПТИМИЗАЦИИ»

УДК 004.051

ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ МУТАЦИИ В ГЕНЕТИЧЕСКОМ АЛГОРИТМЕ

ПСЕВДО-БУЛЕВОЙ ОПТИМИЗАЦИИ

Ф. В. Безгачев, П. В. Галушин

Сибирский юридический институт МВД России Российская Федерация, 660131, г. Красноярск, ул. Рокоссовского, 20 E-mail: fedos82-82@mail.ru, galushin@gmail.com

Предлагается реализация мутации для генетического алгоритма псевдо-булевой оптимизации, превосходящая по быстродействию прямолинейные реализации. Использование этой реализации способно уменьшить временные и энергетические затраты на решение задач псевдо-булевой оптимизации сложных систем, в том числе, возникающие при проектировании ракетно-космической техники.

Ключевые слова: псевдо-булевая оптимизация, генетический алгоритм, псевдо-случайные числа, геометрическое распределение, мутация.

EFFICIENT IMPLEMENTATION OF A MUTATION IN A GENETIC ALGORITHM

OF PSEUDO-BOOLEAN OPTIMIZATION

F. V. Bezgachev, P. V. Galushin

Siberian Law Institute of Ministry of Internal Affairs of the Russian Federation 20, Rokossovsky Str., Krasnoyarsk, 660131, Russian Federation E-mail: fedos82-82@mail.ru, galushin@gmail.com

This paper proposes a mutation implementation for a genetic algorithm of pseudo-Boolean optimization that outperforms naive implementations. This implementation allows to reduce time and energy costs of solving problems of pseudo-Boolean optimization of complex systems, including those arising in the design of rocket and space technology.

Keywords: pseudo-boolean optimization, genetic algorithm, pseudo-random numbers, geometric distribution, mutation.

Задачи оптимизации постоянно возникают в практической деятельности человека. Действительно, если существует возможность выбирать параметры технической или экономической системы, то разумно сделать это самым лучшим (в смысле некоторого критерия) образом. Всё более актуальными становятся сложные задачи оптимизации, то есть задачи, в которых критерий не обладает свойствами, позволяющими эффективно применять классические методы оптимизации: гладкостью, выпуклостью. Для решения сложных задач оптимизации, как правило, используются стохастические методы. Достаточно широкое распространение получили эволюционные методы оптимизации, например, генетический алгоритм [1] и самонастраивающийся генетический алгоритм [2].

Отметим, что в работах, посвященных эволюционным методам псевдо-булевой оптимизации, редко обсуждаются вопросы их эффективной программной реализации. Поэтому многие реализации этих методов оказываются субоптимальными. Рассмотрим возможности более эффективной реализации мутации в генетическом алгоритме псевдобулевой оптимизации.

Актуальные проблемы авиации и космонавтики - 2020. Том 2

Напомним, что оператор мутации применяется к каждому решению на каждом поколении генетического алгоритма для увеличения разнообразия решения и избегания скатывания в локальный минимум. Обозначим вероятность точечной мутации (то есть мутации одного гена) как pm, введём также обозначение для дополняющего события (ген не изменяется в ходе мутации): qm = 1 -pm.

Прямолинейная реализация оператора мутации языке программирования C++ выглядит примерно следующим образом:

void mutation(Gen * p, size_t n, double p_m)

{

for(int i = 0; i < n; ++ i)

if( rnd() < p_m ) p[i] = !p[i];

}

Здесь p - указатель на блок памяти, в котором размещено решение, n - его длина, a rnd -функция, генерирующая случайные вещественные числа, равномерно распределённые на интервале [0, 1).

Имеется несколько путей усовершенствования данного кода. Во-первых, можно избавиться от условной инструкции в теле цикла (Как известно, условные инструкции могут замедлять работу современных микропроцессоров с конвейерной архитектурой [3, 843]). Значение p[i] после выполнения цикла зависит от двух булевых величин p[i] до начала выполнения тела цикла и значения выражения rnd() < p_m. Составим таблицу возможных ситуаций:

Таблица 1

Возможные ситуации

p[i] старое rnd() < pm p[i] новое

0 0 0

1 0 1

0 1 1

1 1 0

Нетрудно понять, что новое p[i] равно нулю тогда и только тогда, когда оба аргумента имеют одинаковое значение, такая функция называется «исключающим ИЛИ». С учётом этого факта мы можем переписать функцию мутации следующим образом:

void mutation(bool * p, size_t n, double p_m)

{

for(int i = 0; i < n; ++ i)

p[i] A= ( rnd() < p_m );

}

Эта реализация выполняет столько же шагов цикла, что и исходная прямолинейная, но лучше подходит для современных процессоров с конвейерной архитектурой, так как не включает условных инструкций.

Однако существует и другое направление усовершенствования данного алгоритма, основанное на том факте, что вероятность мутации, как правило, очень мала. Это означает, что в большинство генов не изменится в ходе процесса мутации и большинство случайных чисел генерируется «вхолостую». Вместо того, чтобы случайным образом определять будет ли инвертирован данный ген, можно случайным образом определять, сколько генов подряд будет пропущено перед тем как ген изменится.

Вероятность того, что будет пропущено ровно к - 1 генов, а к-ый будет изменён, равна, по теореме умножения из теории вероятностей:

Pk = tfrnPrn =(! - Pm У4 Pm

Данное дискретное распределение называется «геометрическим распределением». Существует достаточно эффективный способ получения случайных чисел с данным распределением из равномерно распределенных случайных чисел, основанный на достаточно простом преобразовании, не включающем какие-либо условные переходы [4, 161].

Используя данный подход, мы можем написать следующую реализацию оператора мутации:

size_t geometry(double p)

{

return size_t(log(1 - rnd() ) / log(1 - p) + 1);

}

void mutation(bool * p, size_t n, double p_m)

{

for(int i = geometry(p) - 1; i < n; i += geometry(p) - 1) p[i] = !p[i];

}

Проанализировав данный программный код, мы можем заметить, что данная реализация выполняет меньше шагов в цикле, чем прямолинейная реализация, описанная выше, так как за один шаг может продвинуться более чем на один индекс. Кроме того, тело цикла не содержит условных инструкций, то есть данная реализация не уступает предыдущей (на основе «исключающего или») в плане пригодности для архитектуры современных процессоров. Ещё одно её преимущество - использование меньшего количества случайных чисел, порождение которых может быть затратной операцией. Использование в этом алгоритме функции логарифм не приводит к снижению быстродействия, так как эта функция реализована в большинстве современных процессоров на аппаратном уровне.

В качестве направления дальнейших исследований можно указать сравнение быстродействия распараллеленных вариантов двух предложенных реализаций на многоядерных процессорах.

Таким образом, в данной работе были предложены две реализации оператора мутации генетического алгоритма, лучше подходящие для компьютеров с современной архитектурой. Эти результаты могут быть использованы для повышения быстродействия программного обеспечения, реализующего и/или использующего методы псевдо-булевой оптимизации сложных технических систем.

Библиографические ссылки

1. Goldberg, D. E. Genetic algorithms in search, optimization, and machine learning. Reading, MA: Addison-Wesley, 1989.

2. Semenkin E., Semenkina M. Stochastic Models and Optimization Algorithms for Decision Support in Spacecraft Control Systems Preliminary Design. Informatics in Control, Automation and Robotics, Lecture Notes in Electrical Engineering, 2014, Vol. 283, P. 51-65.

3. Компиляторы: принципы, технологии и инструментарий / A.B. Axo , Лам М.С., Сети Р. и др., 2-е изд. : пер. с англ. М.: ООО «И. Д. Вильяме», 2015. 1184 с.

4. Кнут Д.Э. Искусство программирования, том 2. Получисленные методы, 3-е изд. : пер. с англ. М.: ООО «И. Д. Вильяме», 2007. 832 с.

© Безгачев Ф. В., Галушин П. В., 2020

i Надоели баннеры? Вы всегда можете отключить рекламу.