hops
Problem.hpp
Go to the documentation of this file.
1 #ifndef HOPS_PROBLEM_HPP
2 #define HOPS_PROBLEM_HPP
3 
4 #include <Eigen/Core>
5 
6 #include <cassert>
7 
8 namespace hops {
9  template<typename Model, typename Proposal>
10  class RunBase;
11 
12  template<typename Model>
13  class Problem {
14  public:
15  using ModelType = Model;
16 
17  //Problem() = default;
18 
19  Problem(const Model& model) :
20  model(model) {
21  }
22 
23  Problem(const Eigen::MatrixXd& A, const Eigen::VectorXd& b) :
24  A(A),
25  b(b) {
26  dimension = A.cols();
27  }
28 
29  Problem(const Eigen::MatrixXd& A, const Eigen::VectorXd& b, const Model& model) :
30  A(A),
31  b(b),
32  model(model) {
33  dimension = A.cols();
34  }
35 
36  long getDimension() {
37  return dimension;
38  }
39 
40  void setA(const Eigen::MatrixXd& A) {
41  this->A = A;
42  this->dimension = A.cols();
43  }
44 
45  void setB(const Eigen::VectorXd& b) {
46  this->b = b;
47  }
48 
49  const Eigen::MatrixXd& getA() const {
50  return this->A;
51  }
52 
53  const Eigen::VectorXd& getB() const {
54  return this->b;
55  }
56 
57  const Model& getModel() const {
58  return this->model;
59  }
60 
61  void setStartingPoint(const Eigen::VectorXd& startingPoint) {
62  if (startingPoint.rows() > 0) {
63  this->startingPoint = startingPoint;
64  useStartingPoint = true;
65  } else {
66  this->startingPoint = startingPoint;
67  useStartingPoint = false;
68  }
69  }
70 
71  const Eigen::VectorXd& getStartingPoint() {
72  return this->startingPoint;
73  }
74 
75  void setUnroundingTransformation(const Eigen::MatrixXd& unroundingTransformation) {
76  if (unroundingTransformation.size() > 0) {
77  this->unroundingTransformation = unroundingTransformation;
78  unround = true;
79  } else {
80  this->unroundingTransformation = unroundingTransformation;
81  unround = false;
82  }
83  }
84 
85  const Eigen::MatrixXd& getUnroundingTransformation() {
86  return this->unroundingTransformation;
87  }
88 
89  void setUnroundingShift(const Eigen::MatrixXd& unroundingShift) {
90  if (unroundingShift.size() > 0) {
91  this->unroundingShift = unroundingShift;
92  unround = true;
93  } else {
94  this->unroundingShift = unroundingShift;
95  unround = false;
96  }
97  }
98 
99  const Eigen::VectorXd& getUnroundingShift() {
100  return this->unroundingShift;
101  }
102 
104 
105  }
106 
107  private:
108  Eigen::MatrixXd A;
109  Eigen::VectorXd b;
110 
111  long dimension;
112 
113  Model model;
114 
115  bool unround = false;
116  Eigen::MatrixXd unroundingTransformation;
117  Eigen::VectorXd unroundingShift;
118 
119  bool useStartingPoint = false;
120  Eigen::VectorXd startingPoint;
121 
122  template<typename, typename> friend class RunBase;
123  };
124 }
125 
126 #endif // HOPS_PROBLEM_HPP
hops::Problem::setB
void setB(const Eigen::VectorXd &b)
Definition: Problem.hpp:45
hops::Problem::Problem
Problem(const Eigen::MatrixXd &A, const Eigen::VectorXd &b)
Definition: Problem.hpp:23
hops::RunBase
Definition: Problem.hpp:10
hops::Problem::getStartingPoint
const Eigen::VectorXd & getStartingPoint()
Definition: Problem.hpp:71
hops::Problem::setUnroundingShift
void setUnroundingShift(const Eigen::MatrixXd &unroundingShift)
Definition: Problem.hpp:89
hops::Problem
Definition: Problem.hpp:13
hops::Problem::getA
const Eigen::MatrixXd & getA() const
Definition: Problem.hpp:49
hops::Problem::getModel
const Model & getModel() const
Definition: Problem.hpp:57
hops::Problem::setStartingPoint
void setStartingPoint(const Eigen::VectorXd &startingPoint)
Definition: Problem.hpp:61
hops::Problem::Problem
Problem(const Model &model)
Definition: Problem.hpp:19
hops::Problem::getB
const Eigen::VectorXd & getB() const
Definition: Problem.hpp:53
hops
Definition: CsvReader.hpp:8
hops::Problem::setA
void setA(const Eigen::MatrixXd &A)
Definition: Problem.hpp:40
hops::Problem::setUnroundingTransformation
void setUnroundingTransformation(const Eigen::MatrixXd &unroundingTransformation)
Definition: Problem.hpp:75
hops::Problem::getDimension
long getDimension()
Definition: Problem.hpp:36
hops::Problem::isConsistentProblem
bool isConsistentProblem()
Definition: Problem.hpp:103
hops::Problem::getUnroundingTransformation
const Eigen::MatrixXd & getUnroundingTransformation()
Definition: Problem.hpp:85
hops::Model
Definition: Model.hpp:12
hops::Problem::Problem
Problem(const Eigen::MatrixXd &A, const Eigen::VectorXd &b, const Model &model)
Definition: Problem.hpp:29
hops::Problem::getUnroundingShift
const Eigen::VectorXd & getUnroundingShift()
Definition: Problem.hpp:99