Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Інтелектуальний аналіз даних.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
275.97 Кб
Скачать

Генетичний алгоритм. Генетичне програмування.

Генетичний алгоритм (англ. genetic algorithm) — це еволюційний алгоритм пошуку, що використовується для вирішення задач оптимізації і моделювання шляхом послідовного підбору, комбінування і варіації шуканих параметрів з використанням механізмів, що нагадують біологічну еволюцію. Задача кодується таким чином, щоб її вирішення могло бути представлено в вигляді масиву подібного до інформації складу хромосоми. Цей масив часто називають саме так «хромосома». Випадковим чином в масиві створюється деяка кількість початкових елементів «осіб», або початкова популяція. Особи оцінюються з використанням функції пристосування, в результаті якої кожній особі присвоюється певне значення пристосованості, яке визначає можливість виживання особи. Після цього з використанням отриманих значень пристосованості вибираються особи допущені до схрещення (селекція). До осіб застосовується "генетичні оператори" (в більшості випадків це оператор схрещення (crossover) і оператор мутації (mutation), створюючи таким чином наступне покоління осіб. Особи наступного покоління також оцінюються застосуванням генетичних операторів і виконується селекція і мутація. Так моделюється еволюційний процес, що продовжується декілька життєвих циклів (поколінь), поки не буде виконано критерій зупинки алгоритму. Таким критерієм може бути:

  • знаходження глобального, або надоптимального вирішення;

  • вичерпання числа поколінь, що відпущені на еволюцію;

  • вичерпання часу, відпущеного на еволюцію.

Генетичні алгоритми можуть використатися для пошуку рішень в дуже великих і тяжких просторах пошуку. Можна виділити такі етапи генетичного алгоритму:

  1. Створення початкової популяції:

  2. Обчислення функції пристосованості для осіб популяції (оцінювання)

  3. Повторювання до виконання критерію зупинки алгоритму:

  • Вибір індивідів із поточної популяції (селекція)

  • Схрещення або/та мутація

  • Обчислення функції пристосовуваності для всіх осіб

  • Формування нового покоління

Генетичне програмування - це методика машинного навчання, прототипом якої є біологічна еволюція. У загальному випадку ми починаємо з великого набору програм (іменованих популяцією), згенерованих випадковим чином або написаних вручну, про які відомо, що це досить хороші рішення. Потім ці програми конкурують між собою в спробі вирішити деяку поставлену користувачем завдання. Це може бути гра, в якій програми змагаються між собою безпосередньо, або спеціальний тест, покликаний визначити, яка програма краще. По завершенні змагання складається ранжований список програм - від найкращої до найгіршої. Потім - і ось тут-то вступає у справу еволюція - кращі програми копіюються і модифікуються одним із двох способів. Найпростіший називається мутацією; в цьому випадку деякі частини програми випадковим чином і дуже незначно змінюються в надії, що від цього рішення стане краще. Інший спосіб називається схрещуванням (або кросовером) - частина однієї з відібраних програм переміщається в іншу. У результаті процедури копіювання та модифікації створюється багато нових програм, які засновані на найкращих особинах попередньої популяції, але не збігаються з ними. На кожному етапі якість програм обчислюється за допомогою функції виживаності (fitness function). Так як розмір популяції не змінюється, програми, що опинилися поганими, видаляються з популяції, звільняючи місце для нових. Створюється нова популяція, яка називається «наступним поколінням», і весь процес повторюється. Оскільки зберігаються і змінюються найкращі програми, то є надія, що з кожним поколінням вони будуть вдосконалюватися, як діти, які можуть перевершити своїх батьків. Нові покоління створюються до тих пір, поки не буде виконана умова завершення, яке в залежності від завдання може формулюватися одним із таких способів:

• Знайдено ідеальне рішення.

• Знайдено достатньо хороше рішення.

• Рішення не вдається поліпшити протягом кількох поколінь.

• Кількість поколінь досягло заданої межі.