Solver interface class with a pointer to a Couenne cut generator. More...
#include <CouenneChooseStrong.hpp>
Public Member Functions | |
CouenneSolverInterface (CouenneCutGenerator *cg=NULL) | |
Constructor. More... | |
CouenneSolverInterface (const CouenneSolverInterface &src) | |
Copy constructor. More... | |
~CouenneSolverInterface () | |
Destructor. More... | |
virtual OsiSolverInterface * | clone (bool copyData=true) const |
Clone. More... | |
virtual bool | isProvenPrimalInfeasible () const |
we need to overwrite this since we might have internal knowledge More... | |
virtual bool | isProvenOptimal () const |
we need to overwrite this since we might have internal knowledge More... | |
CouenneCutGenerator * | CutGen () |
Return cut generator pointer. More... | |
void | setCutGenPtr (CouenneCutGenerator *cg) |
Set cut generator pointer after setup, to avoid changes in the pointer due to cut generator cloning (it happens twice in the algorithm) More... | |
virtual void | initialSolve () |
Solve initial LP relaxation. More... | |
virtual void | resolve () |
Resolve an LP relaxation after problem modification. More... | |
virtual void | resolve_nobt () |
Resolve an LP without applying bound tightening beforehand. More... | |
virtual int | tightenBounds (int lightweight) |
Tighten bounds on all variables (including continuous). More... | |
bool | isProvenDualInfeasible () const |
set doingResolve_ More... | |
virtual double | getObjValue () const |
Get the objective function value. More... | |
Methods for strong branching. | |
virtual void | markHotStart () |
Create a hot start snapshot of the optimization process. More... | |
virtual void | solveFromHotStart () |
Optimize starting from the hot start snapshot. More... | |
virtual void | unmarkHotStart () |
Delete the hot start snapshot. More... | |
Protected Member Functions | |
virtual int | tightenBoundsCLP (int lightweight) |
Copy of the Clp version — not light version. More... | |
virtual int | tightenBoundsCLP_Light (int lightweight) |
Copy of the Clp version — light version. More... | |
Protected Attributes | |
CouenneCutGenerator * | cutgen_ |
The pointer to the Couenne cut generator. More... | |
bool | knowInfeasible_ |
Flag indicating that infeasibility was detected during solveFromHotStart. More... | |
bool | knowOptimal_ |
Flag indicating that optimality was detected during solveFromHotStart. More... | |
bool | knowDualInfeasible_ |
Flag indicating this problem's continuous relaxation is unbounded. More... | |
Solver interface class with a pointer to a Couenne cut generator.
Its main purposes are:
1) to apply bound tightening before re-solving 2) to replace OsiSolverInterface::isInteger () with problem_ -> [expression] -> isInteger () 3) to use NLP solution at branching
Definition at line 21 of file CouenneChooseStrong.hpp.
Couenne::CouenneSolverInterface< T >::CouenneSolverInterface | ( | CouenneCutGenerator * | cg = NULL | ) |
Couenne::CouenneSolverInterface< T >::CouenneSolverInterface | ( | const CouenneSolverInterface< T > & | src | ) |
Couenne::CouenneSolverInterface< T >::~CouenneSolverInterface | ( | ) |
Destructor.
Definition at line 57 of file CouenneSolverInterface.cpp.
|
inlinevirtual |
Clone.
Definition at line 41 of file CouenneSolverInterface.hpp.
|
virtual |
we need to overwrite this since we might have internal knowledge
Definition at line 102 of file CouenneSolverInterface.cpp.
|
virtual |
we need to overwrite this since we might have internal knowledge
Definition at line 107 of file CouenneSolverInterface.cpp.
|
inline |
Return cut generator pointer.
Definition at line 51 of file CouenneSolverInterface.hpp.
|
inline |
Set cut generator pointer after setup, to avoid changes in the pointer due to cut generator cloning (it happens twice in the algorithm)
Definition at line 57 of file CouenneSolverInterface.hpp.
|
virtual |
Solve initial LP relaxation.
Definition at line 65 of file CouenneSolverInterface.cpp.
|
virtual |
Resolve an LP relaxation after problem modification.
Definition at line 122 of file CouenneSolverInterface.cpp.
|
inlinevirtual |
Resolve an LP without applying bound tightening beforehand.
Definition at line 70 of file CouenneSolverInterface.hpp.
|
virtual |
Create a hot start snapshot of the optimization process.
Definition at line 301 of file CouenneSolverInterface.cpp.
|
virtual |
Optimize starting from the hot start snapshot.
Definition at line 313 of file CouenneSolverInterface.cpp.
|
virtual |
Delete the hot start snapshot.
Definition at line 307 of file CouenneSolverInterface.cpp.
|
virtual |
Tighten bounds on all variables (including continuous).
Definition at line 19 of file CouenneLPtightenBounds.cpp.
bool Couenne::CouenneSolverInterface< T >::isProvenDualInfeasible | ( | ) | const |
set doingResolve_
is this problem unbounded?
Definition at line 112 of file CouenneSolverInterface.cpp.
|
inlinevirtual |
Get the objective function value.
Modified due to possible constant objectives passed to Couenne
Definition at line 342 of file CouenneSolverInterface.cpp.
|
protectedvirtual |
Copy of the Clp version — not light version.
Definition at line 23 of file CouenneLPtightenBoundsCLP.cpp.
|
protectedvirtual |
Copy of the Clp version — light version.
Definition at line 21 of file CouenneLPtightenBoundsCLP-light.cpp.
|
protected |
The pointer to the Couenne cut generator.
Gives us a lot of information, for instance the nlp solver pointer, and the chance to do bound tightening before resolve ().
Definition at line 116 of file CouenneSolverInterface.hpp.
|
protected |
Flag indicating that infeasibility was detected during solveFromHotStart.
Definition at line 119 of file CouenneSolverInterface.hpp.
|
protected |
Flag indicating that optimality was detected during solveFromHotStart.
Definition at line 122 of file CouenneSolverInterface.hpp.
|
protected |
Flag indicating this problem's continuous relaxation is unbounded.
Definition at line 125 of file CouenneSolverInterface.hpp.