queso-0.55.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
QUESO::GslOptimizer Class Reference

A base class for handling optimisation of scalar functions. More...

#include <GslOptimizer.h>

Inheritance diagram for QUESO::GslOptimizer:
Inheritance graph
[legend]
Collaboration diagram for QUESO::GslOptimizer:
Collaboration graph
[legend]

Public Types

enum  SolverType {
  FLETCHER_REEVES_CG, POLAK_RIBIERE_CG, BFGS, BFGS2,
  STEEPEST_DESCENT, NELDER_MEAD, NELDER_MEAD2, NELDER_MEAD2_RAND
}
 

Public Member Functions

 GslOptimizer (const BaseScalarFunction< GslVector, GslMatrix > &objectiveFunction)
 Constructs an object that will maximize a scalar function. More...
 
virtual ~GslOptimizer ()
 Destructor. More...
 
virtual void minimize (OptimizerMonitor *monitor=NULL)
 Minimize the objective function, starting at m_initialPoint. More...
 
const BaseScalarFunction
< GslVector, GslMatrix > & 
objectiveFunction () const
 Returns the objective function. More...
 
void setInitialPoint (const GslVector &intialPoint)
 Set the point at which the optimization starts. More...
 
const GslVectorminimizer () const
 Return the point that minimizes the objective function. More...
 
void set_solver_type (SolverType solver)
 
void set_solver_type (std::string &solver)
 
SolverType string_to_enum (std::string &solver)
 
void set_step_size (const GslVector &step_size)
 Sets step size used in gradient-free solvers. More...
 
void set_step_size (double step_size)
 Sets step size used in gradient-based solvers. More...
 
void set_line_tol (double tol)
 Set GSL line minimization tolerance. More...
 
- Public Member Functions inherited from QUESO::BaseOptimizer
 BaseOptimizer ()
 Default constructor. More...
 
virtual ~BaseOptimizer ()
 Destructor. More...
 
unsigned int getMaxIterations () const
 Returns the maximum number of iterations the optimizer will do. More...
 
double getTolerance () const
 Returns the tolerance used to test for an extremum in the optimizer. More...
 
double getFiniteDifferenceStepSize () const
 Returns the step size used in the finite difference formula. More...
 
void setMaxIterations (unsigned int maxIterations)
 Sets the maximum number of iterations to be used by the optimizer. More...
 
void setTolerance (double tolerance)
 Sets the tolerance the optimizer will use to test for an extremum. More...
 
void setFiniteDifferenceStepSize (double h)
 Sets the step to use in the finite difference derivative. More...
 

Private Member Functions

bool solver_needs_gradient (SolverType solver)
 Helper function. More...
 
void minimize_with_gradient (unsigned int dim, OptimizerMonitor *monitor)
 
void minimize_no_gradient (unsigned int dim, OptimizerMonitor *monitor)
 

Private Attributes

const BaseScalarFunction
< GslVector, GslMatrix > & 
m_objectiveFunction
 
GslVectorm_initialPoint
 
GslVectorm_minimizer
 
SolverType m_solver_type
 
GslVector m_fstep_size
 For use in gradient-free algorithms. More...
 
double m_fdfstep_size
 For use in gradient-based algorithms. More...
 
double m_line_tol
 Line minimization tolerance in gradient-based algorithms. More...
 

Additional Inherited Members

- Protected Attributes inherited from QUESO::BaseOptimizer
unsigned int m_maxIterations
 
double m_tolerance
 
double m_finiteDifferenceStepSize
 

Detailed Description

A base class for handling optimisation of scalar functions.

WRITE DOCS HERE

Definition at line 50 of file GslOptimizer.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

QUESO::GslOptimizer::GslOptimizer ( const BaseScalarFunction< GslVector, GslMatrix > &  objectiveFunction)

Constructs an object that will maximize a scalar function.

The function objectiveFunction is the function that will be maximized.

Definition at line 159 of file GslOptimizer.C.

References QUESO::GslVector::cwSet(), m_fstep_size, and m_minimizer.

