Можно построить различные меры прогресса во время выполнения решателя. Установите пару "имя-значение" PlotFcn
в optimoptions
и задайте одну или несколько функций построения графика для решателя, чтобы зайти в каждую итерацию. Передайте указатель на функцию или cell-массив указателей на функцию.
Существует множество предопределенных доступных функций построения графика. См.:
Описание опции PlotFcn
на странице ссылки на функцию решателя
Optimization app > Options > Plot functions
Можно также использовать пользовательски записанную функцию построения графика. Запишите файл функции с помощью той же структуры в качестве выходной функции. Для получения дополнительной информации об этой структуре смотрите Синтаксис Выходной функции.
Этот пример показывает, как использовать функцию построения графика, чтобы просмотреть прогресс алгоритма внутренней точки fmincon
. Проблема взята из Начала работы, Решают Ограниченную Нелинейную проблему, Основанную на решателе. Первая часть примера показывает, как запустить оптимизацию с помощью приложения Оптимизации. Вторая часть показывает, как запустить оптимизацию из командной строки.
Приложение Оптимизации предупреждает, что будет удалено в будущем релизе.
Запишите нелинейную цель и ограничительные функции, включая производные:
function [f g H] = rosenboth(x) % ROSENBOTH returns both the value y of Rosenbrock's function % and also the value g of its gradient and H the Hessian. f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2; if nargout > 1 g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1)); 200*(x(2)-x(1)^2)]; if nargout > 2 H = [1200*x(1)^2-400*x(2)+2, -400*x(1); -400*x(1), 200]; end end
Сохраните этот файл как rosenboth.m
.
function [c,ceq,gc,gceq] = unitdisk2(x) % UNITDISK2 returns the value of the constraint % function for the disk of radius 1 centered at % [0 0]. It also returns the gradient. c = x(1)^2 + x(2)^2 - 1; ceq = [ ]; if nargout > 2 gc = [2*x(1);2*x(2)]; gceq = []; end
Сохраните этот файл как unitdisk2.m
.
Запустите приложение Оптимизации путем ввода optimtool
в командной строке.
Настройте оптимизацию:
Выберите решатель fmincon
.
Выберите алгоритм Interior point
.
Установите целевую функцию на @rosenboth
.
Выберите Gradient supplied
для производной целевой функции.
Установите стартовую точку на [0 0]
.
Установите нелинейную ограничительную функцию на @unitdisk2
.
Выберите Gradient supplied
для нелинейных ограничительных производных.
Ваша панель Problem Setup and Results должна совпадать со следующей фигурой.
Выберите три функции построения графика в панели Options: Current point, Function value и First order optimality.
Нажмите кнопку Start под Run solver and view results.
Вывод появляется можно следующим образом в приложении Оптимизации.
Кроме того, следующие три графика появляются в отдельном окне.
График “Текущей точки” графически показывает минимизатору [0.786,0.618]
, о котором сообщают как Final point в панели Run solver and view results. Этот график обновления в каждой итерации, показывая промежуточное звено выполняет итерации.
“Текущее Значение функции” график показывает значение целевой функции во всех итерациях. Этот график является почти монотонным, показывая, что fmincon
уменьшает целевую функцию почти при каждой итерации.
“Оптимальность Первого порядка” график показывает меру по оптимальности первого порядка во всех итерациях.
Запишите нелинейную цель и ограничительные функции, включая производные, как показано в Выполнении Оптимизации Используя Приложение Оптимизации.
Создайте структуру опций, которая включает вызов этих трех функций построения графика:
options = optimoptions(@fmincon,'Algorithm','interior-point',... 'SpecifyObjectiveGradient',true,'SpecifyConstraintGradient',true,'PlotFcn',{@optimplotx,... @optimplotfval,@optimplotfirstorderopt});
Вызов fmincon
:
x = fmincon(@rosenboth,[0 0],[],[],[],[],[],[],... @unitdisk2,options)
fmincon
дает следующий вывод:
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the default value of the function tolerance, and constraints are satisfied to within the default value of the constraint tolerance. x = 0.7864 0.6177
fmincon
также отображает эти три функции построения графика, показанные в конце Выполнения Оптимизации Используя Приложение Оптимизации.