UcSolve: Difference between revisions
(Created page with "==Purpose== Solve unconstrained nonlinear optimization problems with simple bounds on the variables. ''ucSolve ''solves problems of the form <math> \begin{array}{cccccc} \mi...") |
No edit summary |
||
| Line 1: | Line 1: | ||
[[Category:Solvers]] | |||
{{cleanup|Clean this article.}} | |||
==Purpose== | ==Purpose== | ||
Revision as of 07:24, 11 July 2011
{{#switch: | left =
{{#switch:{{#if: | {{{smallimage}}} | }} | none =| #default =
}} {{#if:{{#if: | {{{smallimageright}}} | }} | {{#ifeq:{{#if: | {{{smallimageright}}} | }}|none | | }} }}{{
#switch:left | left =| #default = }}
{{#if:{{#if:
| {{{smallimage}}}
|
}}
| {{#if:
| {{{smallimage}}}
|
}}
| [[File:{{#switch:caution
| critical = Ambox speedy deletion.png
| important = Ambox deletion.png
| warning = Ambox content.png
| caution = Cleanup.png
| move = Ambox move.png
| protection = Ambox protection.png
| notice
| #default = Cleanup.png
}} | {{#switch:left
| left = 20x20px
| #default = 40x40px
}} |link=|alt=]]
}}{{#switch:left
| left =
| #default = | {{#if:
| {{{smalltext}}}
| Cleanup is needed
}} | {{#switch:left
| left = {{#if:
| {{{smallimageright}}}
|
}}
| #default = {{#if:
}} | {{{smallimageright}}}
|
}} |
| #default =
{{#switch: | none =| #default =
}}{{#if: | {{#ifeq:|none
|| }} }}
{{
#switch: | left =| #default = }}
{{#if:
|
| [[File:{{#switch:caution
| critical = Ambox speedy deletion.png
| important = Ambox deletion.png
| warning = Ambox content.png
| caution = Cleanup.png
| move = Ambox move.png
| protection = Ambox protection.png
| notice
| #default = Cleanup.png
}} | {{#switch:
| left = 20x20px
| #default = 40x40px
}} |link=|alt=]]
}}{{#switch:
| left =
| #default = | Cleanup is needed Clean this article. |
{{#switch:
| left =| #default = |
}}
Purpose
Solve unconstrained nonlinear optimization problems with simple bounds on the variables.
ucSolve solves problems of the form
where Failed to parse (unknown function "\MATHSET"): {\displaystyle x,x_{L},x_{U}\in \MATHSET{R} ^{n}}
.
Calling Syntax
Result = ucSolve(Prob, varargin)
Description of Inputs
| Prob | Problem description structure. The following fields are used: | |
| x_L | Lower bounds on the variables. | |
| x_U | Upper bounds on the variables. | |
| x_0 | Starting point. | |
| FUNCS.f | Name of m-file computing the objective function f (x). | |
| FUNCS.g | Name of m-file computing the gradient vector g(x). | |
| FUNCS.H | Name of m-file computing the Hessian matrix H (x). | |
| f_Low | Lower bound on function value. | |
| Solver.Alg | Solver algorithm to be run: | |
| 0: Gives default, either Newton or BFGS. | ||
| 1: Newton with subspace minimization, using SVD. | ||
| 2: Safeguarded BFGS with inverse Hessian updates (standard). | ||
| 3: Safeguarded BFGS with Hessian updates. | ||
| 4: Safeguarded DFP with inverse Hessian updates. | ||
| 5: Safeguarded DFP with Hessian updates. | ||
| 6: Fletcher-Reeves CG. | ||
| 7: Polak-Ribiere CG. | ||
| 8: Fletcher conjugate descent CG-method. | ||
| Solver.Method | Method used to solve equation system: | |
| 0: SVD (default). | ||
| 1: LU-decomposition. | ||
| 2: LU-decomposition with pivoting. | ||
| 3: Matlab built in QR. | ||
| 4: Matlab inversion. | ||
| 5: Explicit inverse. | ||
| Solver.Method | Restart or not for C-G method: | |
| 0: Use restart in CG-method each n:th step. | ||
| 1: Use restart in CG-method each n:th step. | ||
| LineParam | Structure with line search parameters, see routine LineSearch and Table 140. | |
| optParam | Structure with special fields for optimization parameters, see Table 141. | |
| Fields used are: eps absf, eps f, eps g, eps x, eps Rank, MaxIter, wait, size x, xTol, size f, LineSearch, LineAlg, xTol, IterPrint and QN InitMatrix. | ||
| PriLevOpt | Print level. | |
| varargin | Other parameters directly sent to low level routines. | |
Description of Outputs
| Result | Structure with result from optimization. The following fields are changed: | |
| x_k | Optimal point. | |
| f_k | Function value at optimum. | |
| g_k | Gradient value at optimum. | |
| H_k | Hessian value at optimum. | |
| B_k | Quasi-Newton approximation of the Hessian at optimum. | |
| v_k | Lagrange multipliers. | |
| x_0 | Starting point. | |
| f_0 | Function value at start. | |
| xState | State of each variable, described in Table 150. | |
| Iter | Number of iterations. | |
| ExitFlag | 0 if convergence to local min. Otherwise errors. | |
| Inform | Binary code telling type of convergence: | |
| 1: Iteration points are close. | ||
| 2: Projected gradient small. | ||
| 4: Relative function value reduction low for LowIts iterations. | ||
| 101: Maximum number of iterations reached. | ||
| 102: Function value below given estimate. | ||
| 104: Convergence to a saddle point. | ||
| Solver | Solver used. | |
| SolverAlgorithm | Solver algorithm used. | |
| Prob | Problem structure used. | |
Description
The solver ucSolve includes several of the most popular search step methods for unconstrained optimization. The search step methods included in ucSolve are: the Newton method, the quasi-Newton BFGS and DFP methods, the Fletcher-Reeves and Polak-Ribiere conjugate-gradient method, and the Fletcher conjugate descent method. The quasi-Newton methods may either update the inverse Hessian (standard) or the Hessian itself. The Newton method and the quasi-Newton methods updating the Hessian are using a subspace minimization technique to handle rank problems, see Lindstr¨om \[53\]. The quasi-Newton algorithms also use safe guarding techniques to avoid rank problem in the updated matrix. The line search algorithm in the routine LineSearch is a modified version of an algorithm by Fletcher \[20\]. Bound constraints are treated as described in Gill, Murray and Wright \[28\]. The accuracy in the line search is critical for the performance of quasi-Newton BFGS and DFP methods and for the CG methods. If the accuracy parameter Prob.LineParam.sigma is set to the default value 0.9, ucSolve changes it automatically according to:
| Prob.Solver.Alg | Prob.LineParam.sigma |
| 4,5 (DFP) | 0.2 |
| 6,7,8 (CG) | 0.01 |
M-files Used
ResultDef.m, LineSearch.m, iniSolve.m, tomSolve.m, endSolve.m