Еволюційні алгоритми: що це таке і для чого вони потрібні

Реалізація

Крок перший – створення початкового населення з індивідуумів у випадковому порядку.

Крок другий – оцінка придатності кожного індивідуума в цій групі (обмеження по часу, достатня підготовленість і т. д.).

Крок третій – повторення наступних пунктів регенерації до завершення:

  • Вибрати найбільш підходящих людей для розмноження (батьки).
  • Вивести нових особин, які пройшли еволюційний алгоритм c допомогою кросоверу та мутації, щоб отримати потомство.
  • Оцінити індивідуальну придатність нових людей.
  • Замінити найменш пристосований населення ними.
  • Типи

    Генетичний алгоритм — це еволюційна послідовність, самий популярний тип радника. Шукається рішення проблеми у вигляді рядків чисел (традиційно двійкових, хоча найкращими виставами зазвичай є ті, які відображають більше в розв’язуваної задачі) шляхом застосування таких операторів, як рекомбінація і мутація (іноді одного, у окремих обох випадках). Цей тип радника часто використовується в задачах оптимізації. Інша назва для цього — fetura (від латинського «народження»):

  • Генетичне програмування. У ньому рішення представлені у вигляді комп’ютерних кодів, і їх придатність визначається здатністю виконувати обчислювальні завдання.
  • Еволюційне програмування. Аналогічно еволюційно генетичним алгоритмом, але структура фіксована та її числові параметри можуть бути змінені.
  • Програмування експресії генів. Розвиває комп’ютерні програми, але досліджує систему генотип-фенотип, де проекти різних розмірів кодуються в лінійних хромосомах фіксованої довжини.
  • Стратегія. Працює з векторами дійсних чисел як уявленнями рішень. Зазвичай використовує самоадаптивные еволюційні алгоритми швидкості мутацій.
  • Диференціальне розвиток. Створено на основі векторних різниць і, отже, в першу чергу підходить для задач чисельної оптимізації.
  • Нейроеволюція. Аналогічно еволюційного програмування і генетичних алгоритмах. Але останні являють собою штучні нейронні мережі, описуючи структуру і вага сполук. Кодування генома може бути прямою або непрямою.