Каков наилучший способ инициализировать симплекс для использования в симплексном поиске Нелдера-Мида из пользовательской вершины «догадки»?
Выбор начального симплекса в алгоритме оптимизации Нелдера-Мида
Ответы (2)
Я не уверен, что существует наилучший способ выбора начального симплекса в методе Нелдера-Мида, но в обычной практике делается следующее.
Построение начального симплекса S
получается путем создания n+1
вершин x0,..,xn
вокруг того, что вы называете вершиной "угадывания" пользователя xin
в N
мерном пространстве. Самый частый выбор это
x0=xin
а затем генерируются оставшиеся n
вершин, так что
xj=x0+hj*ej
где ej
— единичный вектор j
-й координатной оси в R^n
, а hj
— размер шага в направлении ej
.
hj = 0.05 if (x0)j is non-zero
hj = 0.00025 if (x0)j=0
где (x0)j j-я компонента x0. Обратите внимание, что это выбор в подпрограмме Matlab fminsearch, основанной на схеме Нелдера-Мида.
Вы можете найти дополнительную информацию в
Я думаю, что не существует общего правила для наилучшего определения начального симплекса оптимизации Нелдера-Мида, потому что для этого требовалось хотя бы смутное знание поверхности отклика.
Однако может быть разумным установить точки таким образом, чтобы симплекс покрывал практически весь возможный диапазон. Алгоритм Нелдера-Мида автоматически сократит симплекс и приблизит его к оптимуму. Практическое преимущество этой политики заключается в том, что вы получите более полное представление о функции отклика.
Мы провели несколько тестов с HillStormer(http://www.berkutec.com). Эта программа позволяет протестировать эти политики на тестовых функциях, и мы обнаружили, что эта программа работает довольно хорошо.
Пожалуйста, помните, что первая симплекс-операция всегда является отражением. Если исходный симплекс покрывает весь разрешенный диапазон, то отражение обязательно даст точку за пределами. Но HillStormer позволяет использовать линейные ограничения и позволяет избежать этой проблемы.
Вы можете найти дополнительную информацию в системной справке HillStormer.
Б. Кюне