35 #ifndef AIMS_OPTIMIZATION_DETERMINISTIC_H
36 #define AIMS_OPTIMIZATION_DETERMINISTIC_H
50 template <
class T,
int D>
55 int maxIter = 100000,
int stability = 1,
56 bool verbose =
false )
58 _maxIter( maxIter ), _stability( stability ),
73 template <
class T,
int D>
inline
79 T eval, new_eval, old_eval, err;
81 old_eval = eval = new_eval = this->_func.eval( p );
82 int iter=0, cntStab = 0, k;
85 for ( k = 0; k < D; k++ )
87 new_eval = this->_func.eval( new_p );
88 if ( new_eval < eval )
94 if ( ( err = fabs( eval - old_eval ) ) < this->_error )
106 <<
" stab=" << cntStab
107 <<
" objective=" << eval
112 ASSERT( iter != _maxIter );
114 while ( cntStab != _stability );
virtual ~DetermOptimizer()
AimsVector< T, D > doit(const AimsVector< T, D > &pinit, const AimsVector< T, D > &deltaP)
DetermOptimizer(const ObjectiveFunc< T, D > &func, T error, int maxIter=100000, int stability=1, bool verbose=false)
double UniformRandom()
Uniform distribution between 0.0 and 1.0.