/Mendel4

Diploid Genetic Algorithm with mortality Delphi unit

Primary LanguagePascalMIT LicenseMIT

TGeneticAlgorithm

Diploid Genetic Algorithm with mortality Delphi unit

Модуль генетического алгоритма Версия 4.7


Диплоидная версия

  • возможность онтогенезиса
  • сегмент хромосомы, кодирующий одну переменную, рассматривается генетическими операторами как отдельная хромосома
  • возможность смертности (Цена замещения Холдейна + кривая выживания для людей)
  • лучшая особь обязательно дает потомство

Многонитевая версия

  • возможность параллельной оценки приспособленности особей в пуле нитей

ОГРАНИЧЕНИЯ

  • максимум 62 бита на переменную

ПО УМОЛЧАНИЮ

Для популяции:

  • коэффициент давления отбора - 0.1
  • активных родителей - 100%

Для особи:

  • оценка приспособленности - новые
  • онтогенезис - нет
  • смертность - нет

Для хромосомы:

  • вероятность рекомбинации групп сцепления - 0.5
  • частота мутации - 1/250
  • вероятность транслокации - 0.005
  • вероятность инверсии - 0.002
  • матожидание числа кроссоверов - 1

Число процессоров в системе - 2


1998-2018 (c) Махотило Константин Владимирович

Web: https://sites.google.com/site/kvmahotilo


31.01.18 v4.7g

  • при малой популяции и смертности число потомков могло равняться 0

25.05.12 v4.7f

  • Добавлена переменная GAThreadsPerProcessor, позволяющая задавать количество потоков на процессор

19.02.11 v4.7e

  • В функции RandomGamma добавлена защита от редкой ситуации ln(0)
  • В функции DaethProbability добавлена защита от ошибочной ситуации ln(0)

20.07.10 v4.7d

  • Улучшено детектирование возникновения ошибок целевой функции в многопоточном режиме счета
  • Свойство BestIndividual заменено на переменную для обеспечения правильного результата при обращении к ней в процессе сортировки 25.05.10 v4.7с
  • Зависание при возникновении ошибки целевой функции в многопоточном режиме счета

15.11.09 v4.7b

  • Из TIndividual убраны копии общих для всех особей параметров - указателей на Inf,Sup,Map и длины векторов и хромосом. Вместо них введен указатель на родительский TGeneticAlgorithm. Уменьшено использование памяти.
  • В TGeneticAlgorithm введена карта смещений к началам групп сцепления в хромосомах, чтобы не рассчитывать их в особях каждый раз. +1% быстродействия
  • В TGeneticAlgorithm введены общие для всех особей временные хромосомы +10% быстродействия
  • Ошибка кодирования в TData_to_Bin, возникавшая при определенных вещественных значениях и больших длинах кода (> 53 бит)

11.11.09 v4.7а

  • Изменена схема инверсии и транслокации. Вероятность проведения операции определяетя для каждой группы сцепления
  • Изменены значения вероятности инверсии и транслокации по умолчанию 31.10.09 v4.7
  • При вычислении целевой функции в параллельных нитях вместо постоянного создания/удаления нитей введен их постоянный пул
  • Число потоков при многопоточном вычислении целевой функции равно числу процессоров в системе (по умолчанию 2)
  • Изменена схема транслокации. Вместо перестановки головы и хвоста всей хоромосомы происходит обмен участками между двумя сегментами хромосомы

28.08.09 v4.6a

  • Количество кроссоверов в хромосоме и число мутаций - случайная величина с законом распределения Пуассона (целочисленное гамма-распределение)

07.08.09 v4.6

  • После создания особи по известному решению вектор параметров декодируется в соответствии с картой хромосомы

15.05.09 v4.5b

  • Защита от перевода часов назад при расчете статистики времени счета

12.04.08 v4.5a

  • Для служебных процедур введены директивы inline (условно) для повышения скорости в Delphi 2007

04.04.08 v4.5

  • Статистика времени счета текущей эпохи
  • Изменена схема мутации гена с последовательного на произвольный перебор состояний.
  • Сокращено использование промежуточных битовых массивов.
  • Последовательное копирование битов заменено на групповое с помощью TBitVector.CopyBitsTo()

09.12.07 v4.4e

  • Защита от ситуации Inf >= Sup при создании ГА

31.10.07 v4.4d

  • Оптимизирована функция перевода кода Грея в двоичный, изменен порядок ее аргументов

26.10.07 v4.4c

  • Схема определения смертности особи строится по формле Вейбулла, на более достоверных данных и на базе величины средней продолжительности жизни

30.08.07 v4.4b

  • Небольшая оптимизация математических вычислений

22.07.07 v4.4a

  • Корректировка статистики времени счета на время, проведенное в спящем режиме

07.04.07 v4.4

  • Изменен порядок расчета размеров детской и родительской группы при включенной смертности

! Перед включением многопоточного режима вычисления функции приспособленности необходимо задать реальное число процессоров в системе (глобальная переменная GAProcessorsCount)