161  : BaseOptimizer(),
163  m_initialPoint(new GslVector(objectiveFunction.domainSet().
164  vectorSpace().zeroVector())),
165  m_minimizer(new GslVector(this->m_objectiveFunction.domainSet().
166  vectorSpace().zeroVector())),
168  m_fstep_size(this->m_objectiveFunction.domainSet().vectorSpace().zeroVector()),
169  m_fdfstep_size(1.0),
170  m_line_tol(0.1)
171 {
172  // We initialize the minimizer to GSL_NAN just in case the optimization fails
173  m_minimizer->cwSet(GSL_NAN);
174 
175  // Set to documented default value.
176  m_fstep_size.cwSet(0.1);
177 }
double m_line_tol
Line minimization tolerance in gradient-based algorithms.
Definition: GslOptimizer.h:134
SolverType m_solver_type
Definition: GslOptimizer.h:125
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
const BaseScalarFunction< GslVector, GslMatrix > & objectiveFunction() const
Returns the objective function.
Definition: GslOptimizer.C:213
void cwSet(double value)
Component-wise sets all values to this with value.
Definition: GslVector.C:326
BaseOptimizer()
Default constructor.
Definition: Optimizer.C:29
double m_fdfstep_size
For use in gradient-based algorithms.
Definition: GslOptimizer.h:131
GslVector * m_initialPoint
Definition: GslOptimizer.h:122
GslVector * m_minimizer
Definition: GslOptimizer.h:123
GslVector m_fstep_size
For use in gradient-free algorithms.
Definition: GslOptimizer.h:128
QUESO::GslOptimizer::~GslOptimizer ( )
virtual

Destructor.

Definition at line 179 of file GslOptimizer.C.

References m_initialPoint.

180 {
181  delete this->m_initialPoint;
182 }
GslVector * m_initialPoint
Definition: GslOptimizer.h:122

Member Function Documentation

void QUESO::GslOptimizer::minimize ( OptimizerMonitor monitor = NULL)
virtual

Minimize the objective function, starting at m_initialPoint.

m_initialPoint is handled in the derived class

Implements QUESO::BaseOptimizer.

Definition at line 184 of file GslOptimizer.C.

References dim, m_initialPoint, m_objectiveFunction, m_solver_type, minimize_no_gradient(), minimize_with_gradient(), queso_error, and solver_needs_gradient().

Referenced by QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings().

184  {
185 
186  // First check that initial guess is reasonable
187  if (!this->m_objectiveFunction.domainSet().contains(*(this->m_initialPoint)))
188  {
189  if( m_objectiveFunction.domainSet().env().fullRank() == 0 )
190  {
191  std::cerr << "Minimization was given initial point outside of domain"
192  << std::endl;
193  }
194  queso_error();
195  }
196 
197  unsigned int dim = this->m_objectiveFunction.domainSet().vectorSpace().
198  zeroVector().sizeLocal();
199 
201  {
202  this->minimize_with_gradient( dim, monitor );
203  }
204  else
205  {
206  this->minimize_no_gradient( dim, monitor );
207  }
208 
209  return;
210 }
SolverType m_solver_type
Definition: GslOptimizer.h:125
int dim
Definition: ann2fig.cpp:81
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
bool solver_needs_gradient(SolverType solver)
Helper function.
Definition: GslOptimizer.C:237
void minimize_with_gradient(unsigned int dim, OptimizerMonitor *monitor)
Definition: GslOptimizer.C:268
GslVector * m_initialPoint
Definition: GslOptimizer.h:122
#define queso_error()
Definition: asserts.h:53
void minimize_no_gradient(unsigned int dim, OptimizerMonitor *monitor)
Definition: GslOptimizer.C:365
void QUESO::GslOptimizer::minimize_no_gradient ( unsigned int  dim,
OptimizerMonitor monitor 
)
private

Definition at line 365 of file GslOptimizer.C.

References QUESO::OptimizerMonitor::append(), BFGS, BFGS2, QUESO::c_evaluate(), dim, FLETCHER_REEVES_CG, QUESO::BaseOptimizer::getMaxIterations(), QUESO::BaseOptimizer::getTolerance(), m_fstep_size, m_initialPoint, m_objectiveFunction, m_solver_type, NELDER_MEAD, NELDER_MEAD2, NELDER_MEAD2_RAND, POLAK_RIBIERE_CG, queso_error, and STEEPEST_DESCENT.

Referenced by minimize().

