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

2.4 Мутації

Мутація - це перетворення хромосоми, що випадково змінює одну чи декілька її позицій (генів). Найбільш розповсюджений вид мутацій - випадкова зміна тільки одного з генів хромосоми. 

До мутацій відноситься все те ж, що і до розмноження: є деяка доля мутантів m, що є параметром генетичного алгоритму, і на кроці мутацій необхідно вибрати m*N осіб, а згодом змінити їх згідно із заздалегідь заданими операціями мутації [5].

3 Реалізація генетичних алгоритмів

3.1 Приклад реалізації генетичного алгоритму на С++

Пошук в одномірному просторі, без схрещення. Ця програма вважає більші за значенням елементи представлені цілими числами найбільш життєздатними.

# include <iostream.h>

# include <algorithm.h>

# include <numeric.h>

using namespace std;

int main()

{

//початковий масив (популяція) з 1000 елементів (осіб).

const int N = 1000;

int a[N];

//заповнимо елементи нулями

fill(a, a+N, 0);

for (;;)

{

//Мутація кожного елемента.

//Випадково збільшуємо або зменшуємо значення елементу на один;

for (int i = 0; i < N; ++i)

if (rand()%2 == 1)

a[i] += 1;

else

a[i] -= 1;

//відсортуванням по зростанню вибираємо більші за значенням.

sort(a, a+N);

//... і тоді більші за значенням виявляться в другій частині масиву.

//скопіюємо більші в першу половину, коли вони залишили нащадків, а перші померли:

copy(a+N/2, a+N, a /*куди*/);

//тепер поглянемо на середнє значення елементу популяції. Як бачимо, середнє значення все більше і більше.

cout << accumulate(a, a+N, 0) / N << endl;

}

}

3.2 Застосування генетичних алгоритмів

Генетичні алгоритми в різних формах застосовуються до вирішення багатьох наукових і технічних проблем.

Генетичні алгоритми використовуються при створенні інших обчислювальних структур, наприклад, автоматів або мереж сортування. У машинному навчанні вони використовуються при проектуванні нейронних мереж або керуванні роботами. Вони також застосовуються при моделюванні розвитку в різних предметних областях, включаючи біологічні (екологія, імунологія і популяційна генетика) та соціальні (такі як економіка і політичні системи) системи. 

Проте, можливо найбільш популярне застосування генетичних алгоритмів - оптимізація багато-параметричних функцій.

Багато реальних задач можуть бути сформульовані як пошук оптимального значення, де значення - складна функція, що залежить від певних вхідних параметрів.

У деяких випадках, потрібно знайти ті значення параметрів, при яких досягається найкраще точне значення функції.

В інших випадках, точний оптимум не потрібний - рішенням може вважатися будь-яке значення, краще за певну задану величину. У цьому випадку, генетичні алгоритми - часто найбільш прийнятний метод для пошуку прийнятних значень.

Сила генетичного алгоритму полягає в його здатності маніпулювати одночасно багатьма параметрами, що використовується в сотнях прикладних програм, включаючи проектування літаків, налаштування параметрів алгоритмів і пошуку стійких станів систем нелінійних диференціальних рівнянь. 

Генетичні алгоритми застосовується для вирішення наступних задач:

  1. Оптимізація функцій

  2. Оптимізація запитів в базах даних

  3. Різноманітні задачі на графах (задача комівояжера, розфарбування)

  4. Налаштування і навчання штучної нейронної мережі

  5. Задачі компоновки

  6. Створення розкладів

  7. Ігрові стратегії

  8. Апромоксація функцій

  9. Штучне життя

  10. Біоінформатика (згортання білків)

Можна підсумувати, що генетичні алгоритми є ефективною процедурою пошуку, що конкурує з іншими процедурами.

Ефективність генетичних алгоритмів сильно залежить від таких деталей, як метод кодування рішень, операторів, налаштування параметрів, окремих критеріїв успіху.

Теоретична робота, відбита в літературі, присвяченої генетичним алгоритмам, не дає підстав говорити про вироблення певних строгих механізмів для чітких передбачень [3].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]