28 #ifndef _math_optimize_function_h
29 #define _math_optimize_function_h
34 #include <util/state/state.h>
35 #include <math/optimize/transform.h>
36 #include <math/scmat/matrix.h>
37 #include <math/scmat/result.h>
53 bool desired_value_accuracy_set_to_default_;
54 bool desired_gradient_accuracy_set_to_default_;
55 bool desired_hessian_accuracy_set_to_default_;
57 bool throw_if_tolerance_exceeded_;
63 virtual void set_value(
double);
77 virtual void set_actual_value_accuracy(
double);
78 virtual void set_actual_gradient_accuracy(
double);
79 virtual void set_actual_hessian_accuracy(
double);
114 double gradacc = DBL_EPSILON,
double hessacc = DBL_EPSILON);
128 virtual double value();
148 virtual RefSCVector gradient();
149 int gradient_needed()
const;
150 int do_gradient(
int);
151 virtual void set_desired_gradient_accuracy(
double);
152 virtual double actual_gradient_accuracy()
const;
153 virtual double desired_gradient_accuracy()
const;
154 AccResultRefSCVector& gradient_result() {
return gradient_; }
161 virtual RefSymmSCMatrix hessian();
162 int hessian_needed()
const;
164 virtual void set_desired_hessian_accuracy(
double);
165 virtual double actual_hessian_accuracy()
const;
166 virtual double desired_hessian_accuracy()
const;
167 AccResultRefSymmSCMatrix& hessian_result() {
return hessian_; }
173 virtual bool desired_value_accuracy_set_to_default()
const;
174 virtual bool desired_gradient_accuracy_set_to_default()
const;
175 virtual bool desired_hessian_accuracy_set_to_default()
const;
180 virtual RefSymmSCMatrix inverse_hessian(RefSymmSCMatrix&);
194 virtual void set_x(
const RefSCVector&);
195 RefSCVector get_x()
const {
return x_.copy(); }
196 const RefSCVector& get_x_no_copy()
const {
return x_; }
Ref< SCMatrixKit > matrixkit_
Used to construct new matrices.
Definition: function.h:46
Ref< SCMatrixKit > matrixkit() const
Return the SCMatrixKit used to construct vectors and matrices.
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition: matrix.h:265
RefSCDimension dim_
The dimension of x_.
Definition: function.h:49
virtual void set_desired_value_accuracy(double)
Set the accuracy to which the value is to be computed.
A template class that maintains references counts.
Definition: ref.h:361
void print_desired_accuracy(std::ostream &=ExEnv::out0()) const
similar to print(), but only prins desired accuracies
virtual void print(std::ostream &=ExEnv::out0()) const
Print information about the object.
virtual bool throw_if_tolerance_exceeded() const
Overridden Compute member.
virtual int hessian_implemented() const
virtual double desired_value_accuracy() const
Return the accuracy with which the value is to be computed.
The Function class is an abstract base class that, given a set of coordinates, will compute a value a...
Definition: function.h:44
AccResultRefSCVector gradient_
The gradient at x_.
Definition: function.h:51
int do_value(int)
If passed a nonzero number, compute the value the next time compute() is called.
virtual int gradient_implemented() const
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition: dim.h:152
virtual double actual_value_accuracy() const
Return the accuracy with which the value has been computed.
AccResultRefSymmSCMatrix hessian_
The hessian at x_.
Definition: function.h:52
virtual void obsolete()
Marks all results as being out of date.
virtual void set_x(const RefSCVector &)
Set and retrieve the coordinate values.
RefSCVector & get_x_reference()
Get read/write access to the coordinates for modification.
Definition: function.h:83
RefSCDimension dimension() const
Return the SCDimension of the problem.
virtual void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
virtual void guess_hessian(RefSymmSCMatrix &)
Compute a quick, approximate hessian.
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition: matrix.h:55
Definition: stateout.h:71
The Compute class provides a means of keeping results up to date.
Definition: compute.h:51
AccResultdouble value_
The value of the function at x_.
Definition: function.h:50
virtual int value_implemented() const
virtual double value()
Return the value of the function.
static std::ostream & out0()
Return an ostream that writes from node 0.
RefSCVector x_
The variables.
Definition: function.h:48
Base class for objects that can save/restore state.
Definition: state.h:45
virtual Ref< NonlinearTransform > change_coordinates()
An optimizer can call change coordinates periodically to give the function an opportunity to change i...
int value_needed() const
Returns nonzero if the current value is not up-to-date.
virtual void set_matrixkit(const Ref< SCMatrixKit > &)
Set the SCMatrixKit that should be used to construct the requisite vectors and matrices.
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void do_change_coordinates(const Ref< NonlinearTransform > &)
Change the coordinate system and apply the given transform to intermediates matrices and vectors.
Generated at Sun Jan 26 2020 23:24:00 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.