Conjugate-gradient method for unconstrained optimization. More...
#include <shark/Algorithms/GradientDescent/CG.h>
 Inheritance diagram for shark::CG< SearchPointType >:
 Inheritance diagram for shark::CG< SearchPointType >:| Public Member Functions | |
| std::string | name () const | 
| returns the name of the object | |
| void | read (InArchive &archive) | 
| Read the component from the supplied archive. | |
| void | write (OutArchive &archive) const | 
| Write the component to the supplied archive. | |
|  Public Member Functions inherited from shark::AbstractLineSearchOptimizer< SearchPointType > | |
| AbstractLineSearchOptimizer () | |
| void | init (ObjectiveFunctionType const &objectiveFunction, SearchPointType const &startingPoint) | 
| void | step (ObjectiveFunctionType const &objectiveFunction) | 
| LineSearch< SearchPointType > const & | lineSearch () const | 
| LineSearch< SearchPointType > & | lineSearch () | 
| SearchPointType const & | derivative () const | 
| Returns the derivative at the current point. Can be used for stopping criteria. | |
|  Public Member Functions inherited from shark::AbstractSingleObjectiveOptimizer< SearchPointType > | |
| std::size_t | numInitPoints () const | 
| By default most single objective optimizers only require a single point. | |
| virtual void | init (ObjectiveFunctionType const &function, std::vector< SearchPointType > const &initPoints) | 
| Initialize the optimizer for the supplied objective function using a set of initialisation points. | |
| virtual void | init (ObjectiveFunctionType const &function, SearchPointType const &startingPoint)=0 | 
| initializes the optimizer using a predefined starting point | |
| virtual const SolutionType & | solution () const | 
| returns the current solution of the optimizer | |
|  Public Member Functions inherited from shark::AbstractOptimizer< PointType, ResultT, SolutionTypeT > | |
| const Features & | features () const | 
| virtual void | updateFeatures () | 
| bool | requiresValue () const | 
| bool | requiresFirstDerivative () const | 
| bool | requiresSecondDerivative () const | 
| bool | canSolveConstrained () const | 
| bool | requiresClosestFeasible () const | 
| virtual | ~AbstractOptimizer () | 
| virtual void | init (ObjectiveFunctionType const &function) | 
| Initialize the optimizer for the supplied objective function. | |
| virtual void | init (ObjectiveFunctionType const &function, std::vector< SearchPointType > const &initPoints)=0 | 
| Initialize the optimizer for the supplied objective function using a set of initialisation points. | |
| virtual void | step (ObjectiveFunctionType const &function)=0 | 
| Carry out one step of the optimizer for the supplied objective function. | |
|  Public Member Functions inherited from shark::INameable | |
| virtual | ~INameable () | 
|  Public Member Functions inherited from shark::ISerializable | |
| virtual | ~ISerializable () | 
| Virtual d'tor. | |
| void | load (InArchive &archive, unsigned int version) | 
| Versioned loading of components, calls read(...). | |
| void | save (OutArchive &archive, unsigned int version) const | 
| Versioned storing of components, calls write(...). | |
| BOOST_SERIALIZATION_SPLIT_MEMBER () | |
| Protected Member Functions | |
| void | initModel () | 
| Initializes the internal model. | |
| void | computeSearchDirection (ObjectiveFunctionType const &objectiveFunction) | 
| Updates the Model and computes the next search direction. | |
|  Protected Member Functions inherited from shark::AbstractOptimizer< PointType, ResultT, SolutionTypeT > | |
| void | checkFeatures (ObjectiveFunctionType const &objectiveFunction) | 
| Convenience function that checks whether the features of the supplied objective function match with the required features of the optimizer. | |
| Protected Attributes | |
| unsigned | m_count | 
|  Protected Attributes inherited from shark::AbstractLineSearchOptimizer< SearchPointType > | |
| LineSearch< SearchPointType > | m_linesearch | 
| used line search method. | |
| std::size_t | m_dimension | 
| number of parameters | |
| double | m_initialStepLength | 
| Initial step length to begin with the line search. | |
| SearchPointType | m_derivative | 
| gradient of m_best.point | |
| SearchPointType | m_searchDirection | 
| search direction of next step | |
| SearchPointType | m_lastPoint | 
| previous point | |
| SearchPointType | m_lastDerivative | 
| gradient of the previous point | |
| double | m_lastValue | 
| value of the previous point | |
|  Protected Attributes inherited from shark::AbstractSingleObjectiveOptimizer< SearchPointType > | |
| SolutionType | m_best | 
| Current solution of the optimizer. | |
|  Protected Attributes inherited from shark::AbstractOptimizer< PointType, ResultT, SolutionTypeT > | |
| Features | m_features | 
Conjugate-gradient method for unconstrained optimization.
The next CG search Direction p_{k+1} is computed using the current gradient g_k by \( p_{k+1} = \beta p_k - g_k \) where beta can be computed using different formulas well known is the Fletcher - Reeves method: \( \beta = ||g_k||2/ ||g_{k-1}||^2 \) we use \( \beta = ||g_k||^2 /<p_k,g_k-g_{k-1}> \) which is formula 5.49 in Nocedal, Wright - Numerical Optimization. This formula has better numerical properties than Fletcher-Reeves for non-quadratic functions while ensuring a descent direction.
We implement restarting to ensure quadratic convergence near the optimum as well as numerical stability
| typedef AbstractLineSearchOptimizer<SearchPointType>::ObjectiveFunctionType shark::CG< SearchPointType >::ObjectiveFunctionType | 
| 
 | protectedvirtual | 
Updates the Model and computes the next search direction.
After a step was performed, this method is called to compute the next search direction. This usually involves updating the internal model using the new and old step information. Afterwards m_searchDirection should contain the next search direction.
Implements shark::AbstractLineSearchOptimizer< SearchPointType >.
| 
 | protectedvirtual | 
Initializes the internal model.
Line Search Methods use a Model to search for the next search direction. The model is initialized during init()
Implements shark::AbstractLineSearchOptimizer< SearchPointType >.
| 
 | inlinevirtual | 
returns the name of the object
Reimplemented from shark::INameable.
| 
 | virtual | 
Read the component from the supplied archive.
| [in,out] | archive | The archive to read from. | 
Reimplemented from shark::AbstractLineSearchOptimizer< SearchPointType >.
| 
 | virtual | 
Write the component to the supplied archive.
| [in,out] | archive | The archive to write to. | 
Reimplemented from shark::AbstractLineSearchOptimizer< SearchPointType >.
| 
 | protected |