Обсуждение статьи "Популяционные алгоритмы оптимизации: Бинарный генетический алгоритм (Binary Genetic Algorithm, BGA). Часть I"

 

Опубликована статья Популяционные алгоритмы оптимизации: Бинарный генетический алгоритм (Binary Genetic Algorithm, BGA). Часть I:

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

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

Вещественное представление данных используется для представления дробных чисел. Вещественные числа могут иметь десятичную часть и дробную часть, разделенные десятичной точкой. Например, "3.14" и "0.5" являются вещественными числами.

Бинарное представление данных, с другой стороны, использует двоичную систему счисления, в которой числа представлены с помощью двух символов: "0" и "1" и каждая цифра называется битом (от англ. "binary digit"). Например, число "5" может быть представлено в бинарном виде как "101".


Основное отличие между вещественным и бинарным представлением данных заключается в способе кодирования чисел. Вещественные числа обычно кодируются с использованием стандартов, таких как IEEE 754, который определяет форматы для представления чисел с плавающей точкой. В языке MQL5 для вещественных чисел используется тип данных "double", который может описать в сумме 16 значащих цифр в числе. Это означает, что общее количество цифр не может быть больше шестнадцати, к примеру, "9 999 999 999 999 999.0" и "9 999 999.999 999 99" и "0.999 999 999 999 999 9" имеют шестнадцать цифр "9" в суммарном количестве до и после запятой. Почему это важно мы разберёмся позже.

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

Автор: Andrey Dik

 
fxsaber #:
Резануло.
Спасибо, поправил.
 
Прочел. Не хватает схемы, в которой показано общее представление алгоритма оптимизации.
 
fxsaber #:
Прочел. Не хватает схемы, в которой показано общее представление алгоритма оптимизации.

Для всех без исключения алгоритмов оптимизации, не только для ГА, порядок операторов (методов) всегда одинаковый, в порядке как в Содержании:

1. Селекция.

2. Кроссовер.

3. Мутация.

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

Есть ещё четвёртый метод - способ помещения новых особей в популяцию, но обычно его не выделяют в самостоятельный.

Может быть, да, имеет смысл нарисовать схему строения "алгоритма оптимизации", подумаю над этим.

 
Andrey Dik #:

Для всех без исключения алгоритмов оптимизации, не только для ГА, порядок операторов (методов) всегда одинаковый

Не смог разобраться, почему в одних алгоритмах Moving без входных, в других - со входным.
for (uint i = epochCount; (bool)i--;)
{
  AO.Moving() // Moving(i)

  for (uint set = ArraySize(AO.aName); (bool)set--;)
    AO.aName[set].f = FF(AO.aName[set].c);
                                                                     
  AO.Revision();
}
 
fxsaber #:
Не смог разобраться, почему в одних алгоритмах Moving без входных, в других - со входным.

Это случай, когда необходимо учитывать номер текущей эпохи в одной из формул алгоритма. Неудачное решение и скорее исключение, чем правило, в остальных алго счётчик эпох собственный внутри.