366  {
367  // Set initial point
368  gsl_vector* x = gsl_vector_alloc(dim);
369  for (unsigned int i = 0; i < dim; i++) {
370  gsl_vector_set(x, i, (*m_initialPoint)[i]);
371  }
372 
373  // Tell GSL which solver we're using
374  const gsl_multimin_fminimizer_type* type = NULL;
375 
376  switch(m_solver_type)
377  {
378  case(NELDER_MEAD):
379  type = gsl_multimin_fminimizer_nmsimplex;
380  break;
381  case(NELDER_MEAD2):
382  type = gsl_multimin_fminimizer_nmsimplex2;
383  break;
384  case(NELDER_MEAD2_RAND):
385  type = gsl_multimin_fminimizer_nmsimplex2rand;
386  break;
387  case(FLETCHER_REEVES_CG):
388  case(POLAK_RIBIERE_CG):
389  case(BFGS):
390  case(BFGS2):
391  case(STEEPEST_DESCENT):
392  default:
393  // Wat?!
394  queso_error();
395  }
396 
397  // Init solver
398  gsl_multimin_fminimizer* solver =
399  gsl_multimin_fminimizer_alloc(type, dim);
400 
401  // Point GSL at the right functions
402  gsl_multimin_function minusLogPosterior;
403  minusLogPosterior.n = dim;
404  minusLogPosterior.f = &c_evaluate;
405  minusLogPosterior.params = (void *)(this);
406 
407  // Needed for these gradient free algorithms.
408  gsl_vector* step_size = gsl_vector_alloc(dim);
409 
410  for(unsigned int i = 0; i < dim; i++) {
411  gsl_vector_set(step_size, i, m_fstep_size[i]);
412  }
413 
414  gsl_multimin_fminimizer_set(solver, &minusLogPosterior, x, step_size);
415 
416  int status;
417  size_t iter = 0;
418  double size = 0.0;
419 
420  do
421  {
422  iter++;
423  status = gsl_multimin_fminimizer_iterate(solver);
424 
425  if (status) {
426  if( m_objectiveFunction.domainSet().env().fullRank() == 0 )
427  {
428  std::cerr << "Error while GSL does optimisation. "
429  << "See below for GSL error type." << std::endl;
430  std::cerr << "Gsl error: " << gsl_strerror(status) << std::endl;
431  }
432  break;
433  }
434 
435  size = gsl_multimin_fminimizer_size(solver);
436 
437  status = gsl_multimin_test_size (size, this->getTolerance());
438 
439  if(monitor)
440  {
441  gsl_vector* x = gsl_multimin_fminimizer_x(solver);
442  std::vector<double> x_min(dim);
443  for( unsigned int i = 0; i < dim; i++)
444  x_min[i] = gsl_vector_get(x,i);
445 
446  double f = gsl_multimin_fminimizer_minimum(solver);
447 
448  monitor->append( x_min, f, size );
449  }
450 
451  }
452 
453  while ((status == GSL_CONTINUE) && (iter < this->getMaxIterations()));
454 
455  for (unsigned int i = 0; i < dim; i++) {
456  (*m_minimizer)[i] = gsl_vector_get(solver->x, i);
457  }
458 
459  // We're being good human beings and cleaning up the memory we allocated
460  gsl_vector_free(step_size);
461  gsl_multimin_fminimizer_free(solver);
462  gsl_vector_free(x);
463 
464  return;
465  }
SolverType m_solver_type
Definition: GslOptimizer.h:125
int dim
Definition: ann2fig.cpp:81
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
GslVector * m_initialPoint
Definition: GslOptimizer.h:122
unsigned int getMaxIterations() const
Returns the maximum number of iterations the optimizer will do.
Definition: Optimizer.C:41
#define queso_error()
Definition: asserts.h:53
double getTolerance() const
Returns the tolerance used to test for an extremum in the optimizer.
Definition: Optimizer.C:47
GslVector m_fstep_size
For use in gradient-free algorithms.
Definition: GslOptimizer.h:128
double c_evaluate(const gsl_vector *x, void *context)
Definition: GslOptimizer.C:43
void QUESO::GslOptimizer::minimize_with_gradient ( unsigned int  dim,
OptimizerMonitor monitor 
)
private

Definition at line 268 of file GslOptimizer.C.

