Bonmin  1.8.8
BonEcpCuts.hpp
Go to the documentation of this file.
1 // (C) Copyright International Business Machines (IBM) 2006, 2007
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors :
6 // P. Bonami, International Business Machines
7 //
8 // Date : 12/20/2006
9 
10 #ifndef BonECPCuts_HPP
11 #define BonECPCuts_HPP
12 
13 #include "BonOaDecBase.hpp"
14 #include "CglCutGenerator.hpp"
15 namespace Bonmin
16 {
18  {
19  public:
20  EcpCuts(BabSetupBase & b);
21 
23  EcpCuts(const EcpCuts & copy):
24  OaDecompositionBase(copy),
25  objValue_(copy.objValue_),
26  numRounds_(copy.numRounds_),
29  beta_(copy.beta_)
30  {}
31 
33  CglCutGenerator * clone() const
34  {
35  return new EcpCuts(*this);
36  }
37 
39  virtual ~EcpCuts()
40  {}
42  virtual void generateCuts(const OsiSolverInterface &si, OsiCuts & cs,
43  const CglTreeInfo info = CglTreeInfo()) const;
44  double doEcpRounds(OsiSolverInterface &si,
45  bool leaveSiUnchanged,
46  double* violation = NULL);
47 
48  void setNumRounds(int value)
49  {
50  numRounds_ = value;
51  }
52 
53  void setPropabilityFactor(double value)
54  {
55  beta_ = value;
56  }
57 
58  void setAbsViolationTolerance(double value)
59  {
60  abs_violation_tol_ = value;
61  }
62  void setRelViolationTolerance(double value)
63  {
64  rel_violation_tol_ = value;
65  }
66 
68  static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions);
69 
70  protected:
72  virtual double performOa(OsiCuts & cs, solverManip &lpManip,
73  BabInfo * babInfo, double &cutoff, const CglTreeInfo &info) const
74  {
75  throw -1;
76  }
78  virtual bool doLocalSearch(BabInfo * babInfo) const
79  {
80  return 0;
81  }
82  private:
84  mutable double objValue_;
86  mutable double violation_;
94  double beta_;
95  };
96 } /* end namespace Bonmin.*/
97 #endif
double violation_
Record NLP infeasibility at final point of Ecp.
Definition: BonEcpCuts.hpp:86
Small class to manipulatee various things in an OsiSolverInterface and restore them.
virtual ~EcpCuts()
Destructor.
Definition: BonEcpCuts.hpp:39
double abs_violation_tol_
absolute tolerance for NLP constraint violation to stop ECP rounds
Definition: BonEcpCuts.hpp:90
void setNumRounds(int value)
Definition: BonEcpCuts.hpp:48
EcpCuts(const EcpCuts &copy)
Copy constructor.
Definition: BonEcpCuts.hpp:23
virtual bool doLocalSearch(BabInfo *babInfo) const
virutal method to decide if local search is performed
Definition: BonEcpCuts.hpp:78
double objValue_
Record obj value at final point of Ecp.
Definition: BonEcpCuts.hpp:84
A class to have all elements necessary to setup a branch-and-bound.
EcpCuts(BabSetupBase &b)
double rel_violation_tol_
relative tolerance for NLP constraint violation to stop ECP rounds
Definition: BonEcpCuts.hpp:92
double doEcpRounds(OsiSolverInterface &si, bool leaveSiUnchanged, double *violation=NULL)
void setPropabilityFactor(double value)
Definition: BonEcpCuts.hpp:53
int numRounds_
maximum number of iterations of generation.
Definition: BonEcpCuts.hpp:88
void setRelViolationTolerance(double value)
Definition: BonEcpCuts.hpp:62
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Register ecp cuts options.
virtual double performOa(OsiCuts &cs, solverManip &lpManip, BabInfo *babInfo, double &cutoff, const CglTreeInfo &info) const
virtual method which performs the OA algorithm by modifying lp and nlp.
Definition: BonEcpCuts.hpp:72
double beta_
Factor for probability for skipping cuts.
Definition: BonEcpCuts.hpp:94
void setAbsViolationTolerance(double value)
Definition: BonEcpCuts.hpp:58
CglCutGenerator * clone() const
clone
Definition: BonEcpCuts.hpp:33
Base class for OA algorithms.
Bonmin class for passing info between components of branch-and-cuts.
Definition: BonBabInfos.hpp:19
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
Standard cut generation methods.