Чи визначає визначення точки зупинки генетичного алгоритму мета алгоритму?


11

Вікіпедія визначає точку закінчення GA для цього:

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

Тепер, якщо він закінчується, коли досягнуто задовільного рівня фітнесу, і ви визначаєте цей рівень фітнесу, чому б ви просто не змогли створити «ідеальний» геном спочатку самостійно, оскільки ви вже знаєте характеристики цього досконалого геному?

Я здогадуюсь, тут я трохи розгублений. Я подумав, що мета GA полягає в тому, щоб постійно розвиватися і показувати нам, можливо, ще краще рішення, ніж те, про що ми думали, і наша фітнес-функція була лише чимось, що допомагало їй на цьому шляху, а не тим, що ми ставимо на п'єдестал як закінчення " досконала "держава. Це не руйнує точку?


1
Напевно, краще підходить для теорії.
Карл Білефельдт

Навіть не дивлячись на те, що там було :)
slandau

1
@Karl: Питання щодо естетики трохи м'яке. Ймовірно, там буде закрито.
Роберт Харві

2
Дякую, @Robert. Тепер я пам’ятаю, чому я не відвідую там. Я думаю, це одне з тих питань "між тріщинами".
Карл Білефельдт

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

Відповіді:


17

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

Наприклад, одна загальна забавна програма GA полягає у створенні анімації, яка може ефективно переміщувати віртуальну істоту. Неважко сказати, чи істота рухається з певною швидкістю відносно прямою лінією. Це ваша фітнес-функція. Набагато складніше сказати точну послідовність «м’язових» рухів, щоб домогтися цього.


3
Слід також зазначити, що ви часто зупиняєтеся через x покоління, оскільки GA може закінчитися крутитися нескінченно, оскільки він «застрягає» на локальних мінімумах / максимумах, що не задовольняє ваш оптимальний показник фітнесу. Це може статися, якщо ваші функції вибору / кросовера / мутації недостатньо налаштовані для встановленої проблеми.
Стівен Еверс

@Karl я пам'ятаю генетичний алгоритм вирішення Ендрю Кук, щоб виробляти перший Malbolge «Hello World» і потім втратив краще рішення по електронній пошті йому stackoverflow.com/questions/5338627 / ...
pageman

8

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

  • ви знайшли кролика швидше, ніж X, або
  • приріст покращення протягом n поколінь опустився нижче деякого порогу, або
  • ви розводили кроликів через м покоління

5

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

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

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


3

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

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


2

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

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

Ось типовий приклад з мого власного досвіду: Розробляючи одну з перших систем голосового набору, нам важко було знайти алгоритм, щоб зіставити розмовне ім’я зі збереженою копією цього імені. Нам сказали, що 95% точності вибору одного імені з 25 було достатньо. У нас був збережений корпус людей, який говорив по 25 імен по 10 разів кожен.

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

Тепер у нас був останній крок - якою має бути цінність цих ваг?

Ми створили 1000 випадкових наборів ваг і випробували їх на корпусі. Ми викинули 500, які виконували найгірше. Для решти 500 ми копіювали кожен і в одному з них випадковим чином піднімали або опускали одну з ваг.

Ми повторювали цей процес на комп’ютері близько двох тижнів, поки він нарешті не встановив набір ваг, який відповідав критерію точності 95%. Тоді ми тестували його на даних, не в корпусі. Це було приблизно 92% точно. Таким чином, ми пробігли довше, щоб досягти 98% точності на корпусі, і цей набір ваг дав 95% точності щодо даних, що не знаходяться в корпусі.

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


0

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

Solution in iteration n-6: 600
Solution in iteration n-5: 800
Solution in iteration n-4: 768
Solution in iteration n-3: 780 
Solution in iteration n-2: 778
Solution in iteration n-1: 778.23
Solution in iteration n: 780.18
Solution in iteration n+1: 780.1815

У цьому прикладі, якщо ваш фіксований допуск становив 0,01, тоді (n + 1) говорить вам припинити, оскільки abs (розчин (n + 1) -розчин (n)) <0,01.

Поновивши, ось тоді, коли ваш алгоритм може сказати: це не стане кращим!


0

Для швидкої відповіді на ваше головне питання: Існує велика різниця між тим, що знати, що ви хочете досягти, і знати, як туди дістатися.

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

З допомогою GA / EA ви виявите, що це нормальна поведінка, що ви дуже швидко знаходите 95% + оптимальну відповідь, але звужуючи останні 5%, це коштує дорожче. Отже, теорія полягає в тому, що ви визначаєте прийнятний оптимум для досягнення найкращого результату за найменший проміжок часу. Оскільки вартість пошуку, скажімо, верхнього 1%, може перевищувати його переваги над 5%, ви визначаєте свій прийнятний оптимум.

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


0

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

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

Тим НЕ менше, нові програми були еволюціонували з нуля, але тільки не в С. кілька нетривіальних програм , написаних в Malbolge езотеричного мови програмування мають всі (наскільки мені відомо) еволюціонували, не написано. Мова є занадто складною для використання програмістом і надто складною для ефективного виведення програм лише з логіки, тому більшість програм, написаних на ній, виробляються генетичними алгоритмами. Фітнес-функція, як правило, відстань редагування до очікуваного результату.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.