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

ЗМІСТ

ВСТУП 5

1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ 8

1.1 Основні поняття теорії графів для задачі комівояжера 9

1.2 Формулювання і деякі властивості рішень задачі комівояжера 11

1.3 Постановка задачі комівояжера як завдання на графі 13

1.4 Аналіз даних для задачі комівояжера 14

2 ОБҐРУНТУВАННЯ МЕТОДУ РОЗВ’ЯЗАННЯ ЗАДАЧІ КОМІВОЯЖЕРА 16

2.1 Етапи генетичного алгоритму 17

3 РОЗВ’ЯЗАННЯ ЗАДАЧІ КОМІВОЯЖЕРА ЗА ДОПОМОГОЮ ГЕНЕТИЧНОГО АЛГОРИТМУ 19

3.1 Вибір та обґрунтування форми подання задачі 19

3.2 Розробка оціночної функції для розв’язання задачі комівояжера за допомогою генетичного алгоритму 20

4 РЕАЛІЗАЦІЯ програми, що реалізує розв’язання задачі комівояжера за допомогою генетичного алгоритму 26

4.1 Проектування алгоритму програмного модуля 26

4.2 Розробка програми розв'язку задачі комівояжера 28

5 аналіз результатів тестування програми 31

вИСНОВКИ 36

післямова 38

ЛІТЕРАТУРА 39

Додаток А Технічне завдання 41

Додаток Б Бібліографічні дослідження 43

Додаток В Інструкція користувача 45

Додаток Г Лістинг програми розв’язку задачі комівояжера 48

Графічні матеріали 53

ВСТУП

Наш світ влаштований набагато складніше чим можемо собі уявити. Але не дивлячись на це, навіть той потік інформації, яка людина може сприйняти і обробити за певну одиницю часу, неймовірно великий. Чого тільки коштує одна графіка? Що говорити про окремі випадки, коли цей потік збільшується (гіпноз, медитація, магічна дія на навколишній світ).

Але це в ідеалі. Сліпа людина позбавлена графічного потоку, паралізований — позбавлений дотикової інформації, і так далі. Тобто, в принципі, інтелект може функціонувати в замкнутому просторі, не реагуючи на зовнішні чинники. І для цього вже не потрібна та обчислювальна потужність, якої потребує здорова людина. Для створення її вже достатньо обчислювальної потужності сучасних комп’ютерів. Але необхідна особлива структура оперативної пам’яті, відмінна від ємнісної.

Що є, звична для користувача комп’ютера, оперативна пам’ять? Це мікросхеми, чіпи, побудовані із ємнісних комірок. Кожна комірка має свою адресу (координати). Заповнена комірка – заряджена ємність (1), порожня, – розряджена (0). На обробку кожної комірки, запис, стирання, зчитування процесор виділяє окремі цикли. Тобто так він (комп’ютер) і працює: зчитує, рахує, записує результат.

А чи так само працює думка (людська оперативна пам’ять)? Адже не так! Людина не виділяє для її обслуговування циклів. Поява, зміна і знищення інформації в ній, звичайно, пов’язана з часом. Але обчислювальна потужність процесора, тобто робота мозку, направлена на обробку зовнішніх дій, і пошук інформації в статичній пам’яті при цьому проблем із ресурсами не має. Одиниці в нашій оперативній пам’яті не піддаються обчислювальному процесу. Вони видозмінюються під впливом зовнішніх чинників безпосередньо, «проїхала червона машина», «заболіла спина», «треба відповісти на лист від друга». У машинному коді ці думки займають різний бітовий простір пам’яті. У людському – один блок. У такому ж блоковому вигляді вони зберігаються в статичній пам’яті. Різний рівень інтелектуальних здібностей у людей, мабуть, пов’язаний з розмірами цього блока. Більше, блок – легше осмислення великого масиву інформації, швидший пошук в збереженій пам’яті [1].

Всі вже, напевно, чули про електромеханічних собак в Японії, які можуть впізнавати господаря в обличчя, виконувати деякі прості команди і мають деяку здібність до навчання. Чули і про холодильники з виходом в Інтернет і про впровадження Microsoft в майбутні версії Windows елементів штучного інтелекту.

У подібному розвитку області штучного інтелекту немає нічого незвичайного. Тут доречно привести гіпотезу про зустрічну еволюцію людини і комп’ютера: людина спочатку вчиться бачити, ходити, розмовляти, а вже потім розвиває здібності до обчислень і логічних висновків. Комп’ютер же навпаки, народжується як обчислювальна система, що базується на формальній логіці, в процесі розвитку набуває здібностей до розпізнавання образів, синтезу мови і управління в реальному часі [2].

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

