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

Концепцията за генетични алгоритми е техника за търсене, която често се използва в компютърните науки за намиране на сложни, неочевидни решения на алгоритмични проблеми за оптимизация и търсене. Генетичните алгоритми са евристични методи за глобално търсене.

Основна идея и компоненти

Генетичният алгоритъм работи с популация от кандидати за решение (наричани индивиди или хромозоми). Всеки индивид представлява възможно решение, кодирано чрез подходяща репрезентация (например битови низове, реални числа или пермутации). Основните компоненти са:

  • Хромозоми (репрезентация) — как е кодирано решението (binary, real-valued, permutation и др.).
  • Функция за пригодност (fitness) — оценява качеството на всеки индивид; ръководи подборния механизъм.
  • Оператори — подбор (selection), кръстосване (crossover) и мутация (mutation).
  • Параметри — размер на популацията, честота на кръстосване и мутация, брой поколения и др.

Чести типове репрезентация

  • Битови низове — удобни за булеви/комбинаторни задачи.
  • Реално-числови вектори — подходящи за непрекъснати оптимизационни проблеми.
  • Пермутации — използват се при задачи като проблема на пътуващия търговец (TSP).

Основни оператори

  • Подбор (selection): рулетка (fitness-proportionate), турнирен подбор, rank-based и др. Целта е да се изберат индивиди за създаване на следващо поколение, като по-приспособените имат по-голям шанс.
  • Кръстосване (crossover): комбиниране на информация от два (или повече) родители. Видове: едноточково, двуточково, многоточково, uniform crossover, специализирани кръстосвания за пермутации.
  • Мутация (mutation): случайна промяна в индивида, която внася разнообразие и помага за избягване на застой в локални оптимуми. За битови низове това е обръщане на бит; за реални вектори — добавяне на шум.

Общ работен цикъл (стъпки)

  1. Инициализация: създаване на начална популация (често случайна).
  2. Оценяване: изчисляване на fitness за всеки индивид.
  3. Подбор: избор на родители на база fitness.
  4. Кръстосване и мутация: създаване на нови индивиди (деца).
  5. Формиране на ново поколение: замяна на част или всички индивиди.
  6. Критерий за край: достигане на максимален брой поколения, достигане на допустимо качество или липса на подобрение.

Параметри и практически съображения

  • Размер на популацията — по-голяма популация увеличава шансовете за намиране добри решения, но повишава изчислителните разходи.
  • Честота на кръстосване — обикновено висока (0.6–0.9) за усилване на комбинирането на добри черти.
  • Честота на мутация — обикновено ниска (напр. 0.001–0.05), достатъчна за поддържане на разнообразие, без да разрушава конструктивната информация.
  • Баланс експлоатация/изследване — критичен: прекалено много експлоатация води до преждевременно схващане в локален минимум, прекалено много изследване намалява скоростта на конвергенция.

Критерии за спиране

  • Достигнат максимален брой поколения.
  • Не се наблюдава подобрение за определен брой поколения.
  • Достигнато приемливо решение (fitness праг).
  • Изчерпване на ресурси (време, изчислителен бюджет).

Предимства и недостатъци

  • Предимства: подходящи за сложни, нелинейни и многомодални проблеми; не изискват диференцируеми функции; лесно паралелизируеми; могат да намерят глобално добро решение при правилно проектиране.
  • Недостатъци: чувствителни към избор на параметри и репрезентация; могат да бъдат бавни при големи проблеми; риск от преждевременно конвергиране; не гарантират намиране на оптимум.

Приложения

Генетичните алгоритми намират широко приложение в:

  • Оптимизация на параметри (машинно обучение, контролни системи).
  • Комбинаторни задачи (TSP, разпределение на ресурси, планиране).
  • Дизайн и еволюция на структури (архитектура, електронни вериги).
  • Автоматично генериране на програми и правила (генетично програмиране).

Практически съвети

  • Изберете репрезентация, която естествено отговаря на структурата на проблема — това опростява операторите и подобрява ефективността.
  • Започнете с разумни стойности за параметрите и направете параметрично търсене или използвайте адаптивни схеми (адаптивна честота на мутация и т.н.).
  • Комбинирайте GA с локални търсения (hybrid / memetic algorithms) за бързо финализиране на решения.
  • Следете разнообразието в популацията и при нужда въвеждайте механизми за запазване на разнообразие (елитизъм, рестартиране, специални мутационни стратегии).

Примерен псевдокод

 Инициализирай популация P Докато не е изпълнен критерий за стоп:     Оцени всеки индивид в P чрез fitness     Създай нова популация Q:         Докато Q не е пълна:             Избери родители от P (selection)             Приложи crossover върху родителите -> деца             Приложи mutation върху децата             Добави децата в Q     P = Q Върни най-добрия индивид 

Генетичните алгоритми са мощен инструмент в арсенала на практикуващите оптимизация и компютърните науки, особено когато проблемът е сложен, многомодален или трудно формализируем по класическите аналитични методи. За добри резултати са нужни внимателен избор на кодиране, оператори и параметри, както и наблюдение на поведението на алгоритъма в хода на изпълнение.