Bonmin 1.8.9
Loading...
Searching...
No Matches
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"
15namespace Bonmin
16{
18 {
19 public:
21
23 EcpCuts(const EcpCuts & copy):
25 objValue_(copy.objValue_),
26 numRounds_(copy.numRounds_),
27 abs_violation_tol_(copy.abs_violation_tol_),
28 rel_violation_tol_(copy.rel_violation_tol_),
29 beta_(copy.beta_)
30 {}
31
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());
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
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_;
88 int numRounds_;
90 double abs_violation_tol_;
92 double rel_violation_tol_;
94 double beta_;
95 };
96} /* end namespace Bonmin.*/
97#endif
Bonmin class for passing info between components of branch-and-cuts.
A class to have all elements necessary to setup a branch-and-bound.
void setAbsViolationTolerance(double value)
virtual ~EcpCuts()
Destructor.
CglCutGenerator * clone() const
clone
void setPropabilityFactor(double value)
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Standard cut generation methods.
void setNumRounds(int value)
virtual bool doLocalSearch(BabInfo *babInfo) const
virutal method to decide if local search is performed
double doEcpRounds(OsiSolverInterface &si, bool leaveSiUnchanged, double *violation=NULL)
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.
void setRelViolationTolerance(double value)
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Register ecp cuts options.
EcpCuts(BabSetupBase &b)
EcpCuts(const EcpCuts &copy)
Copy constructor.
Small class to manipulatee various things in an OsiSolverInterface and restore them.
Base class for OA algorithms.
(C) Copyright International Business Machines Corporation 2007