Выйдите из флагов и выходных сообщений

Выйдите из флагов

Когда решатель оптимизации выполняет свою задачу, он устанавливает exit flag. Выходной флаг является целым числом, которое является кодом по причине, решатель остановил свои итерации. В целом:

  • Положительные выходные флаги соответствуют успешным результатам.

  • Отрицательные выходные флаги соответствуют неудачным результатам.

  • Нулевой выходной флаг соответствует решателю, останавливаемому путем превышения предела итерации или предела на количестве функциональных оценок (см. Итерации и Функциональные количества, и также смотрите Допуски и Критерий остановки).

Таблица решателя выходные параметры в разделе ссылки на функцию решателя приводит значение выходных флагов каждого решателя.

Примечание

Выйдите флаги являются весьма ненадежными руководствами по качеству решения. Много других факторов, таких как настройки допуска, могут влиять, является ли решение удовлетворительным для вас. Вы ответственны за решение, дает ли решатель удовлетворительный ответ. Иногда отрицательный выходной флаг не соответствует “плохому” решению. Точно так же иногда положительный выходной флаг не соответствует “хорошему” решению.

Вы получаете выходной флаг путем вызова решателя с exitflag синтаксис. Этот синтаксис зависит от решателя. Для получения дополнительной информации смотрите страницы ссылки на функцию решателя. Например, для fsolve, синтаксис вызова, чтобы получить выходной флаг

[x,fval,exitflag] = fsolve(...)

Следующий пример использует этот синтаксис. Предположим, что вы хотите решить систему нелинейных уравнений

2x1x2=ex1x1+2x2=ex2.

Запишите эти уравнения как анонимную функцию, которая дает нулевой вектор в решении:

myfcn = @(x)[2*x(1) - x(2) - exp(-x(1));
      -x(1) + 2*x(2) - exp(-x(2))];

Вызовите fsolve с exitflag синтаксис в начальной точке [-5 - 5]:

[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

xfinal =
    0.5671    0.5671

fval =
  1.0e-06 *
   -0.4059
   -0.4059

exitflag =
     1

В таблице для fsolve exitflag, вы находите что выходное флаговое значение 1 означает, что “Функция сходилась к решению x.” Другими словами, fsolve отчеты myfcn почти нуль в x= [0.5671 0.5671]   .

Выходные сообщения

Каждый решатель выпускает сообщение к командному окну MATLAB® в конце его итераций. Это сообщение объясняет кратко почему остановленный решатель. Сообщение может предоставить больше подробную информацию, чем выходной флаг.

Много примеров в этой документации показывают выходные сообщения. Например, смотрите, Минимизируют Функцию Розенброка в Командной строке или Шаг 3: Вызовите fminunc использование опций.. Пример в предыдущем разделе, Выходных Флагах, показывает следующее выходное сообщение:

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

Это сообщение более информативно, чем выходной флаг. Сообщение указывает, что градиент релевантен. Сообщение также утверждает, что функциональный допуск управляет, как около 0 вектор значений функции должен быть для fsolve расценить решение, как завершено.

Расширенные выходные сообщения

Некоторые решатели имеют выходные сообщения, которые содержат ссылки для получения дополнительной информации. Существует два типа ссылок:

  • Ссылки на слова или фразы. Если вы щелкаете по такой ссылке, окно открывается, который отображает определение слова или дает другую информацию. Новое окно может содержать ссылки на документацию Браузера документации для более подробной информации.

  • Ссылка как последняя линия отображения, говоря <stopping criteria details>. Если вы щелкаете по этой ссылке, MATLAB отображает больше детали о причине остановленный решатель.

fminunc решатель улучшил выходные сообщения:

opts = optimoptions(@fminunc,'Algorithm','quasi-newton'); % 'trust-region' needs gradient
[xfinal fval exitflag] = fminunc(@sin,0,opts)

Это дает к следующим результатам:

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

  • <stopping criteria details> ссылка распечатывает следующее к командной строке MATLAB:

    Optimization completed: The first-order optimality measure, 0.000000e+00, is less 
    than options.OptimalityTolerance = 1.000000e-06.
  • Другие ссылки поднимают окно справки с определениями слова. Например, нажатие на Local minimum found ссылка открывает следующее окно:

    Нажатие на first-order optimality measure ссылка расширителя поднимает определение меры по оптимальности первого порядка для fminunc:

    Ссылка расширителя является способом получить больше информации в том же окне. Нажатие на first-order optimality measure ссылка расширителя снова закрывает определение.

  • Другие ссылки открывают Средство просмотра Справки.

Опции выходного сообщения

Установите Display опция, чтобы управлять внешним видом обоих выходных сообщений и итеративного отображения. Для получения дополнительной информации смотрите Итеративное Отображение. Следующая таблица показывает эффект различных настроек Display опция.

Значение параметра отображенияВыведите к командному окну
Выходное сообщениеИтеративное отображение
'none', или синонимичный 'off''none''none'
'final' (значение по умолчанию для большинства решателей)Значение по умолчанию'none'
'final-detailed'Подробный'none'
'iter'Значение по умолчаниюДа
'iter-detailed'ПодробныйДа
'notify'Значение по умолчанию, только если exitflag  ≤ 0'none'
'notify-detailed'Подробный, только если exitflag  ≤ 0'none'

Например,

opts = optimoptions(@fminunc,'Display','iter-detailed','Algorithm','quasi-newton');
[xfinal fval] = fminunc(@cos,1,opts);

урожаи следующее отображение:

Похожие темы