Свою нішу в системах штучного інтелекту займають екстремальні задачі комбінаторного типу, які об’єднують широке коло задач дискретної оптимізації. До цих задач відносяться задачі теорії розкладів, календарного планування, цілочисельного програмування, задачі про комівояжера та інші [1].

Дані задачі мають багато практичних застосувань, наприклад, при проектуванні інформаційних систем та обчислювальних комплексів, у задачах маршрутизації в системах масового обслуговування та комп’ютерних мережах. У цьому плані найбільший інтерес представляє відома “задача комівояжера”, суть якої полягає в знаходженні найкоротшого замкнутого шляху обходу вершин графа (міст, станів певної системи і т. п.), які задані своїми координатами [2].

Відомо, що задачі такого типу в загальному випадку мають багато екстремальний характер і є NP-повними [1, 2]. Наприклад, при розв’язанні задачі комівояжера, як правило, використовуються лише наближені алгоритми розв’язання. Вони мають достатньо високу швидкодію та поліноміальну часову складність, але дають лише наближені до точних результати. Точні методи типу простого перебору, гілок та границь дозволяють ефективно розв’язувати такі задачі, але мають експоненціальну складність, що не дозволяє використовувати їх для задач великої розмірності.

Сучасний підхід до розв’язання такого класу задач пов’язують з використанням методів штучного інтелекту — нейроподібних мереж та еволюційних алгоритмів випадково-детермінованого пошуку, серед яких найбільш поширеними є генетичні [3]. Відомо, що такі структури моделюють роботу кори мозку людини та еволюційний процес розвитку живої природи, мають можливість паралельної обробки даних, і, за рахунок цього, забезпечують суттєвий виграш часу при розв’язанні задач великої розмірності.

У даному курсовому проекті ставиться завдання розв’язання задачі комівояжера за допомогою генетичного алгоритму.

Таким чином, предметом дослідження є генетичний алгоритм за допомогою якого буде розв'язуватися поставлена задача.

Об’єктом дослідження в даному курсовому проекті є генетичні процеси, які нагадують біологічну еволюцію та інтерпретуються як складові компоненти алгоритму під час програмування.

Метою курсового проекту є розв’язання задачі комівояжера за допомогою генетичного алгоритму.

1 Аналіз предметної області

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

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

Задача комівояжера (комівояжер — подорожуючий торговець; англ. Travelling Salesman Problem, TSP; нім. Problemdes Handlungsreisenden) полягає у знаходженні найвигіднішого маршруту, що проходить через вказані міста хоча б по одному разу. В умовах завдання вказуються критерій вигідності маршруту (найкоротший, найдешевший, сукупний критерій тощо) і відповідні матриці відстаней, вартості тощо. Зазвичай задано, що маршрут повинен проходити через кожне місто тільки один раз, в такому випадку розв'язок знаходиться серед гамільтонових циклів.

Невідомо, коли проблему комівояжера було досліджено вперше. Однак, відома книжка, що видана в 1832 році з назвою “Комівояжер — як він має поводитись і що має робити для того, аби доставляти товар та мати успіх в своїх справах — поради старого Кур'єра», в якій описано проблему, але математичний апарат для її розв'язання не застосовується. Натомість, в ній запропоновано приклади маршрутів для деяких регіонів Німеччини та Швейцарії [4].

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

Проте, можливо, найбільш популярне застосування генетичних алгоритмів - оптимізація багато параметричних функцій. Багато реальних задач можуть бути сформульовані як пошук оптимального значення, де значення - складна функція, що залежить від певних вхідних параметрів. У деяких випадках, потрібно знайти ті значення параметрів, при яких досягається найкраще точне значення функції. В інших випадках, коли точний оптимум не потрібний - рішенням може вважатися будь-яке значення, краще за певну задану величину. У цьому випадку, генетичні алгоритми - часто найбільш прийнятний метод для пошуку "прийнятних" значень. Сила генетичного алгоритму полягає в його здатності маніпулювати одночасно багатьма параметрами, що використовується в сотнях прикладних програм, включаючи проектування літаків, налаштування параметрів алгоритмів і пошуку стійких станів систем нелінійних диференціальних рівнянь [5].

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

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