DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Застосування генетичних алгоритмів для вирішення задачі комівояжера

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Дослідження комп'ютерних систем штучного інтелекту
Група:
КСМм-1
Коротко про документ

Про що ця робота

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

У роботі розглядаються

  • Генетичні алгоритми
  • Задача комівояжера
  • Штучний інтелект
  • Оператори схрещування
  • Оператори мутації
  • Комбінаторна оптимізація
  • Програмування мовою C

Зміст і розділи

  1. Теоретичні відомості
  2. Представлення і оператори
  3. Бінарне представлення
  4. Класичне схрещування
  5. Класична мутація
  6. Виконання роботи
  7. Висновок
Для кого:Студенти технічних спеціальностей та викладачі комп'ютерних дисциплін
Викладачі:Не вказано

Ключові поняття

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

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи №3(4) з курсу „ Дослідження комп'ютерних систем штучного інтелекту ” Тема: Застосування генетичних алгоритмів для вирішення задачі комівояжера Львів – 2007 Мета: ознайомитись з методами вирішення задач за допомогою генетичних алгоритмів та використати даний алгоритм для вирішення задачі комівояжера. Теоретичні відомості Задача комівояжера у стандартній постановці виглядає так: є набір міст, потрібно відвідати найкоротшим шляхом всі міста, але кожне місто відвідується лише раз і повернутись до відправного пункту. Формально TSP можна вирішити наступним чином: Даними є: натуральні числа n ≥ 3 i маршрут C =(cij), де cij - ітераційний підрахунок, що циклічно змінюється. EMBED Equation.3 TSP є відносно старою проблемою. Вперше вона була сформульована Ейлером в 1759 році (але під іншою назвою), якій хотів розв”язати проблему шахового коня. Правильне розв”язання повинно містити шлях шахового коня по всіх 64 шахових клітинах, так щоб на кожній клітині поля кінь побував лише один раз. Термін ‘travelling salesman’ вперше був застосований в 1932 році у німецькій книзі, присвяченій вирішенню задачі комівояжера. Після багатьох років, проблема комівояжера дочекалась на багато способів розв”язання. Існує декілька причин цього. По перше TSP є дуже простим в описуванні, але важким у розв’язанні. Не знаємо жодного алгоритму, що розв’язує це завдання миттєво в баготовимірному часі. Цей недолік алгоритму, що розв’язує завдання багатовимірному часі є характерним для проблем, відомих під назвою NP – повних, для яких проблема комівояжера є класичним прикладом. По друге, TSP має застосування в багатьох різних проблемах, що зачіпають різного роду шляхи і пункти. По трете, по мірі отримання багато інформації на тему проблеми комівояжера, згодом її можна використовувати як свого роду тестову задачу, нові комбанаторні методи часто тестуються на TSP, з метою переконання в їх приктичній здатності. І зрештою велика кількість проблем, в яких маємо відповідно до завдань штучного інтелекту, призводять до знаходження найкращої permutacji n елементів. Представлення і оператори Відомо багато різних способів представлення здатних до розв”язування проблеми комівояжера за допомогою генетичних алгоритмів. Деякі з них як бінарі рішення чи маршрутне рішення використовують бінарні значення для представлення даного шляху. Хоча таке рішення є стандартом в світі генетичних алгоритмів, однак для задачі комівояжера проблемою є те, що оператори схрещуваня і мутації можуть давати погані наслідки. Для того мусимо залишити сформульовані оператори виправлень. Найкращим природнім способом представлення шляху є вигляд представлення. В цьому представленні n міст, які мають розмістити пункти відвідувань в n-елементний ланцюжок таким чином, що якщо і-те місто знаходиться в j-ій позиції за рахунком, це означає, що і-те місто відвідане як j-те. Таке представлення дозволяє сформулювати велику кількість різних операторів схрещування і мутації. Можна стверджувати, що на даний час більшість генетичних алгоритмів, що заходять приблизне розв”язання задачі комівояжера вживають таке представлення. Вагомою причиною для того є інтуїтивна простота і природність представлення, а також добрі наслідки, отримані при його застосуванні Бінарне представлення В бінарному представленні задачі комівояжера для n-міст, кожне місто закодовано у ланцюжок довжиною [log2 n] бітів. Одиночне рішення зрештою є ланцюжком, довжиною n*[log2 n] бітів. Наприклад, при шістьох містах кожне місто представлено ланцюжком довжиною у 3 біти Шлях 1-2-3-4-5-6 представлятиметься: 000 001 010 011 100 101 Зауважимо, що існують 3-бітові ланцюжки. З них не кодують жодного міста: 110 і 111 Класичне схрещування (Classical Crossover) Оператор класичного схрещування був запропонований Голандом (1975). Нижще розглянемо для прикладу два шляхи, кожен з яких складаться з шістьох міст 000 001 010 011 100 101 101 100 011 010 001 000 Потім випадковим чином вибираємо точку схрещування, я якій кожен з ланцюжків буде поділено на дві частини. Припустимо наприклад, що точка схрещування вибрана між 9 та 10 бітом, тобто 000 001 010 | 011 100 101 101 100 011 | 010 001 000 З’єднавши дві різні частини кожного з ланцюжків, отримуємо нащадків 000 001 010 010 001 000 101 100 011 011 100 101 Які не представляють виправляючих шляхів. Щоб змінити створених нащадків потребуємо певного роду корегуючі алгоритми(repair algorithm). Загалом алгоритм має за мету трансформацію особин, що не належать до простору пошуків в особини, які до неї належать Класична мутація (Classical Mutation) Оператор класичної мутації також був запропонований Голандом, Neguje він один або декілька бітів особини до правдоподібної мутації, яка є наближеною до нуля. Наприклад розірвемо поновлений ланцюг, який представляє шлях 1-2-3-4-5-6: 000 001 010 011 100 101 Припустимо, що 1 та 2 біт були вибрані для мутації. Вибрані біти поміняємо на протилежні. В наслідок цього отримуємо ланцюг: 110 001 010 011 100 101 Який знов не представляє власний шлях. Згодом знов треба врахувати в скеровуючому алгоритмі. Виконання роботи void FindMinWay(int level) { int other,prevP; for(int i=0;i<size;i++) { int j=0; other=1; while ((j<level)&& other) { if(matTmp[j]==i) other=0; j++; }; if (other) { matTmp[level]=i; if (level==0){LengthTmp=0;} else { prevP=matTmp[level-1]; LengthTmp=LengthTmp+mat[prevP][i]; }; level++; if(level<size)FindMinWay(level); if ((level==size)&&(LengthTmp<=LengthMin)) { if(LengthTmp == LengthMin) {amount++;} else {LengthMin = LengthTmp; amount = 1;}; for(int k=0;k<size;k++)matMin[amount][k]=matTmp[k]; }; if (level==size) { printf( "Pointers:"); for (int z = 0; z < size; z++) printf( "%d ",matTmp[z]); printf("TmpLength is %d\n",LengthTmp); } ; level--; if (level!=0)LengthTmp=LengthTmp-mat[prevP][i]; }; }; } Висновок: в даній лабораторній роботі я ознайомився з рішенням задач класифікації методом генетичних алгоритмів. Написав програму по рішенню задачі комівояжера з використанням генетичних алгоритмів.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!