Spec-Zone.ru › Octave 6

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/v6.4.0/Minimizers.html

Spec-Zone.ru

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