Thibault Barnouin Optimization Method Algorithm
models.h
Go to the documentation of this file.
1 #ifndef MODELS_H
2 #define MODELS_H
3 
4 #include"data.h"
5 #include"costfunctions.h"
6 
7 /*
8  * Model
9  */
10 
11 class Model{
12  public:
13  //Virtual Constructor & Destructor for any model type
14  Model();
15  Model(const Model&);
16  Model(Data);
17  virtual ~Model(){delete m_cost;};
18  //Link model to data set and cost function
19  virtual void setModelData(Data);
20  virtual void setExpData(Data);
21  virtual void setCost(CostFunction*);
22  //Virtual solution, parameters, neighbor solution and cost getter
23  virtual Data getSol() const = 0;
24  virtual void setParam(std::vector<double>){};
25  virtual std::vector<double> getParam() const = 0;
26  virtual std::vector<double> getNeighbor(double) const = 0;
27  virtual double getCost() = 0;
28  //Virtual export model parameters
29  virtual void exportModel() const = 0;
30  virtual void displayModel() const = 0;
31  protected:
32  Data m_data; //Data set containing points obtained using model
33  Data exp_data; //Data set containing experimental points to approximate
34  CostFunction* m_cost; //Pointer to cost function to minimize
35 };
36 
37 /*
38  * Linear Approximation model
39  */
40 
41 class LinearApprox : public Model{
42  public:
43  //Virtual Constructor & Destructor for this model
44  LinearApprox();
45  LinearApprox(const LinearApprox&);
47  LinearApprox(Data,std::vector<double>);
49  //Set data model, experimental data and cost function
50  void setModelData(Data);
51  void setExpData(Data);
52  void setCost(CostFunction*);
53  //Solution, neighbor and cost getter
54  Data getSol() const;
55  void setParam(std::vector<double>);
56  std::vector<double> getParam() const;
57  std::vector<double> getNeighbor(double) const;
58  double getCost();
59  //Export model parameters
60  void exportModel() const;
61  void displayModel() const;
62  //Set and get parameters for this model
63  Data getExpData() const;
64  void setSlope(double);
65  double getSlope() const;
66  void setOffset(double);
67  double getOffset() const;
68  private:
69  std::vector<double> param;
70 };
71 
72 /*
73  * Polynomial Approximation model
74  */
75 
76 class PolynomialApprox : public Model{
77  public:
78  //Virtual Constructor & Destructor for this model
81  PolynomialApprox(int);
83  PolynomialApprox(Data,std::vector<double>);
85  //Set data model, experimental data and cost function
86  void setModelData(Data);
87  void setExpData(Data);
88  void setCost(CostFunction*);
89  //Solution, neighbor and cost getter
90  Data getSol() const;
91  void setParam(std::vector<double>);
92  std::vector<double> getParam() const;
93  std::vector<double> getNeighbor(double) const;
94  double getCost();
95  //Export model parameters
96  void exportModel() const;
97  void displayModel() const;
98  //Set and get parameters for this model
99  Data getExpData() const;
100  private:
101  std::vector<double> param;
102 };
103 
104 
105 /*
106  * Traveling SalesPerson problem
107  */
108 
109 class TSP : public Model{
110  public:
111  //Virtual Constructor & Destructor for this model
112  TSP();
113  TSP(const TSP&);
114  TSP(Data);
115  TSP(Data,std::vector<int>);
116  ~TSP(){};
117  //Set data model, experimental data and cost function
118  void setModelData(Data);
119  void setExpData(Data);
120  void setCost(CostFunction*);
121  //Solution, neighbor and cost getter
122  Data getSol() const;
123  void setParam(std::vector<double>);
124  std::vector<double> getParam() const;
125  std::vector<double> getNeighbor(double) const;
126  double getCost();
127  //Export model parameters
128  void exportModel() const;
129  void displayModel() const;
130  //Set and get parameters for this model
131  Data getExpData() const;
132  void setOrder(std::vector<int>);
133  std::vector<int> getOrder() const;
134  private:
135  std::vector<int> order;
136 };
137 
138 
139 #endif
Model::m_data
Data m_data
Definition: models.h:32
Model::getParam
virtual std::vector< double > getParam() const =0
PolynomialApprox::setExpData
void setExpData(Data)
Definition: models.cpp:274
TSP::setParam
void setParam(std::vector< double >)
Definition: models.cpp:461
PolynomialApprox::setParam
void setParam(std::vector< double >)
Definition: models.cpp:297
LinearApprox::displayModel
void displayModel() const
Definition: models.cpp:147
LinearApprox::getSol
Data getSol() const
Definition: models.cpp:108
TSP::getParam
std::vector< double > getParam() const
Definition: models.cpp:471
Model::displayModel
virtual void displayModel() const =0
LinearApprox::exportModel
void exportModel() const
Definition: models.cpp:142
PolynomialApprox::getNeighbor
std::vector< double > getNeighbor(double) const
Definition: models.cpp:311
PolynomialApprox::PolynomialApprox
PolynomialApprox()
Definition: models.cpp:217
LinearApprox::getCost
double getCost()
Definition: models.cpp:134
PolynomialApprox::setCost
void setCost(CostFunction *)
Definition: models.cpp:285
TSP::displayModel
void displayModel() const
Definition: models.cpp:542
TSP::setOrder
void setOrder(std::vector< int >)
Definition: models.cpp:563
TSP::getCost
double getCost()
Definition: models.cpp:527
Model::setExpData
virtual void setExpData(Data)
Definition: models.cpp:34
Model::exportModel
virtual void exportModel() const =0
Model::getCost
virtual double getCost()=0
LinearApprox::setModelData
void setModelData(Data)
Definition: models.cpp:87
PolynomialApprox::exportModel
void exportModel() const
Definition: models.cpp:329
Data
Definition: data.h:12
Model::setModelData
virtual void setModelData(Data)
Definition: models.cpp:30
Model::Model
Model()
Definition: models.cpp:10
CostFunction
Definition: costfunctions.h:10
PolynomialApprox
Definition: models.h:76
LinearApprox::setCost
void setCost(CostFunction *)
Definition: models.cpp:101
LinearApprox::getSlope
double getSlope() const
Definition: models.cpp:179
PolynomialApprox::setModelData
void setModelData(Data)
Definition: models.cpp:270
TSP::setExpData
void setExpData(Data)
Definition: models.cpp:431
PolynomialApprox::getExpData
Data getExpData() const
Definition: models.cpp:354
LinearApprox::LinearApprox
LinearApprox()
Definition: models.cpp:50
LinearApprox
Definition: models.h:41
TSP::~TSP
~TSP()
Definition: models.h:116
LinearApprox::getNeighbor
std::vector< double > getNeighbor(double) const
Definition: models.cpp:126
PolynomialApprox::getSol
Data getSol() const
Definition: models.cpp:293
Model::getNeighbor
virtual std::vector< double > getNeighbor(double) const =0
TSP::exportModel
void exportModel() const
Definition: models.cpp:535
TSP::setModelData
void setModelData(Data)
Definition: models.cpp:427
TSP
Definition: models.h:109
Model
Definition: models.h:11
LinearApprox::getOffset
double getOffset() const
Definition: models.cpp:193
TSP::getSol
Data getSol() const
Definition: models.cpp:457
LinearApprox::getParam
std::vector< double > getParam() const
Definition: models.cpp:122
PolynomialApprox::displayModel
void displayModel() const
Definition: models.cpp:336
data.h
LinearApprox::setExpData
void setExpData(Data)
Definition: models.cpp:91
LinearApprox::~LinearApprox
~LinearApprox()
Definition: models.h:48
LinearApprox::setSlope
void setSlope(double)
Definition: models.cpp:169
TSP::TSP
TSP()
Definition: models.cpp:380
Model::getSol
virtual Data getSol() const =0
TSP::setCost
void setCost(CostFunction *)
Definition: models.cpp:450
costfunctions.h
LinearApprox::getExpData
Data getExpData() const
Definition: models.cpp:165
Model::setCost
virtual void setCost(CostFunction *)
Definition: models.cpp:38
PolynomialApprox::getCost
double getCost()
Definition: models.cpp:321
TSP::getOrder
std::vector< int > getOrder() const
Definition: models.cpp:573
TSP::getNeighbor
std::vector< double > getNeighbor(double) const
Definition: models.cpp:509
PolynomialApprox::getParam
std::vector< double > getParam() const
Definition: models.cpp:307
Model::~Model
virtual ~Model()
Definition: models.h:17
LinearApprox::setOffset
void setOffset(double)
Definition: models.cpp:183
LinearApprox::setParam
void setParam(std::vector< double >)
Definition: models.cpp:112
TSP::getExpData
Data getExpData() const
Definition: models.cpp:559
Model::m_cost
CostFunction * m_cost
Definition: models.h:34
PolynomialApprox::~PolynomialApprox
~PolynomialApprox()
Definition: models.h:84
Model::setParam
virtual void setParam(std::vector< double >)
Definition: models.h:24
Model::exp_data
Data exp_data
Definition: models.h:33