Поиск и опрос

Определение поиска

В patternsearch, a search является алгоритмом, который запускается перед опросом. Поиск пытается найти лучшую точку, чем текущая точка. (Лучше означает один с более низким значением целевой функции.) Если поиск находит лучшую точку, лучшая точка становится текущей точкой, и никакого опроса на этой итерации не выполняется. Если поиск не находит лучшую точку, patternsearch выполняет опрос.

По умолчанию, patternsearch не использует поиск. Для поиска см. раздел «Как использовать метод поиска».

pattersearch рисунка With a Search Method содержит график прямого поиска, включая использование метода поиска.

pattersearch с методом поиска

Iteration limit применяется ко всем встроенным методам поиска, кроме методов опроса. Если для метода поиска выбран предел итерации, поиск активируется до достижения предела итерации. После этого, patternsearch останавливает поиск и только опрашивает.

Как использовать метод поиска

Как использовать поиск в patternsearch:

  • В задаче Optimize Live Editor выберите функцию поиска в Specify solver options > Algorithm settings > Search function.

  • В командной строке создайте опции с методом поиска с помощью optimoptions. Для примера, чтобы использовать латинский поиск гиперкуба:

    opts = optimoptions('patternsearch','SearchFcn',@searchlhs);

    Для получения дополнительной информации, включая список всех встроенных методов поиска, обратитесь к patternsearch function страницы с описанием и раздел Search Options ссылки на опции.

Можно написать свой собственный метод поиска. Используйте синтаксис, описанный в Structure of the Search Function. Чтобы использовать свой метод поиска в поиске шаблона, передайте его указатель на функцию как Custom Function (SearchFcn) опция.

Типы поиска

  • Методы опроса - Вы можете использовать любой метод опроса в качестве алгоритма поиска. patternsearch проводит один шаг опроса как поиск. Чтобы этот тип поиска был полезным, ваш тип поиска должен отличаться от вашего типа опроса. (patternsearch не выполняет поиск, если выбранный метод поиска совпадает с типом опроса.) Поэтому используйте поиск MADS с опросом GSS или GPS или поиск GSS или GPS с опросом MADS.

  • fminsearch, также называемый Нельдер-Мид - fminsearch предназначен только для задач без ограничений. fminsearch выполняется до его естественных критериев остановки; это не делает всего лишь одного шага. Поэтому используйте fminsearch всего за одну итерацию. Это значение по умолчанию. Для изменения настроек см. раздел «Опции поиска».

  • gaga выполняется до его естественных критериев остановки; это не делает всего лишь одного шага. Поэтому используйте ga всего за одну итерацию. Это значение по умолчанию. Для изменения настроек см. раздел «Опции поиска».

  • Латинский поиск гиперкуба - Описан в опциях поиска. По умолчанию поиск 15 n точках, где n - количество переменных, и выполняется только во время первой итерации. Для изменения настроек см. раздел «Опции поиска».

Когда использовать поиск

Существует две основные причины использовать метод поиска:

Методы поиска для увеличения скорости

Как правило, вы не знаете заранее, ускоряет ли метод поиска оптимизацию или нет. Так что попробуйте метод поиска, когда:

  • Вы выполняете повторную оптимизацию для аналогичных задач или для той же задачи с различными параметрами.

  • Можно экспериментировать с различными методами поиска, чтобы найти меньшее время решения.

Поиск не всегда ускоряет оптимизацию. Для одного примера, где это так, смотрите Поиск и Опрос.

Методы поиска для лучших решений

Поскольку методы поиска выполняются перед методами опроса, использование поиска может быть эквивалентно выбору другой начальной точки для оптимизации. Этот комментарий относится к Nelder-Mead, ga, и латинские методы поиска гиперкуба, все из которых по умолчанию запуск один раз в начале оптимизации. ga и латинские гиперкубы являются стохастическими и могут искать через несколько областей притяжения.

Похожие темы