Как генерировать соседей в алгоритме восхождения на гору?

9

Скалолазание кажется очень мощным инструментом для оптимизации. Однако то, как генерировать «соседей» решения, всегда озадачивает меня.

Например, я оптимизирую решение . Здесь находится в диапазоне , находится в диапазоне , находится в диапазоне . Какой лучший способ создать "соседей"? Я действительно не могу выбрать «размер шага» здесь, потому что размер шага 1 огромен для , но очень незначителен для .(Икс1,Икс2,Икс3)Икс1(0,0,1)Икс2(0,100)Икс3(0,1000000)Икс1Икс3

Каков наилучший общий способ генерировать «соседей» в алгоритмах восхождения на холм?

вендетта
источник

Ответы:

3

Решение Винсента поможет вам преодолеть первое препятствие. Вы можете все еще задаться вопросом, как выбрать размер шага, даже если все размеры имеют одинаковый диапазон. В этом случае это помогает понять поведение вашей функции, поэтому вы можете выбрать подходящее значение. Другой способ - адаптивно установить размер шага в зависимости от градиента (слегка ступить, если функция сильно меняется).

В этой статье также могут быть некоторые интересные идеи: Об алгоритме восхождения на холм с адаптивным размером шага: на пути к алгоритму оптимизации черного ящика без параметров управления

Эмре
источник
2

Самый простой (и самый безопасный) - это репараметризовать вашу проблему так, чтобы все параметры имели сопоставимый диапазон, скажем, [0,1].

Кроме того, вы можете использовать разные размеры шагов для каждого параметра.


источник