1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * @file GBCDSolver.h
- * @author Erik Rodner
- * @date 01/26/2012
- */
- #ifndef _NICE_GBCDSOLVERINCLUDE
- #define _NICE_GBCDSOLVERINCLUDE
- #include "PartialGenericMatrix.h"
- namespace NICE {
-
- /** @class GBCDSolver
- * Greedy Block Coordinate Descent Algorithm
- *
- * Details are included in the paper:
- * "Greedy Block Coordinate Descent for Large Scale Gaussian Process Regression"
- * by Liefeng Bo and Cristian Sminchisescu, 2008
- *
- * Their code can be found at: http://www.cs.washington.edu/homes/lfb/software/GBCD.htm
- * We re-implemented their approach using the description of the algorithm in the paper.
- *
- * @author Erik Rodner
- */
- class GBCDSolver
- {
- protected:
- bool verbose;
- uint maxIterations;
- //! known as kappa in the paper
- uint randomSetSize;
- //! known as M in the paper
- uint stepComponents;
- double minDelta;
- //! detailed time analysis
- bool timeAnalysis;
- void greedyApproximation ( const PartialGenericMatrix & gm, const Vector & b, const Vector & grad,
- PartialGenericMatrix::SetType & B, Vector & deltaAlpha );
- public:
- /** simple constructor */
- GBCDSolver( uint randomSetSize = 60, uint stepComponents = 500, bool verbose = false, uint maxIterations = 10000, double minDelta = 1e-7 );
-
- /** simple destructor */
- virtual ~GBCDSolver();
-
- /**
- * @brief Solve a linear system given a PartialGenericMatrix interface
- *
- * @param gm PartialGenericMatrix interface providing sub-matrix multiplications
- * @param b right hand side of the system
- * @param x initial and final estimate
- *
- * @return method specific status information
- */
- virtual int solveLin ( const PartialGenericMatrix & gm, const Vector & b, Vector & x );
-
- /**
- * @brief set time analysis flag, this needs additional time and is only
- * important if you want to generate some time plots
- *
- * @param timeAnalysis
- */
- void setTimeAnalysis(bool timeAnalysis);
-
- };
- }
- #endif
|