Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 2.03 KB

README.md

File metadata and controls

37 lines (27 loc) · 2.03 KB

fmindescent

Matlab based optimizer framework based on the steepest descent method. The algorithm can handle linear equality, linear in-equality, non-linear in-equality, and non-linear equality constraints. The constraints are added to the objective function in an external penalization manner. Here, two different methods can be applied. The first method uses a merit function approach, where a global penalty parameters is used to make infeasible constraints expensive for the objective function. Alternatively, the Augmented Lagrange method is also available. This method updates the penalty parameters/Lagrange multipliers in each iteration, see [1] for details. The final Lagrange multipliers are available for the user to analyze. The descent direction can be determined using four different methods. • Conjugate gradient method • Broyden–Fletcher–Goldfarb–Shanno (BFGS) • Davidon–Fletcher–Powell (DFP) • Method of Feasible Directions (MFD) The current implementation of the MFD algorithm relies on the glpk linear solver used in Octave. In future releases, the user should be able to choose among other well-known linear solvers. In each iteration, the step size is determined by use of the golden section method.

[1] Nocedal J, Wright SJ: Numerical Optimization, second edition, ISBN-10:0-387-303003-0, p 514.

Usage: see also examples.m

myProblem = fmindescent(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon); % Default options are applied

myProblem = fmindescent(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options); % Input options structure

myProblem = fmindescent(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon ,'MaxIterations',100); % Input/modify individual options

[x,fval,exitflag,output] = myProblem.solve(); % Solve problem

Available options:

Initialize values to default

options = fmindescent.options();

Algorithm: 'CG' Display: 'off' ConstraintMethod: ‘AL’ LineSearch: ‘Golden’ InfeasibilityPenalization: 1000 MaxFunctionEvaluations: 1000 MaxIterations: 1000 OptimalityTolerance: 1.0000e-06 StepTolerance: 1.0000e-10