References QUESO::OptimizerMonitor::append(), BFGS, BFGS2, QUESO::c_evaluate(), QUESO::c_evaluate_derivative(), QUESO::c_evaluate_with_derivative(), dim, FLETCHER_REEVES_CG, QUESO::BaseOptimizer::getMaxIterations(), m_fdfstep_size, m_initialPoint, m_line_tol, m_objectiveFunction, m_solver_type, NELDER_MEAD, NELDER_MEAD2, NELDER_MEAD2_RAND, POLAK_RIBIERE_CG, queso_error, and STEEPEST_DESCENT.

Referenced by minimize().

269  {
270  // Set initial point
271  gsl_vector * x = gsl_vector_alloc(dim);
272  for (unsigned int i = 0; i < dim; i++) {
273  gsl_vector_set(x, i, (*m_initialPoint)[i]);
274  }
275 
276  // Tell GSL which solver we're using
277  const gsl_multimin_fdfminimizer_type* type = NULL;
278 
279  switch(m_solver_type)
280  {
281  case(FLETCHER_REEVES_CG):
282  type = gsl_multimin_fdfminimizer_conjugate_fr;
283  break;
284  case(POLAK_RIBIERE_CG):
285  type = gsl_multimin_fdfminimizer_conjugate_pr;
286  break;
287  case(BFGS):
288  type = gsl_multimin_fdfminimizer_vector_bfgs;
289  break;
290  case(BFGS2):
291  type = gsl_multimin_fdfminimizer_vector_bfgs2;
292  break;
293  case(STEEPEST_DESCENT):
294  type = gsl_multimin_fdfminimizer_steepest_descent;
295  break;
296  case(NELDER_MEAD):
297  case(NELDER_MEAD2):
298  case(NELDER_MEAD2_RAND):
299  default:
300  // Wat?!
301  queso_error();
302  }
303 
304  // Init solver
305  gsl_multimin_fdfminimizer * solver =
306  gsl_multimin_fdfminimizer_alloc(type, dim);
307 
308  // Point GSL to the right functions
309  gsl_multimin_function_fdf minusLogPosterior;
310  minusLogPosterior.n = dim;
311  minusLogPosterior.f = &c_evaluate;
312  minusLogPosterior.df = &c_evaluate_derivative;
313  minusLogPosterior.fdf = &c_evaluate_with_derivative;
314  minusLogPosterior.params = (void *)(this);
315 
316  gsl_multimin_fdfminimizer_set(solver, &minusLogPosterior, x, m_fdfstep_size, m_line_tol);
317 
318  int status;
319  size_t iter = 0;
320 
321  do {
322  iter++;
323  status = gsl_multimin_fdfminimizer_iterate(solver);
324 
325  if (status) {
326  if( m_objectiveFunction.domainSet().env().fullRank() == 0 )
327  {
328  std::cerr << "Error while GSL does optimisation. "
329  << "See below for GSL error type." << std::endl;
330  std::cerr << "Gsl error: " << gsl_strerror(status) << std::endl;
331  }
332  break;
333  }
334 
335  status = gsl_multimin_test_gradient(solver->gradient, this->getTolerance());
336 
337  if(monitor)
338  {
339  gsl_vector* x = gsl_multimin_fdfminimizer_x(solver);
340  std::vector<double> x_min(dim);
341  for( unsigned int i = 0; i < dim; i++)
342  x_min[i] = gsl_vector_get(x,i);
343 
344  double f = gsl_multimin_fdfminimizer_minimum(solver);
345 
346  gsl_vector* grad = gsl_multimin_fdfminimizer_gradient(solver);
347  double grad_norm = gsl_blas_dnrm2(grad);
348 
349  monitor->append( x_min, f, grad_norm );
350  }
351 
352  } while ((status == GSL_CONTINUE) && (iter < this->getMaxIterations()));
353 
354  for (unsigned int i = 0; i < dim; i++) {
355  (*m_minimizer)[i] = gsl_vector_get(solver->x, i);
356  }
357 
358  // We're being good human beings and cleaning up the memory we allocated
359  gsl_multimin_fdfminimizer_free(solver);
360  gsl_vector_free(x);
361 
362  return;
363  }
double m_line_tol
Line minimization tolerance in gradient-based algorithms.
Definition: GslOptimizer.h:134
SolverType m_solver_type
Definition: GslOptimizer.h:125
int dim
Definition: ann2fig.cpp:81
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
double m_fdfstep_size
For use in gradient-based algorithms.
Definition: GslOptimizer.h:131
GslVector * m_initialPoint
Definition: GslOptimizer.h:122
unsigned int getMaxIterations() const
Returns the maximum number of iterations the optimizer will do.
Definition: Optimizer.C:41
#define queso_error()
Definition: asserts.h:53
void c_evaluate_derivative(const gsl_vector *x, void *context, gsl_vector *derivative)
Definition: GslOptimizer.C:69
void c_evaluate_with_derivative(const gsl_vector *x, void *context, double *f, gsl_vector *derivative)
Definition: GslOptimizer.C:151
double c_evaluate(const gsl_vector *x, void *context)
Definition: GslOptimizer.C:43
const GslVector & QUESO::GslOptimizer::minimizer ( ) const

