IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
NonLinearSolver.h
1 // NonLinearSolver.h:
3 // ------------------
4 //
15 
16 #ifndef __IPSDKMATH_NONLINEARSOLVER_H__
17 #define __IPSDKMATH_NONLINEARSOLVER_H__
18 
19 // suppression warnings
20 // warning C4275: non dll-interface class 'boost::noncopyable_::noncopyable' used as base for dll-interface class 'ipsdk::math::NonLinearSolver'
21 // warning C4251: 'ipsdk::math::NonLinearSolver::_optStatus' : class 'ipsdk::math::NonLinearSolver::eOptStatus' needs to have dll-interface to be used by clients of class 'ipsdk::math::NonLinearSolver'
22 #pragma warning (push)
23 #pragma warning (disable : 4275 4251)
24 
27 #include <boost/noncopyable.hpp>
28 
29 namespace ipsdk {
30 namespace math {
31 
34 
35 class IPSDKMATH_API NonLinearSolver : public boost::noncopyable
36 {
37 public:
41  ~NonLinearSolver();
43 
44 // methods
45 public:
49  const ipUInt32 getNbMaxIteration() const;
50  void setNbMaxIteration(const ipUInt32 nbMaxIteration);
52 
54  eOptStatus getStatus() const;
55 
62  OptResult solve(const CostFunctionConstPtr& pCostFunction,
63  const Vector& initParams);
64 
68  ipUInt32 getNbIteration() const;
69 
73  const Vector& getEstimParams() const;
74 
76  void clearResults();
77 
78 protected:
80  static ipInt32 minPackProxy(void* pThis,
81  ipInt32 m, ipInt32 n,
82  ipReal64* x, ipReal64* fvec, ipReal64* fjac,
83  ipInt32 ldfjac, ipInt32 iflag);
84 
85 // attributes
86 protected:
90 
93 
96 
99 
102 
110 
112  std::string _errorMsg;
113 };
114 
117 
118 inline eOptStatus
120 {
121  return _optStatus;
122 }
123 
124 inline const ipUInt32
126 {
127  return _nbMaxIteration;
128 }
129 
130 inline void
132 {
133  _nbMaxIteration = nbMaxIteration;
134 }
135 
138 
139 } // end of namespace math
140 } // end of namespace ipsdk
141 
142 #pragma warning (pop)
143 
144 #endif // __IPSDKMATH_NONLINEARSOLVER_H__
Class implementing a non linear solver based on Levenberg Marquardt algorithm.
Definition: NonLinearSolver.h:35
Definition of import/export macro for library.
boost::numeric::ublas::matrix< ipReal64 > Matrix
matrix type associated to library
Definition: LinearAlgebraTypes.h:48
Class allowing to encapsulate a typed process result associated to a string description.
Definition: ProcessingResult.h:28
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
const ipUInt32 getNbMaxIteration() const
access to maximum number of iteration for optimization process
Definition: NonLinearSolver.h:125
eOptStatus getStatus() const
check whether solve has been done
Definition: NonLinearSolver.h:119
Vector _estimParams
estimated parameters
Definition: NonLinearSolver.h:98
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
eOptStatus _optStatus
status associated to object
Definition: NonLinearSolver.h:92
int32_t ipInt32
Base types definition.
Definition: BaseTypes.h:52
boost::numeric::ublas::vector< ipReal64 > Vector
vector type associated to library
Definition: LinearAlgebraTypes.h:36
#define IPSDKMATH_API
Import/Export macro for library IPSDKMath.
Definition: IPSDKMathExports.h:27
std::string _errorMsg
internal function error reason
Definition: NonLinearSolver.h:112
ipUInt32 _nbMaxIteration
maximum number of iteration for optimization process
Definition: NonLinearSolver.h:89
Vector _wa4
Definition: NonLinearSolver.h:107
Predefined types for optimization framework.
ipUInt32 _nbIteration
number of iterations associated to optimization process
Definition: NonLinearSolver.h:95
void setNbMaxIteration(const ipUInt32 nbMaxIteration)
access to maximum number of iteration for optimization process
Definition: NonLinearSolver.h:131
Vector _funValue
Definition: NonLinearSolver.h:105
boost::shared_ptr< const BaseCostFunction > CostFunctionConstPtr
shared pointer to const cost function
Definition: OptimizationTypes.h:55
CostFunctionConstPtr _pCostFunction
cost function used during optimization process
Definition: NonLinearSolver.h:101
eOptStatus
Definition: OptimizationTypes.h:35
Vector _wa2
Definition: NonLinearSolver.h:106
Matrix _jacValue
Definition: NonLinearSolver.h:108
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53