Bonmin
1.8.9
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Algorithms
BonSubMipSolver.hpp
Go to the documentation of this file.
1
// (C) Copyright International Business Machines (IBM) 2006
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/07/2006
9
10
11
// Code separated from BonOaDecBase to try to clarify OAs
12
#ifndef BonSubMipSolver_HPP
13
#define BonSubMipSolver_HPP
14
#include "
IpSmartPtr.hpp
"
15
#include <string>
16
/* forward declarations.*/
17
class
OsiSolverInterface
;
18
class
OsiClpSolverInterface
;
19
class
OsiCpxSolverInterface
;
20
class
CbcStrategy;
21
class
CbcStrategyDefault;
22
23
#include "
OsiCuts.hpp
"
24
25
namespace
Bonmin
{
26
class
RegisteredOptions
;
27
class
BabSetupBase
;
29
class
SubMipSolver
30
{
31
public
:
32
enum
MILP_solve_strategy
{
33
FindGoodSolution
,
34
GetOptimum
};
35
36
SubMipSolver
(
BabSetupBase
&b,
const
std::string &prefix);
37
39
SubMipSolver
(
const
SubMipSolver
©);
40
41
~SubMipSolver
();
42
44
void
setLpSolver
(
OsiSolverInterface
* lp);
45
47
void
setStrategy
(CbcStrategyDefault * strategy);
48
50
const
double
*
getLastSolution
()
51
{
52
return
integerSolution_;
53
}
54
55
double
getLowerBound
()
56
{
57
return
lowBound_;
58
}
59
60
void
solve
(
double
cutoff,
61
int
loglevel,
62
double
maxTime){
63
if
(milp_strat_ ==
FindGoodSolution
){
64
find_good_sol
(cutoff, loglevel, maxTime);
65
}
66
else
67
optimize
(cutoff, loglevel, maxTime);
68
}
69
70
72
void
find_good_sol
(
double
cutoff,
73
int
loglevel,
74
double
maxTime);
75
77
void
optimize
(
double
cutoff,
78
int
loglevel,
79
double
maxTime);
80
82
void
optimize_with_lazy_constraints
(
double
cutoff,
83
int
loglevel,
84
double
maxTime,
const
OsiCuts
& cs);
85
87
inline
double
lowBound
()
88
{
89
return
lowBound_;
90
}
91
93
inline
bool
optimal
()
94
{
95
return
optimal_;
96
}
97
99
inline
int
nodeCount
()
100
{
101
return
nodeCount_;
102
}
103
105
inline
int
iterationCount
()
106
{
107
return
iterationCount_;
108
}
109
110
111
OsiSolverInterface
*
solver
();
112
114
static
void
registerOptions
(
Ipopt::SmartPtr<Bonmin::RegisteredOptions>
roptions);
115
private
:
117
OsiClpSolverInterface
*clp_;
119
OsiCpxSolverInterface
* cpx_;
121
double
lowBound_;
123
bool
optimal_;
125
double
* integerSolution_;
127
CbcStrategyDefault * strategy_;
129
int
nodeCount_;
131
int
iterationCount_;
133
MILP_solve_strategy
milp_strat_;
135
double
gap_tol_;
137
bool
ownClp_;
138
};
139
140
}
141
142
#endif
143
IpSmartPtr.hpp
OsiCuts.hpp
Bonmin::BabSetupBase
A class to have all elements necessary to setup a branch-and-bound.
Definition
BonBabSetupBase.hpp:26
Bonmin::SubMipSolver::registerOptions
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Register options for that Oa based cut generation method.
Bonmin::SubMipSolver::nodeCount
int nodeCount()
Returns number of nodes in last solve.
Definition
BonSubMipSolver.hpp:99
Bonmin::SubMipSolver::getLastSolution
const double * getLastSolution()
get the solution found in last local search (return NULL if no solution).
Definition
BonSubMipSolver.hpp:50
Bonmin::SubMipSolver::~SubMipSolver
~SubMipSolver()
Bonmin::SubMipSolver::SubMipSolver
SubMipSolver(BabSetupBase &b, const std::string &prefix)
Constructor.
Bonmin::SubMipSolver::solve
void solve(double cutoff, int loglevel, double maxTime)
Definition
BonSubMipSolver.hpp:60
Bonmin::SubMipSolver::optimize
void optimize(double cutoff, int loglevel, double maxTime)
update cutoff and optimize MIP.
Bonmin::SubMipSolver::find_good_sol
void find_good_sol(double cutoff, int loglevel, double maxTime)
update cutoff and perform a local search to a good solution.
Bonmin::SubMipSolver::SubMipSolver
SubMipSolver(const SubMipSolver ©)
Copy Constructor.
Bonmin::SubMipSolver::MILP_solve_strategy
MILP_solve_strategy
Definition
BonSubMipSolver.hpp:32
Bonmin::SubMipSolver::GetOptimum
@ GetOptimum
Definition
BonSubMipSolver.hpp:34
Bonmin::SubMipSolver::FindGoodSolution
@ FindGoodSolution
Definition
BonSubMipSolver.hpp:33
Bonmin::SubMipSolver::setLpSolver
void setLpSolver(OsiSolverInterface *lp)
Assign lp solver.
Bonmin::SubMipSolver::solver
OsiSolverInterface * solver()
Bonmin::SubMipSolver::optimize_with_lazy_constraints
void optimize_with_lazy_constraints(double cutoff, int loglevel, double maxTime, const OsiCuts &cs)
update cutoff, put OA constraints in cs as lazy constraints and optimize MIP.
Bonmin::SubMipSolver::lowBound
double lowBound()
Returns lower bound.
Definition
BonSubMipSolver.hpp:87
Bonmin::SubMipSolver::optimal
bool optimal()
returns optimality status.
Definition
BonSubMipSolver.hpp:93
Bonmin::SubMipSolver::getLowerBound
double getLowerBound()
Definition
BonSubMipSolver.hpp:55
Bonmin::SubMipSolver::iterationCount
int iterationCount()
Returns number of simplex iterations in last solve.
Definition
BonSubMipSolver.hpp:105
Bonmin::SubMipSolver::setStrategy
void setStrategy(CbcStrategyDefault *strategy)
Assign a strategy.
Ipopt::RegisteredOptions
Ipopt::SmartPtr
OsiClpSolverInterface
OsiCpxSolverInterface
OsiCuts
OsiSolverInterface
Bonmin
(C) Copyright International Business Machines Corporation 2007
Definition
BonAmplSetup.hpp:16
Generated by
1.17.0