
- •Введення
- •Лабораторна робота №1 Основи генетичних алгоритмів. Простій генетичний алгоритм Загальні відомості
- •Генетичні оператори
- •Репродукція
- •Оператор кросинговера (схрещування)
- •Мутація
- •Представлення рішень в двійковій формі
- •Логарифмічне кодування
- •Порядок виконання лабораторної роботи
- •Завдання
- •Контрольні запитання
- •Оператори кросинговеру
- •Оператори мутації
- •Тестові приклади
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота №3 Рішення завдання комівояжера за допомогою генетичних алгоритмів Загальні відомості
- •Представлення сусідства
- •Порядкове представлення
- •Шляхове представлення
- •Завдання
- •Контрольні питання
- •Лабораторна робота №4 Генетичне програмування Загальні відомості
- •Термінальна множина
- •Функціональна множина
- •Структури для представлення програм
- •Деревовидна структура
- •Лінійні структури
- •Графоподібні структури
- •Ініціалізація початкової популяції
- •Ініціалізація деревовидних структур
- •Ініціалізація лінійних структур
- •Кросинговер в генетичному програмуванні
- •Виконання ок на деревовидних структурах
- •Ок на лінійних структурах
- •Виконання ок для графоподібних структурах
- •Мутація в генетичному програмуванні
- •Виконання мутації на деревовидних структурах
- •Виконання мутації на лінійних структурах
- •Виконання мутації на графоподібних структурах
- •Фітнес-функція в генетичному програмуванні
- •Інтрони
- •Загальний алгоритм генетичного програмування
- •Порядок виконання лабораторної роботи
- •Завдання
- •Контрольні запитання
- •Литература
- •Методичнi вказiвки До виконання лабораторних робіт
Лабораторна робота №3 Рішення завдання комівояжера за допомогою генетичних алгоритмів Загальні відомості
Задача комівояжера (ЗК) вважається класичною задачею генетичних алгоритмів. Вона полягає в наступному: мандрівник (або комівояжер) повинен відвідати кожен з базового набору міст і повернутися до вихідної точки. Є вартість квитків з одного міста в іншій. Необхідно скласти план подорожі, щоб сума витрачених засобів була мінімальною. Пошуковий простір для ЗК- множина із N міст. Будь-яка комбінація з N міст, де міста не повторюються, є рішенням. Оптимальне рішення - така комбінація, вартість якої (сума вартостей переїзду між кожними з міст у комбінації) є мінімальною.
ЗК - досить стара, вона була сформульована ще в 1759 році (під іншим ім'ям). Термін «Задача комівояжера» був використаний в 1932р. у німецькій книзі «The traveling salesman, how and what he should to get commissions and be successful in his business», що була написана старим комівояжером.
Задача комівояжера було віднесено до NP-складних задач. Існують суворі обмеження на послідовність міст, і їх кількість може бути дуже великою (існують тести, що включають кілька тисяч міст).
Здається природним, що представлення тура – послідовність (i1, i2, … , in), де (i1, i2, … , in) – числа з множини (1 ... n), що представляють певне місто. Двійкове представлення міст неефективно, тому що вимагає спеціального алгоритму, що ремонтує: зміна одиночного біта може спричинити неправильність тура.
У цей час існує три основних представлення шляху: сусідське, порядкове й шляхове. Кожне із цих подань має власні повністю різні оператори рекомбінації.
Представлення сусідства
У представленні сусідства тур є списком з n міст. Місто J перебуває на позиції I тільки в тому випадку, якщо маршрут проходить із міста I у місто J. Наприклад, вектор (2 4 8 3 9 7 1 5 6) представляє наступний тур: 1-2-4-3-8-5-9-6-7 . Кожний маршрут має тільки одне сусідське представлення, але деякі вектори в сусідському представлення можуть представляти неправильний маршрут. Наприклад, вектор (2 4 8 1 9 3 5 7 6) позначає маршрут 1-2-4-1..., тобто частина маршруту - замкнутий цикл. Це представлення не підтримує класичну операцію кросовера. Три операції кросовера були визначені й досліджені для сусідського представлення: alternating edges (альтернативні ребра), subtour chunks (шматки подтуров), heuristic crossovers (евристический кросовер).
Кросовер обмін ребрами (alternating edges) будує нащадків, вибравши (випадково) ребро від першого батька, потім наступне ребро від другого, що потім знову випливає від першого й т.д. Якщо нове ребро представляє замкнутий цикл, з того ж батька беруть випадкове ребро, що ще не вибирався й не утворять замкнутого циклу. Наприклад, один з нащадків батьків
P1 = (2 3 8 7 9 1 4 5 6) і
Р2 = (7 5 1 6 9 2 8 4 3)
Може бути
П1 = (2 5 8 7 9 1 6 4 3),
де процес починався від ребра (1,2) батька Р1, продовжуючи до ребра (7,8), замість якого обране ребро (7,8), оскільки того утворять замкнутий цикл.
Кросовер обмін підтуров (subtour chunks) створює нащадків, вибираючи (випадково) підтур від одного з батьків, потім випадкової довжини шматок від іншого з батьків, і т.д. Як і в alternating edges, у випадку утворення замкнутого циклу, він ремонтується аналогічним чином.
Евристичний кросинговер (heuristic crossover) будує нащадків, вибираючи випадкове місто як стартове для маршруту - нащадка. Потім він порівнює два відповідні ребра від кожного з батьків і вибирає більш коротке. Потім вибране місто стає початковим для наступного пошуку коротших ребер. Якщо на якімсь кроці отримано замкнутий тур, тур продовжується будь-яким випадковим містом, що ще не відвідувався.
Переваги цього представлення - у тому, що воно дозволяє схематично аналізувати подібні маршрути. Це представлення ґрунтується на натуральних «будівельних блоках» - ребрах, маршрути між містами. Наприклад, схема ( * * * 3 * 7 * * * ) описує множину всіх маршрутів з ребрами ( 4 3 ) і ( 6 7 ). Основний недолік даного представлення: множина операцій бідна. Кросовер alternating edges часто руйнує гарні тури. Кросовер subtour chunks має кращі характеристики завдяки меншим руйнівним властивостям. Але все одно його експлуатаційні якості досить низькі. Кросовер heuristic crossover, є найкращим оператором для даного представлення завдяки тому, що інші операції «сліпі». Але продуктивність цієї операції нестабільна. У трьох експериментах на 50, 100 і 200 містах система знайшла тури з 25%, 16% і 27% оптимального, приблизно за 15000, 20000 і 25000 ітерацій соответствено.