Spec-Zone.ru › Octave 7

20.2 Минимизаторы

Зачастую полезно найти минимальное значение функции, а не только нули, где она пересекает ось x. fminbnd предназначен для более простого, но очень распространённого случая одномерной функции, где интервал поиска ограничен. Для неограниченной минимизации функции с потенциально многими переменными используйте fminunc или fminsearch. Эти две функции используют разные внутренние алгоритмы, и требуется некоторое знание целевой функции. Для функций, которые могут быть дифференцированы, fminunc подходит. Для функций с разрывами или для которых поиск по градиенту не удастся, используйте fminsearch. См. Оптимизацию для минимизации при наличии функций ограничений. Обратите внимание, что поиск максимумов можно выполнить, просто инвертировав целевую функцию (Fto_max = -Fto_min).

: x = fminbnd (fun, a, b) ¶
: x = fminbnd (fun, a, b, options) ¶
: [x, fval, info, output] = fminbnd (…) ¶

Нахождение точки минимума одномерной функции.

fun — это дескриптор функции, встроенная функция или строка, содержащая имя функции для вычисления.

Начальный интервал задаётся значениями a (левая граница) и b (правая граница). Концы интервала должны быть конечными.

options — структура, задающая дополнительные параметры, которые управляют алгоритмом. В настоящее время fminbnd распознаёт следующие параметры: "Display", "FunValCheck", "MaxFunEvals", "MaxIter", "OutputFcn", "TolX".

"MaxFunEvals" определяет максимальное количество вычислений функции до остановки оптимизации. Значение по умолчанию равно 500. Значение должно быть положительным целым числом.

"MaxIter" определяет максимальное количество итераций алгоритма до остановки оптимизации. Значение по умолчанию равно 500. Значение должно быть положительным целым числом.

"TolX" задаёт толерантность к ошибке при определении решения x. Значение по умолчанию — 1e-4.

Описание других параметров см. в optimset. Для инициализации структуры параметров значениями по умолчанию для fminbnd используйте options = optimset ("fminbnd").

При выходе функция возвращает x, приближённую точку минимума, и fval, значение функции, вычисленное в точке x.

Третий результат info сообщает об успехе алгоритма и может принимать одно из следующих значений:

  • 1 Алгоритм сошёлся к решению.
  • 0 Превышен лимит итераций (либо MaxIter, либо MaxFunEvals).
  • -1 Алгоритм был прерван пользователем OutputFcn.

Примечания по программированию: Поиск минимума ограничен конечным интервалом, заданным a и b. Если у вас есть только одна начальная точка для начала поиска, вам потребуется использовать алгоритм неограниченной минимизации, такой как fminunc или fminsearch. fminbnd внутренне использует стратегию поиска золотого сечения.

См. также: fzero, fminunc, fminsearch, optimset.

: fminunc (fcn, x0) ¶
: fminunc (fcn, x0, options) ¶
: [x, fval, info, output, grad, hess] = fminunc (fcn, …) ¶

Решение задачи неограниченной оптимизации, заданной функцией fcn.

fminunc пытается определить вектор x такой, что fcn (x) является локальным минимумом.

fun — это дескриптор функции, встроенная функция или строка, содержащая имя функции для вычисления. fcn должен принимать вектор (массив), определяющий неизвестные переменные, и возвращать значение целевой функции, необязательно с градиентом.

x0 определяет начальное предположение. Форма x0 сохраняется во всех вызовах fcn, но в противном случае обрабатывается как столбец.

options — структура, задающая дополнительные параметры, которые управляют алгоритмом. В настоящее время fminunc распознаёт следующие параметры: "AutoScaling", "FinDiffType", "FunValCheck", "GradObj", "MaxFunEvals", "MaxIter", "OutputFcn", "TolFun", "TolX", "TypicalX".

Если "AutoScaling" равно "on", переменные будут автоматически масштабированы в соответствии с колонками норм (оценённого) якобиана. В результате "TolFun" становится независимым от масштабирования. По умолчанию этот параметр "off", так как иногда это может привести к непредсказуемым (хотя математически верным) результатам.

Если "GradObj" равно "on", это указывает, что fcn — при вызове с двумя выходными аргументами — также возвращает матрицу якобиана частных производных первого порядка в заданной точке.

"MaxFunEvals" определяет максимальное количество вычислений функции до остановки оптимизации. Значение по умолчанию — 100 * number_of_variables, то есть 100 * length (x0). Значение должно быть положительным целым числом.

"MaxIter" задаёт максимальное количество итераций алгоритма до остановки оптимизации. Значение по умолчанию равно 400. Значение должно быть положительным целым числом.

"TolX" задаёт толерантность к ошибке для неизвестных переменных x, а "TolFun" — толерантность к ошибке для значения целевой функции fval. По умолчанию для обоих параметров значение равно 1e-6.

Для описания других параметров см. optimset.

При возврате x — это положение минимума, а fval содержит значение целевой функции в точке x.

info может принимать одно из следующих значений:

1

Сошёлся к точке решения. Относительная ошибка градиента меньше, чем задано параметром TolFun.

