Solves a multi-variable unconstrainted optimization problem
xopt = fminunc(f,x0) xopt = fminunc(f,x0,options) [xopt,fopt] = fminunc(.....) [xopt,fopt,exitflag]= fminunc(.....) [xopt,fopt,exitflag,output]= fminunc(.....) [xopt,fopt,exitflag,output,gradient]=fminunc(.....) [xopt,fopt,exitflag,output,gradient,hessian]=fminunc(.....)
a function, representing the objective function of the problem
a vector of doubles, containing the starting of variables.
a list, containing the option for user to specify. See below for details.
a vector of doubles, the computed solution of the optimization problem.
a scalar of double, the function value at x.
a scalar of integer, containing the flag which denotes the reason for termination of algorithm. See below for details.
a structure, containing the information about the optimization. See below for details.
a vector of doubles, containing the the gradient of the solution.
a matrix of doubles, containing the the hessian of the solution.
Search the minimum of an unconstrained optimization problem specified by : Find the minimum of f(x) such that
The routine calls Ipopt for solving the Un-constrained Optimization problem, Ipopt is a library written in C++.
The options allows the user to set various parameters of the Optimization problem. It should be defined as type "list" and contains the following fields.
The exitflag allows to know the status of the optimization which is given back by Ipopt.
For more details on exitflag see the ipopt documentation, go to http://www.coin-or.org/Ipopt/documentation/
The output data structure contains detailed informations about the optimization process. It has type "struct" and contains the following fields.
//Find x in R^2 such that it minimizes the Rosenbrock function //f = 100*(x2 - x1^2)^2 + (1-x1)^2 //Objective function to be minimised function y=f(x) y= 100*(x(2) - x(1)^2)^2 + (1-x(1))^2; endfunction //Starting point x0=[-1,2]; //Gradient of objective function function y=fGrad(x) y= [-400*x(1)*x(2) + 400*x(1)^3 + 2*x(1)-2, 200*(x(2)-x(1)^2)]; endfunction //Hessian of Objective Function function y=fHess(x) y= [1200*x(1)^2- 400*x(2) + 2, -400*x(1);-400*x(1), 200 ]; endfunction //Options options=list("MaxIter", [1500], "CpuTime", [500], "Gradient", fGrad, "Hessian", fHess); //Calling Ipopt [xopt,fopt,exitflag,output,gradient,hessian]=fminunc(f,x0,options) |
//The below problem is an unbounded problem: //Find x in R^2 such that the below function is minimum //f = - x1^2 - x2^2 //Objective function to be minimised function y=f(x) y= -x(1)^2 - x(2)^2; endfunction //Starting point x0=[2,1]; //Gradient of objective function function y=fGrad(x) y= [-2*x(1),-2*x(2)]; endfunction //Hessian of Objective Function function y=fHess(x) y= [-2,0;0,-2]; endfunction //Options options=list("MaxIter", [1500], "CpuTime", [500], "Gradient", fGrad, "Hessian", fHess); //Calling Ipopt [xopt,fopt,exitflag,output,gradient,hessian]=fminunc(f,x0,options) |