Find the x value from a specific iteration of fmincon

조회 수: 13 (최근 30일)
boureghda mohammed
boureghda mohammed 2016년 12월 5일
편집: Massimo Zanetti 2016년 12월 13일
How can I extract the the value of x at the iteration 5 when f(x)= 0.300877 after the optimization procedure.
Max Line search Directional First-order
Iter F-count f(x) constraint steplength derivative optimality Procedure
0 3 1 -1
1 9 0.953127 -0.9375 0.125 -2 12.5
2 16 0.808446 -0.8601 0.0625 -2.41 12.4
3 21 0.462347 -0.836 0.25 -12.5 5.15
4 24 0.340677 -0.7969 1 -4.07 0.811
5 27 0.300877 -0.7193 1 -0.912 3.72
6 30 0.261949 -0.6783 1 -1.07 3.02
7 33 0.164971 -0.4972 1 -0.908 2.29
8 36 0.110766 -0.3427 1 -0.833 2

채택된 답변

Massimo Zanetti
Massimo Zanetti 2016년 12월 5일
편집: Massimo Zanetti 2016년 12월 13일
From the help page about Output Functions Output Functions you can extract this way to save iterates of the solver. Assume you want to minimize the function f(x1,x2) = 4*x1^2 + 2*x2^2, then:
  1. Define your problem by nesting functions into one main function:
function [x fval history] = myproblem(x0)
history = [];
options = optimset('OutputFcn', @myoutput);
[x fval] = fminsearch(@objfun, x0,options);
function stop = myoutput(x,optimvalues,state);
stop = false;
if isequal(state,'iter')
history = [history; x];
end
end
function z = objfun(x)
z = 4*x(1)^2+2*x(2)^2;
end
end
  1. Trigger the solver (with one starting value x0) and retrieve all iterates the solver has computed in the matrix history
x0 = [1,2];
[x,val,history] = myproblem(x0);
Inspect matrix history, each row is the k-th iterate. The same procedure works for fmincon.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver-Based Nonlinear Optimization에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by