Return the point that minimizes the objective function.

This state will be filled with GSL_NAN if, for some reason, the optimization failed

Definition at line 227 of file GslOptimizer.C.

References m_minimizer.

Referenced by QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings().

228 {
229  return *(this->m_minimizer);
230 }
GslVector * m_minimizer
Definition: GslOptimizer.h:123
const BaseScalarFunction< GslVector, GslMatrix > & QUESO::GslOptimizer::objectiveFunction ( ) const

Returns the objective function.

Definition at line 213 of file GslOptimizer.C.

References m_objectiveFunction.

Referenced by QUESO::c_evaluate(), and QUESO::c_evaluate_derivative().

214 {
215  return this->m_objectiveFunction;
216 }
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
void QUESO::GslOptimizer::set_line_tol ( double  tol)

Set GSL line minimization tolerance.

Applicable only to gradient-based solvers. Default is 0.1, as recommended by GSL documentation. See GSL documentation for more details.

void QUESO::GslOptimizer::set_solver_type ( SolverType  solver)

Definition at line 232 of file GslOptimizer.C.

References m_solver_type.

Referenced by set_solver_type().

233  {
234  m_solver_type = solver;
235  }
SolverType m_solver_type
Definition: GslOptimizer.h:125
void QUESO::GslOptimizer::set_solver_type ( std::string &  solver)

Definition at line 517 of file GslOptimizer.C.

References set_solver_type(), and string_to_enum().

518  {
519  this->set_solver_type( this->string_to_enum(solver) );
520  }
void set_solver_type(SolverType solver)
Definition: GslOptimizer.C:232
SolverType string_to_enum(std::string &solver)
Definition: GslOptimizer.C:477
void QUESO::GslOptimizer::set_step_size ( const GslVector step_size)

Sets step size used in gradient-free solvers.

By default, the step size used will be a vector of 0.1. Use this method to reset the step_size to the desired values.

Definition at line 467 of file GslOptimizer.C.

References m_fstep_size.

468  {
469  m_fstep_size = step_size;
470  }
GslVector m_fstep_size
For use in gradient-free algorithms.
Definition: GslOptimizer.h:128
void QUESO::GslOptimizer::set_step_size ( double  step_size)

Sets step size used in gradient-based solvers.

GSL doesn't document this parameter well, but it seems to be related to the line search, so we default to 1.0 for full step.

Definition at line 472 of file GslOptimizer.C.

References m_fdfstep_size.

473  {
474  m_fdfstep_size = step_size;
475  }
double m_fdfstep_size
For use in gradient-based algorithms.
Definition: GslOptimizer.h:131
void QUESO::GslOptimizer::setInitialPoint ( const GslVector intialPoint)

Set the point at which the optimization starts.

Definition at line 219 of file GslOptimizer.C.

References m_initialPoint, and QUESO::GslVector::sizeLocal().

Referenced by QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings().

220 {
221  for (unsigned int i = 0; i < initialPoint.sizeLocal(); i++) {
222  (*(this->m_initialPoint))[i] = initialPoint[i];
223  }
224 }
GslVector * m_initialPoint
Definition: GslOptimizer.h:122
bool QUESO::GslOptimizer::solver_needs_gradient ( SolverType  solver)
private

Helper function.

Definition at line 237 of file GslOptimizer.C.

References BFGS, BFGS2, FLETCHER_REEVES_CG, NELDER_MEAD, NELDER_MEAD2, NELDER_MEAD2_RAND, POLAK_RIBIERE_CG, queso_error, and STEEPEST_DESCENT.

