Як генерувати сусідів у алгоритмі сходження на гірку?


9

Скелелазіння на гору здається дуже потужним інструментом для оптимізації. Однак як генерувати "сусідів" рішення завжди мене спантеличує.

Наприклад, я оптимізую рішення . Тут знаходиться в діапазоні , знаходиться в діапазоні , знаходиться в діапазоні . Який найкращий спосіб створити «сусідів»? Тут я не можу вибрати "розмір кроку", тому що розмір кроку 1 величезний до , але дуже незначний для .(x1,x2,x3)x1(0,0.1)x2(0,100)x3(0,1000000)x1x3

Який найкращий загальний спосіб генерувати "сусідів" за алгоритмами сходження на гірку?

Відповіді:


3

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

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


2

Найпростіше (і найбезпечніше) - перепраметризувати свою проблему так, щоб усі параметри мали порівнянний діапазон, скажімо [0,1].

Крім того, ви можете використовувати різний розмір кроку для кожного параметра.

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