| [66cfc7] | 1 | /* | 
|---|
|  | 2 | * FunctionModel.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: 02.10.2012 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #ifndef FUNCTIONMODEL_HPP_ | 
|---|
|  | 9 | #define FUNCTIONMODEL_HPP_ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | // include config.h | 
|---|
|  | 12 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 13 | #include <config.h> | 
|---|
|  | 14 | #endif | 
|---|
|  | 15 |  | 
|---|
|  | 16 | #include <vector> | 
|---|
|  | 17 |  | 
|---|
|  | 18 | #include "FunctionApproximation/FunctionArgument.hpp" | 
|---|
|  | 19 |  | 
|---|
|  | 20 | /** This class represents the interface for a given function to model a | 
|---|
|  | 21 | * high-dimensional data set in FunctionApproximation. | 
|---|
|  | 22 | * | 
|---|
|  | 23 | * As the parameters may be stored differently, the interface functions for | 
|---|
|  | 24 | * getting and setting them are as light-weight (and not speed-optimized) | 
|---|
|  | 25 | * as possible. | 
|---|
|  | 26 | * | 
|---|
|  | 27 | */ | 
|---|
|  | 28 | class FunctionModel | 
|---|
|  | 29 | { | 
|---|
|  | 30 | public: | 
|---|
|  | 31 | //!> typedef for a single parameter degree of freedom of the function | 
|---|
|  | 32 | typedef double parameter_t; | 
|---|
|  | 33 | //!> typedef for the whole set of parameters of the function | 
|---|
|  | 34 | typedef std::vector<parameter_t> parameters_t; | 
|---|
|  | 35 | //!> typedef for the argument vector as input to the function | 
|---|
|  | 36 | typedef std::vector<argument_t> arguments_t; | 
|---|
|  | 37 | //!> typedef for a single result degree of freedom | 
|---|
|  | 38 | typedef double result_t; | 
|---|
|  | 39 | //!> typedef for the result vector as returned by the function | 
|---|
|  | 40 | typedef std::vector<result_t> results_t; | 
|---|
|  | 41 | public: | 
|---|
|  | 42 | FunctionModel() {} | 
|---|
|  | 43 | virtual ~FunctionModel() {} | 
|---|
|  | 44 |  | 
|---|
|  | 45 | /** Setter for the parameters of the model function. | 
|---|
|  | 46 | * | 
|---|
|  | 47 | * \param params set of parameters to set | 
|---|
|  | 48 | */ | 
|---|
|  | 49 | virtual void setParameters(const parameters_t ¶ms)=0; | 
|---|
|  | 50 |  | 
|---|
|  | 51 | /** Getter for the parameters of this model function. | 
|---|
|  | 52 | * | 
|---|
|  | 53 | * \return current set of parameters of the model function | 
|---|
|  | 54 | */ | 
|---|
|  | 55 | virtual parameters_t getParameters() const=0; | 
|---|
|  | 56 |  | 
|---|
|  | 57 | /** Getter for the number of parameters of this model function. | 
|---|
|  | 58 | * | 
|---|
|  | 59 | * \return number of parameters | 
|---|
|  | 60 | */ | 
|---|
|  | 61 | virtual size_t getParameterDimension() const=0; | 
|---|
|  | 62 |  | 
|---|
|  | 63 | /** Evaluates the function with the given \a arguments and the current set of | 
|---|
|  | 64 | * parameters. | 
|---|
|  | 65 | * | 
|---|
|  | 66 | * \param arguments set of arguments as input variables to the function | 
|---|
|  | 67 | * \return result of the function | 
|---|
|  | 68 | */ | 
|---|
|  | 69 | virtual results_t operator()(const arguments_t &arguments) const=0; | 
|---|
|  | 70 |  | 
|---|
|  | 71 | /** Evaluates the derivative of the function with the given \a arguments | 
|---|
| [3ccea3] | 72 | * with respect to a specific parameter indicated by \a index. | 
|---|
| [66cfc7] | 73 | * | 
|---|
|  | 74 | * \param arguments set of arguments as input variables to the function | 
|---|
| [3ccea3] | 75 | * \param index derivative of which parameter | 
|---|
|  | 76 | * \return result vector containing the derivative with respect to the given | 
|---|
|  | 77 | *         input | 
|---|
| [66cfc7] | 78 | */ | 
|---|
| [3ccea3] | 79 | virtual results_t parameter_derivative(const arguments_t &arguments, const size_t index) const=0; | 
|---|
| [d03292] | 80 |  | 
|---|
|  | 81 | /** States whether lower and upper boundaries should be used to constraint | 
|---|
|  | 82 | * the parameter search for this function model. | 
|---|
|  | 83 | * | 
|---|
|  | 84 | * \return true - constraints should be used, false - else | 
|---|
|  | 85 | */ | 
|---|
|  | 86 | virtual bool isBoxConstraint() const=0; | 
|---|
|  | 87 |  | 
|---|
|  | 88 | /** Returns a vector which are the lower boundaries for each parameter_t | 
|---|
|  | 89 | * of this FunctionModel. | 
|---|
|  | 90 | * | 
|---|
|  | 91 | * \return vector of parameter_t resembling lowest allowed values | 
|---|
|  | 92 | */ | 
|---|
|  | 93 | virtual parameters_t getLowerBoxConstraints() const=0; | 
|---|
|  | 94 |  | 
|---|
|  | 95 | /** Returns a vector which are the upper boundaries for each parameter_t | 
|---|
|  | 96 | * of this FunctionModel. | 
|---|
|  | 97 | * | 
|---|
|  | 98 | * \return vector of parameter_t resembling highest allowed values | 
|---|
|  | 99 | */ | 
|---|
|  | 100 | virtual parameters_t getUpperBoxConstraints() const=0; | 
|---|
| [66cfc7] | 101 | }; | 
|---|
|  | 102 |  | 
|---|
|  | 103 | #endif /* FUNCTIONMODEL_HPP_ */ | 
|---|