Referenced by minimize().

238  {
239  bool gradient_needed = false;
240 
241  switch(solver)
242  {
243  case(FLETCHER_REEVES_CG):
244  case(POLAK_RIBIERE_CG):
245  case(BFGS):
246  case(BFGS2):
247  case(STEEPEST_DESCENT):
248  {
249  gradient_needed = true;
250  break;
251  }
252  case(NELDER_MEAD):
253  case(NELDER_MEAD2):
254  case(NELDER_MEAD2_RAND):
255  {
256  break;
257  }
258  default:
259  {
260  // Wat?!
261  queso_error();
262  }
263  } // switch(solver)
264 
265  return gradient_needed;
266  }
#define queso_error()
Definition: asserts.h:53
GslOptimizer::SolverType QUESO::GslOptimizer::string_to_enum ( std::string &  solver)

Definition at line 477 of file GslOptimizer.C.

References BFGS, BFGS2, FLETCHER_REEVES_CG, m_objectiveFunction, NELDER_MEAD, NELDER_MEAD2, NELDER_MEAD2_RAND, POLAK_RIBIERE_CG, queso_error, and STEEPEST_DESCENT.

Referenced by set_solver_type().

478  {
479  SolverType solver_type;
480 
481  if( solver == std::string("fletcher_reeves_cg") )
482  solver_type = FLETCHER_REEVES_CG;
483  else if( solver == std::string("polak_ribiere_cg") )
484  solver_type = POLAK_RIBIERE_CG;
485  else if( solver == std::string("bfgs") )
486  solver_type = BFGS;
487  else if( solver == std::string("bfgs2") )
488  solver_type = BFGS2;
489  else if( solver == std::string("steepest_decent") )
490  solver_type = STEEPEST_DESCENT;
491  else if( solver == std::string("nelder_mead") )
492  solver_type = NELDER_MEAD;
493  else if( solver == std::string("nelder_mead2") )
494  solver_type = NELDER_MEAD2;
495  else if( solver == std::string("nelder_mead2_rand") )
496  solver_type = NELDER_MEAD2_RAND;
497  else
498  {
499  if( m_objectiveFunction.domainSet().env().fullRank() == 0 )
500  {
501  std::cerr << "Error: Invalid GslOptimizer solver name: " << solver << std::endl
502  << " Valids choices are: fletcher_reeves_cg" << std::endl
503  << " polak_ribiere_cg" << std::endl
504  << " bfgs" << std::endl
505  << " bfgs2" << std::endl
506  << " steepest_decent" << std::endl
507  << " nelder_mead" << std::endl
508  << " nelder_mead2" << std::endl
509  << " nelder_mead2_rand" << std::endl;
510  }
511  queso_error();
512  }
513 
514  return solver_type;
515  }
const BaseScalarFunction< GslVector, GslMatrix > & m_objectiveFunction
Definition: GslOptimizer.h:120
#define queso_error()
Definition: asserts.h:53

Member Data Documentation

double QUESO::GslOptimizer::m_fdfstep_size
private

For use in gradient-based algorithms.

Definition at line 131 of file GslOptimizer.h.

Referenced by minimize_with_gradient(), and set_step_size().

GslVector QUESO::GslOptimizer::m_fstep_size
private

For use in gradient-free algorithms.

Definition at line 128 of file GslOptimizer.h.

Referenced by GslOptimizer(), minimize_no_gradient(), and set_step_size().

GslVector* QUESO::GslOptimizer::m_initialPoint
private
double QUESO::GslOptimizer::m_line_tol
private

Line minimization tolerance in gradient-based algorithms.

Definition at line 134 of file GslOptimizer.h.

Referenced by minimize_with_gradient().

GslVector* QUESO::GslOptimizer::m_minimizer
private

Definition at line 123 of file GslOptimizer.h.

Referenced by GslOptimizer(), and minimizer().

const BaseScalarFunction<GslVector, GslMatrix>& QUESO::GslOptimizer::m_objectiveFunction
private
SolverType QUESO::GslOptimizer::m_solver_type
private

The documentation for this class was generated from the following files:

Generated on Fri Jun 17 2016 14:17:44 for queso-0.55.0 by  doxygen 1.8.5