Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГА Методичка_полная_укр.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.87 Mб
Скачать

Лабораторна робота №4 Генетичне програмування Загальні відомості

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

Програми складаються із змінних, констант і функцій, які зв'язані деякими синтаксичними правилами. Тому визначається термінальна множина, яка містить константи і змінні, і функціональна множина, до якої належать, перш за все, оператори і необхідні елементарні функції (exp(x), sin(x) і т.п.). Слід зазначити, що термінали і функції мають різне призначення. Термінали забезпечують вхідні значення в систему (програму), тоді як функції використовуються при обробці значень усередині системи. Терміни «функції» і «термінали» узяті з деревовидного представлення, і відповідають вузлам деревовидних структур.

Термінальна множина

Термінальна множина включає:

1) зовнішні входи в програму;

2) використовувані в програмі константи;

3) функції, які не мають аргументів.

Слово «термінал» використовується, оскільки перераховані вище об'єкти відповідають термінальним (кінцевим) вершинам у деревовидних структурах. Термінал дає деяке (чисельне) значення, у нього немає вхідних аргументів, і він має нульову «арність».

Слід зазначити, що зовнішні входи тісно пов'язані з навчальними вибірками, які часто використовуються в ГП. При цьому кожна змінна (ознака, чинник і т. п.) навчальної вибірки відповідає своєму терміналу.

Функціональна множина

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

1) булеві функції І, АБО, НЕ і т.п.;

2) арифметичні функції складання, віднімання, множення, ділення;

3) трансцендентні функції (тригонометричні, логарифмічні);

4) функції надання значення змінним (a:=2);

5) умовні оператори (if then, else: case або switch оператори галуження);

6) оператори переходів (go to, jump, call- виклик функції);

7) оператори циклу (while do, repeat until, for do);

8) підпрограми і функції.

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

Структури для представлення програм

Термінали і функції мають бути об'єднані за певними правилами в деякі структури, які можуть представляти програми і використовуватися при їх виконанні. Вибір структури істотно впливає на порядок виконання програми, розподіл і використання локальної або глобальної пам'яті.

В даний час найбільш поширеними структурами для представлення хромосоми є:

1) деревовидна структура;

2) лінійна структура;

3) графоподібна структура.