2

Последний относительный размер шага был меньше, чем TolX.

3

Последнее относительное изменение значения функции было меньше, чем TolFun.

0

Превышен лимит итераций — либо максимальное количество итераций алгоритма MaxIter, либо максимальное количество вычислений функции MaxFunEvals.

-1

Алгоритм прерван OutputFcn.

-3

Радиус области доверия стал слишком малым.

Необязательно, fminunc может вернуть структуру со статистикой сходимости (output), градиент вывода (grad) в решении x и приближённую матрицу Гессе (hess) в решении x.

Примечания по применению: Если целевая функция — это одно нелинейное уравнение одной переменной, то использование fminbnd обычно является лучшим выбором.

Используемый fminunc алгоритм — это поиск по градиенту, который зависит от того, является ли целевая функция дифференцируемой. Если функция имеет разрывы, может быть лучше использовать алгоритм без производных, например fminsearch.

См. также: fminbnd, fminsearch, optimset.

END_OF_DOCUMENT_MARKER
: x = fminsearch (fun, x0) ¶
: x = fminsearch (fun, x0, options) ¶
: x = fminsearch (problem) ¶
: [x, fval, exitflag, output] = fminsearch (…) ¶

Найти значение x, минимизирующее многомерную функцию fun.

fun — это функция-обработчик, встроенная функция или строка, содержащая имя функции для оценки.

Поиск начинается с точки x0 и выполняется с использованием алгоритма симплекса Нелдера-Мида (метод, не использующий производные). Этот алгоритм лучше подходит для функций, имеющих разрывы или для которых поиск на основе градиента, такой как fminunc , терпит неудачу.

Параметры поиска задаются в параметре options с помощью функции optimset. В настоящее время fminsearch принимает параметры: "Display", "FunValCheck", "MaxFunEvals", "MaxIter", "OutputFcn", "TolFun", "TolX".

"MaxFunEvals" определяет максимальное количество вычислений функции до остановки оптимизации. Значение по умолчанию равно 200 * number_of_variables, то есть 200 * length (x0). Значение должно быть положительным целым числом.

"MaxIter" определяет максимальное количество итераций алгоритма до остановки оптимизации. Значение по умолчанию равно 200 * number_of_variables, то есть 200 * length (x0). Значение должно быть положительным целым числом.

Для описания других параметров см. optimset. Чтобы инициализировать структуру параметров со значениями по умолчанию для fminsearch , используйте options = optimset ("fminsearch").

fminsearch также может быть вызван с одним аргументом-структурой со следующими полями:

objective

Функция цели.

x0

Начальная точка.

solver

Должно быть установлено в значение "fminsearch".

options

Структура, возвращенная из optimset , или пустая матрица, чтобы указать, что должны использоваться значения по умолчанию.

Поле options необязательно. Все остальные — обязательны.

При выходе функция возвращает x — точку минимума и fval — значение функции в точке минимума.

Третий выходной параметр exitflag сообщает о том, удалось ли алгоритму завершиться, и может принимать одно из следующих значений:

1

если алгоритм сошелся (размер симплекса меньше TolX **И** шаг в значении функции между итерациями меньше TolFun).

0

если превышено максимальное количество итераций или максимальное количество вычислений функции.

-1

если итерация остановлена "OutputFcn".

Четвертый выходной параметр — это структура output , содержащая информацию об алгоритме. Поля в структуре — funcCount , содержащее количество вызовов функции fun, iterations , содержащее количество шагов итерации, algorithm с именем алгоритма поиска (всегда: "Nelder-Mead simplex direct search") и message с сообщением об окончании.

Пример:

fminsearch (@(x) (x(1)-5).^2+(x(2)-8).^4, [0;0])

Примечание: Если вам нужно найти минимум функции одной переменной, вероятно, лучше использовать fminbnd.

См. также: fminbnd, fminunc, optimset.

Функция humps — полезная функция для тестирования функций поиска нуля и экстремумов.

: y = humps (x) ¶
: [x, y] = humps (x) ¶

Вычислить функцию с несколькими локальными минимумами, максимумами и пересечениями нуля.

Выходной параметр y — вычисление рациональной функции:

1200*x^4 - 2880*x^3 + 2036*x^2 - 348*x - 88
 y = - ---------------------------------------------
         200*x^4 - 480*x^3 + 406*x^2 - 138*x + 17

x может быть скаляром, вектором или массивом. Если x опущено, используется диапазон по умолчанию [0:0.05:1].

При вызове с двумя выходными параметрами [x, y], x будет содержать входные значения, а y — результаты вычисления humps.

Примечания по программированию: humps имеет два локальных максимума, расположенных около x = 0,300 и 0,893, локальный минимум около x = 0,637 и нули около x = -0,132 и 1,300. humps — полезная функция для тестирования алгоритмов поиска нулей, локальных минимумов и максимумов.

Попробуйте demo humps , чтобы увидеть график функции humps.

См. также: fzero, fminbnd, fminunc, fminsearch.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v7.2.0/Minimizers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API