KrisLibrary  1.0.0
Minimization.h
1 #ifndef OPTIMIZATION_MINIMIZATION_H
2 #define OPTIMIZATION_MINIMIZATION_H
3 
4 #include <KrisLibrary/math/matrix.h>
7 //#include "Manifold.h"
8 #include "Newton.h"
9 
10 namespace Optimization {
11 using namespace Math;
12 
49 {
51 
53  ConvergenceResult SolveGD(Real alpha,int& maxIters);
54  void StepGD(Real alpha);
55 
57  ConvergenceResult SolveSD(int& maxIters);
58 
60  ConvergenceResult SolveCG(int& maxIters);
61 
63  ConvergenceResult SolveNewton(int& maxIters);
64 
67  ConvergenceResult SolveQuasiNewton_Ident(int& maxIters);
69  ConvergenceResult SolveQuasiNewton_Diff(Real dx,int& maxIters);
71  ConvergenceResult SolveQuasiNewton(int& maxIters);
72 
74  ConvergenceResult SolveLM(int& maxIters,Real lambda0=1,Real lambdaScale=10);
75 
83  ConvergenceResult LineMinimizationStep(const Vector& dx,Real& alpha0);
84  //TODO: different types of line minimization
85  //ConvergenceResult LineMinimization_Bisection(const Vector& dx,Real& alpha0);
86  //ConvergenceResult LineMinimization_Parabolic(const Vector& dx,Real& alpha0);
87 
89  Vector x;
90  Real tolx,tolf,tolgrad;
91 
92  //output options
93  int verbose;
94  std::vector<Vector>* S;
95 
96  //temporary
97  Real fx;
98  Vector grad,dx;
99  Matrix H;
100 };
101 
107 {
109 
111  ConvergenceResult SolveSD(int& maxIters);
112 
114  ConvergenceResult SolveNewton(int& maxIters);
115 
118  ConvergenceResult SolveQuasiNewton_Ident(int& maxIters);
120  ConvergenceResult SolveQuasiNewton_Diff(Real dx,int& maxIters);
122  ConvergenceResult SolveQuasiNewton(int& maxIters);
123 
125  ConvergenceResult LineMinimizationStep(Vector& dx,Real& alpha0);
126 
128  Vector bmin,bmax;
129  Vector x;
130  Real tolx,tolf,tolgrad;
131 
132  //output options
133  int verbose;
134  std::vector<Vector>* S;
135 
136  //temporary
137  Real fx;
138  Vector grad;
139  Matrix H;
140  std::vector<bool> activeSet;
141 };
142 
160 {
161  //ConstrainedMinimizationProblem(ScalarFieldFunction* f,ImplicitManifold*M);
163 
165  ConvergenceResult SolveGD(int& maxIters);
167  ConvergenceResult StepGD();
168 
170  ConvergenceResult SolveNewton(int& maxIters);
172  ConvergenceResult StepNewton();
173 
176  ConvergenceResult StepTR(Real R);
177 
179  void NullspaceProjection(const Vector& x,Vector& dx);
181  ConvergenceResult LineMinimizationStep(const Vector& dx,Real& alpha0);
183  bool CheckPoint(const Vector& x) const;
185  bool SolveFeasiblePoint(Vector& x,int maxIters,ConvergenceResult* res=NULL);
186 
188  VectorFieldFunction* C,*D;
189  Vector bmin,bmax;
190  Vector x;
191  Real tolx,tolf,tolgrad,tolc;
192  bool sparse;
193 
194  //output options
195  int verbose;
196  std::vector<Vector>* S;
197 
198  //temporary
199  Real fx;
200  Vector grad;
201  Matrix H;
202  ConstrainedNewtonRoot rootSolver;
203 };
204 
205 } //namespace Optimization
206 
207 #endif
Namespace for classes and functions in the Optimization package.
Definition: CSet.h:7
Abstract base classes for function interfaces.
Numerical root-solving routines.
A function from R^n to R^m.
Definition: function.h:134
Same as MinimizationProblem but with nonlinear constraints C(x)=0 and D(x)<=0, bound constraints bmin...
Definition: Minimization.h:159
A function from R^n to R.
Definition: function.h:97
A globally convergent Newton&#39;s method with inequality constraints c(x) >= 0.
Definition: Newton.h:59
An iterative solution to minimize f over multidimensional x. May only find a local minimum...
Definition: Minimization.h:48
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
A bound-constrained MinimizationProblem. Uses an active-set method to determine the components of the...
Definition: Minimization.h:106