diff --git a/minimize.cc b/minimize.cc index b85d1cff85fab6a455fce7b4cf65d4a3b08e862c..29c2c6ca80958c908293d869393c203545881f51 100644 --- a/minimize.cc +++ b/minimize.cc @@ -193,7 +193,7 @@ ReturnMatrix hessian(const ColumnVector& x, const EvalFunction& func, float h,in } -void minimize(ColumnVector& x, const EvalFunction& func){ +void fminsearch(ColumnVector& x, const EvalFunction& func){ //perform generic function minimization without gradient info int n=x.Nrows(), maxiter=200*n,iter=0; int func_evals=0; diff --git a/minimize.h b/minimize.h index a56c58baaed2eaef0cc572f1dbbfa0a9aeab153e..918fc10d928f3e5f15e53196d730458d4712b3cf 100644 --- a/minimize.h +++ b/minimize.h @@ -42,7 +42,7 @@ public: }; class EvalFunction -{//Function where gradient is not analytic (or you are too lazy to work it out) +{//Function where gradient is not analytic (or you are too lazy to work it out) (required for fminsearch) public: EvalFunction(){} virtual float evaluate(const ColumnVector& x) const = 0; //evaluate the function @@ -56,11 +56,12 @@ private: class gEvalFunction : public EvalFunction {//Function where gradient is analytic (required for scg) + public: gEvalFunction() : EvalFunction(){} // evaluate is inherited from EvalFunction - // virtual float evaluate(const ColumnVector& x) const = 0; //evaluate the function - virtual ColumnVector g_evaluate(const ColumnVector& x) const = 0; //evaluate the gradient + + virtual ReturnMatrix g_evaluate(const ColumnVector& x) const = 0; //evaluate the gradient virtual ~gEvalFunction(){}; private: @@ -80,8 +81,8 @@ ReturnMatrix gradient(const ColumnVector& x, const EvalFunction& func,float h,in ReturnMatrix hessian(const ColumnVector& x, const EvalFunction& func,float h,int errorord=4);// finite diff hessian +void fminsearch(ColumnVector& x, const EvalFunction& func); -void minimize(ColumnVector& x, const EvalFunction& func); void scg(ColumnVector& x, const gEvalFunction& func); }