Генетичният алгоритъм е алгоритъм, който имитира процеса на естествен подбор. Те помагат за решаване на проблеми, свързани с оптимизация и търсене. Генетичните алгоритми са част от по-големия клас еволюционни алгоритми. Генетичните алгоритми имитират естествените биологични процеси, като например наследяване, мутация, подбор и кръстосване.
Концепцията за генетични алгоритми е техника за търсене, която често се използва в компютърните науки за намиране на сложни, неочевидни решения на алгоритмични проблеми за оптимизация и търсене. Генетичните алгоритми са евристични методи за глобално търсене.
Основна идея и компоненти
Генетичният алгоритъм работи с популация от кандидати за решение (наричани индивиди или хромозоми). Всеки индивид представлява възможно решение, кодирано чрез подходяща репрезентация (например битови низове, реални числа или пермутации). Основните компоненти са:
- Хромозоми (репрезентация) — как е кодирано решението (binary, real-valued, permutation и др.).
- Функция за пригодност (fitness) — оценява качеството на всеки индивид; ръководи подборния механизъм.
- Оператори — подбор (selection), кръстосване (crossover) и мутация (mutation).
- Параметри — размер на популацията, честота на кръстосване и мутация, брой поколения и др.
Чести типове репрезентация
- Битови низове — удобни за булеви/комбинаторни задачи.
- Реално-числови вектори — подходящи за непрекъснати оптимизационни проблеми.
- Пермутации — използват се при задачи като проблема на пътуващия търговец (TSP).
Основни оператори
- Подбор (selection): рулетка (fitness-proportionate), турнирен подбор, rank-based и др. Целта е да се изберат индивиди за създаване на следващо поколение, като по-приспособените имат по-голям шанс.
- Кръстосване (crossover): комбиниране на информация от два (или повече) родители. Видове: едноточково, двуточково, многоточково, uniform crossover, специализирани кръстосвания за пермутации.
- Мутация (mutation): случайна промяна в индивида, която внася разнообразие и помага за избягване на застой в локални оптимуми. За битови низове това е обръщане на бит; за реални вектори — добавяне на шум.
Общ работен цикъл (стъпки)
- Инициализация: създаване на начална популация (често случайна).
- Оценяване: изчисляване на fitness за всеки индивид.
- Подбор: избор на родители на база fitness.
- Кръстосване и мутация: създаване на нови индивиди (деца).
- Формиране на ново поколение: замяна на част или всички индивиди.
- Критерий за край: достигане на максимален брой поколения, достигане на допустимо качество или липса на подобрение.
Параметри и практически съображения
- Размер на популацията — по-голяма популация увеличава шансовете за намиране добри решения, но повишава изчислителните разходи.
- Честота на кръстосване — обикновено висока (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 Върни най-добрия индивид
Генетичните алгоритми са мощен инструмент в арсенала на практикуващите оптимизация и компютърните науки, особено когато проблемът е сложен, многомодален или трудно формализируем по класическите аналитични методи. За добри резултати са нужни внимателен избор на кодиране, оператори и параметри, както и наблюдение на поведението на алгоритъма в хода на изпълнение.

