Couenne  0.5.8
CouenneFPpool.hpp
Go to the documentation of this file.
1 /* $Id: CouenneFPpool.hpp 1061 2014-02-01 19:22:28Z pbelotti $
2  *
3  * Name: CouenneFPpool.hpp
4  * Authors: Pietro Belotti
5  * Timo Berthold, ZIB Berlin
6  * Purpose: Pool of MILP- (and why not? NLP-) feasible solutions for
7  * restart use in the Feasibility Pump and sets of solutions
8  * to be used as tabu list
9  *
10  * This file is licensed under the Eclipse Public License (EPL)
11  */
12 
13 #ifndef CouenneFPpool_hpp
14 #define CouenneFPpool_hpp
15 
16 #include <set>
17 
18 #include "CouenneTypes.hpp"
19 #include "CoinFinite.hpp"
20 #include "CouenneProblem.hpp"
21 
22 namespace Couenne {
23 
24  class CouenneProblem;
25  class CouenneFeasPump;
26 
30 
33 
34  protected:
35 
37  int n_;
38  int nNLinf_;
39  int nIinf_;
43 
47 
48  bool copied_;
49 
51 
54  public:
55 
56  CouenneFPsolution (CouenneProblem *p, CouNumber *x, bool copied = false);
57 
59 
61 
63 
65  const int n () const {return n_;}
66 
68  const double *x () const {return x_;}
69 
71  bool compare (const CouenneFPsolution &other, enum what_to_compare comparedTerm) const;
72  };
73 
74 
76  inline bool operator< (const CouenneFPsolution &one,
77  const CouenneFPsolution &two)
78  {return one.compare (two, comparedTerm_);}
79 
80 
82  class compareSol {
83 
84  public:
85  bool operator () (const CouenneFPsolution &one,
86  const CouenneFPsolution &two) const;
87  };
88 
89 
91  class CouenneFPpool {
92 
93  protected:
94 
96  std::set <CouenneFPsolution, compareSol> set_;
97 
100 
101  public:
102 
105  problem_ (p) {comparedTerm_ = c;}
106 
109 
112 
114  std::set <CouenneFPsolution, compareSol> &Set ()
115  {return set_;}
116 
119  {return problem_;}
120 
123  void findClosestAndReplace (double *&sol, const double *nSol, int nvars) ;
124  };
125 }
126 
127 #endif
Couenne::CouenneFPsolution::x
const double * x() const
returns vector
Definition: CouenneFPpool.hpp:68
Couenne::CouenneFPsolution::n
const int n() const
returns size
Definition: CouenneFPpool.hpp:65
Couenne::compareSol
class for comparing solutions (used in tabu list)
Definition: CouenneFPpool.hpp:82
Couenne::CouenneFPsolution::CouenneFPsolution
CouenneFPsolution(CouenneProblem *p, CouNumber *x, bool copied=false)
CouenneProblem-aware constructor.
Couenne::CouenneFPpool::findClosestAndReplace
void findClosestAndReplace(double *&sol, const double *nSol, int nvars)
finds, in pool, solution x closest to sol; removes it from the pool and overwrites it to sol
Couenne::CouenneFPsolution::x_
CouNumber * x_
solution
Definition: CouenneFPpool.hpp:36
Couenne::operator<
bool operator<(const CouenneScalar &first, const CouenneScalar &second)
Definition: CouenneMatrix.hpp:62
Couenne::CouenneFPpool::CouenneFPpool
CouenneFPpool(CouenneProblem *p, enum what_to_compare c)
simple constructor (empty pool)
Definition: CouenneFPpool.hpp:104
Couenne::CouenneFPsolution::n_
int n_
number of variables (for independence from CouenneProblem)
Definition: CouenneFPpool.hpp:37
Couenne::what_to_compare
what_to_compare
what term to compare: the sum of infeasibilities, the sum of numbers of infeasible terms,...
Definition: CouenneFPpool.hpp:29
Couenne::CouenneFPpool::Set
std::set< CouenneFPsolution, compareSol > & Set()
return the main object in this class
Definition: CouenneFPpool.hpp:114
Couenne::CouenneFPpool::operator=
CouenneFPpool & operator=(const CouenneFPpool &src)
assignment
Couenne::SUM_NINF
@ SUM_NINF
Definition: CouenneFPpool.hpp:29
Couenne::CouenneFPsolution::problem_
CouenneProblem * problem_
holds pointer to problem to check integrality in comparison of integer variables
Definition: CouenneFPpool.hpp:50
Couenne::CouenneFPsolution::objVal_
CouNumber objVal_
objective function value
Definition: CouenneFPpool.hpp:40
Couenne::CouenneFPsolution::nIinf_
int nIinf_
number of integer infeasibilities
Definition: CouenneFPpool.hpp:39
Couenne
general include file for different compilers
Definition: CouenneAggrProbing.hpp:24
Couenne::CouenneFPsolution::~CouenneFPsolution
~CouenneFPsolution()
destructor
CoinFinite.hpp
Couenne::compareSol::operator()
bool operator()(const CouenneFPsolution &one, const CouenneFPsolution &two) const
Couenne::CouNumber
double CouNumber
main number type in Couenne
Definition: CouenneTypes.hpp:100
Couenne::ALL_VARS
@ ALL_VARS
Definition: CouenneFPpool.hpp:29
Couenne::CouenneFPpool::set_
std::set< CouenneFPsolution, compareSol > set_
Pool.
Definition: CouenneFPpool.hpp:96
Couenne::INTEGER_VARS
@ INTEGER_VARS
Definition: CouenneFPpool.hpp:29
Couenne::CouenneFPpool::problem_
CouenneProblem * problem_
Problem pointer.
Definition: CouenneFPpool.hpp:99
Couenne::OBJVAL
@ OBJVAL
Definition: CouenneFPpool.hpp:29
CouenneTypes.hpp
Couenne::CouenneFPsolution::copied_
bool copied_
This is a temporary copy, not really a solution holder.
Definition: CouenneFPpool.hpp:48
Couenne::CouenneFPsolution::maxNLinf_
CouNumber maxNLinf_
maximum NL infeasibility
Definition: CouenneFPpool.hpp:41
CouenneProblem.hpp
Couenne::CouenneFPsolution::operator=
CouenneFPsolution & operator=(const CouenneFPsolution &src)
assignment
Couenne::CouenneFPpool::CouenneFPpool
CouenneFPpool(const CouenneFPpool &src)
copy constructor
Couenne::CouenneFPsolution
Class containing a solution with infeasibility evaluation.
Definition: CouenneFPpool.hpp:32
Couenne::CouenneFPsolution::maxIinf_
CouNumber maxIinf_
maximum integer infeasibility
Definition: CouenneFPpool.hpp:42
Couenne::SUM_INF
@ SUM_INF
Definition: CouenneFPpool.hpp:29
Couenne::CouenneFPpool::Problem
CouenneProblem * Problem()
return the problem pointer
Definition: CouenneFPpool.hpp:118
Couenne::CouenneFPsolution::nNLinf_
int nNLinf_
number of NL infeasibilities
Definition: CouenneFPpool.hpp:38
Couenne::comparedTerm_
static enum Couenne::what_to_compare comparedTerm_
Couenne::CouenneProblem
Class for MINLP problems with symbolic information.
Definition: CouenneProblem.hpp:169
Couenne::CouenneFPsolution::CouenneFPsolution
CouenneFPsolution(const CouenneFPsolution &src)
copy constructor
Couenne::CouenneFPpool
Pool of solutions.
Definition: CouenneFPpool.hpp:91
Couenne::CouenneFPsolution::compare
bool compare(const CouenneFPsolution &other, enum what_to_compare comparedTerm) const
basic comparison procedure – what to compare depends on user's choice