Коли генетичні алгоритми є хорошим вибором для оптимізації?


20

Генетичні алгоритми є однією з форм методу оптимізації. Часто стохастичний градієнтний спуск та його похідні є найкращим вибором для оптимізації функцій, але генетичні алгоритми все ще іноді застосовуються. Наприклад, антена космічного корабля ST5 NASA була створена за допомогою генетичного алгоритму:

Антена ST5

Коли методи генетичної оптимізації є кращим вибором, ніж більш поширені методи градієнтного спуску?


7
+1 для прикладу, я знайшов оригінальний папір: alglobus.net/NASAwork/papers/Space2006Antenna.pdf
Tim

Відповіді:


19

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

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

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

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

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

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


2

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


Гаразд, щоб не допустити, але чи можете ви пояснити, де я помиляюся?
manu190466

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

0

Найкраще в якому сенсі?

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

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

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

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

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

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


Основна суть цього аргументу, здається, полягає в тому, що генетичні алгоритми є оптимізаторами чорного поля. Але є багато оптимізаторів чорних коробок. Чому це може бути краще, ніж інші варіанти? Крім того, я не думаю, що це дійсно так, що GA можуть легко впоратися з обмеженнями. Наприклад, якщо функція не визначена, крім 3D-простору в 4D світі, звичайно, ванільний GA не вдасться.
Кліф АВ

@CliffAB Насправді я нічого про це не сказав, а може бути, навіть навпаки. У GA ви маєте багато контролю над обчисленням ядра, сам GA - це послідовність кроків і легке впорядкування. Визначаючи функції витрат, ви можете обробляти будь-що у функції, навіть зовнішні обмеження, на які ви можете запитувати. Мої основні аргументи: вирішуйте багато проблем, вам не варто перейматися сумісністю з рамкою (вам потрібно просто повернути витрати), придумайте гідне рішення в реальному житті в більшості ділових випадків, навіть якщо це не завжди найкращий
Джозеф Твій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.