ReFRACtor
|
The base class for all problem states. More...
#include <problem_state.h>
Public Member Functions | |
ProblemState () | |
Default constructor. More... | |
ProblemState (const ProblemState &s) | |
Copy constructor. More... | |
virtual | ~ProblemState () |
virtual void | assert_parameter_correct (const blitz::Array< double, 1 > &x) const |
Checks that the new input parameters are correct. More... | |
virtual void | assert_parameter_set_correctly () const |
Checks that the parameters are set correctly. More... | |
virtual void | clear () |
Deletes data contents. More... | |
virtual int | expected_parameter_size () const |
Returns the expected size of the parameters. More... | |
virtual int | parameter_size () const |
Returns the size of the parameters. More... | |
virtual void | parameters (const blitz::Array< double, 1 > &x) |
Sets the problem at a new point in the parameter space. More... | |
virtual blitz::Array< double, 1 > | parameters () const |
Returns the current parameters. More... | |
virtual bool | parameters_different (const blitz::Array< double, 1 > &x) const |
Checks whether or not new input parameters are different from the current ones. More... | |
virtual void | print (std::ostream &Os) const |
Prints description of object. More... | |
std::string | print_to_string () const |
Print to string. More... | |
virtual void | set (const ProblemState &s) |
Makes self a copy of the input state. More... | |
Protected Attributes | |
blitz::Array< double, 1 > | X |
The base class for all problem states.
ProblemState is the base class for the state of all optimization problems.
An optimization problem is just a cost function to be minimized. Therefore, in its simplest form, the state of an optimization problem is the point in the parameter space where the cost function is currently evaluated. In other words, given a point in the parameter space, everything else needed (cost function value and its derivatives if needed) can be determined. Therefore, in the context of our optimization problem we may also use "problem state" to refer to the point in the parameter space where the optimization related cost function is evaluated.
However, the role of this class is expanded and has resulted in a class hierarchy rooted at ProblemState class. It could be very expensive to evaluate some cost functions and/or their derivatives; therefore, it is desirable to store computationally expensive components of a cost function after evaluation. The classes in the class hierarchy (rooted at ProblemState class) enable maintaining of the problem state (the current point in the parameter space) and computationally expensive components of the cost function just in case they are needed repeatedly.
This hierarchy provides a systematic way to
All optimization problem classes in the class hierarchy rooted at CostFunc class must directly or indirectly inherit at least ProblemState class. Given that CostFunc is derived form ProblemState, then all classes in the problem class hierarchy will inherit CostFunc automatically. However, a problem class may also optionally inherit another appropriate problem state class in ProblemState class hierarchy.
Definition at line 51 of file problem_state.h.
|
inline |
Default constructor.
Definition at line 61 of file problem_state.h.
|
inline |
Copy constructor.
[in] | s | another ProblemState |
Definition at line 71 of file problem_state.h.
|
inlinevirtual |
Definition at line 75 of file problem_state.h.
|
virtual |
Checks that the new input parameters are correct.
This method checks to see whether or not the new input parameters are correct. If the parameters are not correct then it throws an exception.
Definition at line 44 of file problem_state.cc.
|
inlinevirtual |
Checks that the parameters are set correctly.
This method checks to see whether or not the parameters are set correctly. If the parameters are not set correctly then it throws an exception.
Definition at line 197 of file problem_state.h.
|
inlinevirtual |
Deletes data contents.
This method deletes state. It must be reimplemented by other classes derived from this class to delete other saved components associated with the state as well.
Reimplemented in FullPhysics::NLLSProblemState, FullPhysics::ModelState, FullPhysics::CostFuncDiffState, and FullPhysics::CostFuncState.
Definition at line 100 of file problem_state.h.
|
inlinevirtual |
Returns the expected size of the parameters.
This method must be reimplemented by the problem class the inherits ProblemState. It is only in the context of an optimization problem that one knows what the size of the parameters (number of the dimensions of the parameter space) is.
This method is intentionally implemented here instead of being left as a pure virtual method. The intention is that the user to be able to create an object of this class or its derived classes for the purpose of preserving an older state of a problem if needed.
Reimplemented in FullPhysics::NLLSMaxAPosteriori, FullPhysics::NLLSMaxLikelihood, FullPhysics::NLLSProblemScaled, FullPhysics::ModelMeasureStandard, FullPhysics::ModelMeasureBard, FullPhysics::ModelMeasureMeyer, FullPhysics::FmNLLSProblem, FullPhysics::BardNLLSProblem, FullPhysics::BrownNLLSProblem, FullPhysics::FreudensteinRothNLLSProblem, FullPhysics::HelicalValleyNLLSProblem, FullPhysics::JennrichSampsonNLLSProblem, FullPhysics::MeyerNLLSProblem, FullPhysics::PowellNLLSProblem, FullPhysics::PowellSingularNLLSProblem, and FullPhysics::Rosenbrock2NLLSProblem.
Definition at line 185 of file problem_state.h.
|
inlinevirtual |
Returns the size of the parameters.
Definition at line 163 of file problem_state.h.
|
virtual |
Sets the problem at a new point in the parameter space.
The method calls parameters_different() to determine whether or not the new parameters are different:
[in] | x | New set of parameters |
Reimplemented in FullPhysics::NLLSProblemScaled, FullPhysics::NLLSMaxAPosteriori, FullPhysics::NLLSMaxLikelihood, and FullPhysics::ModelMeasureStandard.
Definition at line 36 of file problem_state.cc.
|
inlinevirtual |
Returns the current parameters.
Reimplemented in FullPhysics::NLLSProblemScaled, FullPhysics::NLLSMaxAPosteriori, FullPhysics::NLLSMaxLikelihood, and FullPhysics::ModelMeasureStandard.
Definition at line 153 of file problem_state.h.
|
virtual |
Checks whether or not new input parameters are different from the current ones.
The methods checks to see whether or not the new input parameters (point in the parameter space) are different from the parameters maintained by the object for which the method is called.
If the size of the input parameters is not equal to the expected size of the parameters (check comments on expected_parameter_size), then the method will throw an exception.
If the object for which the method is called has currently no parameters set, then the method returns true. Otherwise, the method uses some algorithm to figure out when the difference is "big enough" to be considered different. If the method determines that the new input parameters are different from the current parameters, then it returns true, otherwise, it returns false.
[in] | x | New set of parameters |
Definition at line 9 of file problem_state.cc.
|
inlinevirtual |
Prints description of object.
Reimplemented in FullPhysics::ModelMeasure, FullPhysics::NLLSProblem, FullPhysics::CostFuncDiff, FullPhysics::CostFunc, FullPhysics::NLLSProblemScaled, FullPhysics::NLLSProblemState, FullPhysics::NLLSMaxAPosteriori, FullPhysics::NLLSMaxLikelihood, FullPhysics::ModelState, FullPhysics::CostFuncDiffState, FullPhysics::CostFuncState, FullPhysics::MaxAPosteriori, FullPhysics::ModelMeasureStandard, FullPhysics::MaxLikelihood, FullPhysics::MaxAPosterioriStandard, FullPhysics::ModelMeasureBard, FullPhysics::ModelMeasureMeyer, FullPhysics::FmNLLSProblem, FullPhysics::BardNLLSProblem, FullPhysics::BrownNLLSProblem, FullPhysics::FreudensteinRothNLLSProblem, FullPhysics::HelicalValleyNLLSProblem, FullPhysics::JennrichSampsonNLLSProblem, FullPhysics::MeyerNLLSProblem, FullPhysics::PowellNLLSProblem, FullPhysics::PowellSingularNLLSProblem, FullPhysics::Rosenbrock2NLLSProblem, FullPhysics::BardMLProblem, and FullPhysics::MeyerMLProblem.
Definition at line 216 of file problem_state.h.
|
inlineinherited |
Print to string.
This is primarily useful for SWIG wrappers to this class, e.g. a to_s method in ruby.
Definition at line 31 of file printable.h.
|
inlinevirtual |
Makes self a copy of the input state.
This method makes the object, for which it is called, a copy of the input state.
[in] | s | another ProblemState |
Definition at line 88 of file problem_state.h.
|
protected |
Definition at line 222 of file problem_state.h.