#include <CouenneSolverInterface.hpp>
Collaboration diagram for CouenneSolverInterface:
Public Member Functions | |
CouenneSolverInterface (CouenneCutGenerator *cg=NULL) | |
Constructor. | |
CouenneSolverInterface (const CouenneSolverInterface &src) | |
Copy constructor. | |
~CouenneSolverInterface () | |
Destructor. | |
virtual OsiSolverInterface * | clone (bool copyData=true) const |
Clone. | |
virtual bool | isProvenPrimalInfeasible () const |
we need to overwrite this since we might have internal knowledge | |
virtual bool | isProvenOptimal () const |
we need to overwrite this since we might have internal knowledge | |
CouenneCutGenerator * | CutGen () |
Return cut generator pointer. | |
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). | |
virtual void | initialSolve () |
Solve initial LP relaxation. | |
virtual void | resolve () |
Resolve an LP relaxation after problem modification. | |
virtual void | resolve_nobt () |
Resolve an LP without applying bound tightening beforehand. | |
virtual int | tightenBounds (int lightweight) |
Tighten bounds on all variables (including continuous). | |
virtual int | tightenBoundsCLP (int lightweight) |
Copy of the Clp version --- not light version. | |
virtual int | tightenBoundsCLP_Light (int lightweight) |
Copy of the Clp version --- light version. | |
ClpSimplex * | continuousModel () |
Returns pointer to CLP structure. | |
bool & | doingResolve () |
set doingResolve_ | |
bool | isProvenDualInfeasible () const |
is this problem unbounded? | |
Methods for strong branching. | |
virtual void | markHotStart () |
Create a hot start snapshot of the optimization process. | |
virtual void | solveFromHotStart () |
Optimize starting from the hot start snapshot. | |
virtual void | unmarkHotStart () |
Delete the hot start snapshot. | |
Protected Attributes | |
CouenneCutGenerator * | cutgen_ |
The pointer to the Couenne cut generator. | |
bool | knowInfeasible_ |
Flag indicating that infeasibility was detected during solveFromHotStart. | |
bool | knowOptimal_ |
Flag indicating that optimality was detected during solveFromHotStart. | |
bool | knowDualInfeasible_ |
Flag indicating this problem's continuous relaxation is unbounded. | |
bool | doingResolve_ |
flag to indicate this is an LP for the BB, not for (e.g. |
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 27 of file CouenneSolverInterface.hpp.
CouenneSolverInterface::CouenneSolverInterface | ( | CouenneCutGenerator * | cg = NULL |
) |
Constructor.
Definition at line 18 of file CouenneSolverInterface.cpp.
References cutgen_.
Referenced by clone().
CouenneSolverInterface::CouenneSolverInterface | ( | const CouenneSolverInterface & | src | ) |
CouenneSolverInterface::~CouenneSolverInterface | ( | ) |
virtual OsiSolverInterface* CouenneSolverInterface::clone | ( | bool | copyData = true |
) | const [inline, virtual] |
Clone.
Definition at line 41 of file CouenneSolverInterface.hpp.
References CouenneSolverInterface().
Referenced by resolve().
bool CouenneSolverInterface::isProvenPrimalInfeasible | ( | ) | const [virtual] |
we need to overwrite this since we might have internal knowledge
Definition at line 96 of file CouenneSolverInterface.cpp.
References knowInfeasible_.
Referenced by solveFromHotStart().
bool CouenneSolverInterface::isProvenOptimal | ( | ) | const [virtual] |
we need to overwrite this since we might have internal knowledge
Definition at line 100 of file CouenneSolverInterface.cpp.
References knowOptimal_.
Referenced by resolve(), and solveFromHotStart().
CouenneCutGenerator* CouenneSolverInterface::CutGen | ( | ) | [inline] |
Return cut generator pointer.
Definition at line 51 of file CouenneSolverInterface.hpp.
References cutgen_.
void CouenneSolverInterface::setCutGenPtr | ( | CouenneCutGenerator * | cg | ) | [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.
References cutgen_.
void CouenneSolverInterface::initialSolve | ( | ) | [virtual] |
Solve initial LP relaxation.
Definition at line 51 of file CouenneSolverInterface.cpp.
References Couenne_large_bound, cutgen_, knowDualInfeasible_, knowInfeasible_, knowOptimal_, and x.
Referenced by resolve().
void CouenneSolverInterface::resolve | ( | ) | [virtual] |
Resolve an LP relaxation after problem modification.
Definition at line 113 of file CouenneSolverInterface.cpp.
References clone(), COUENNE_EPS, COUENNE_INFINITY, Couenne_large_bound, cutgen_, doingResolve(), e, initialSolve(), isProvenOptimal(), knowDualInfeasible_, knowInfeasible_, knowOptimal_, ws, and x.
Referenced by solveFromHotStart().
virtual void CouenneSolverInterface::resolve_nobt | ( | ) | [inline, virtual] |
Resolve an LP without applying bound tightening beforehand.
Definition at line 70 of file CouenneSolverInterface.hpp.
void CouenneSolverInterface::markHotStart | ( | ) | [virtual] |
Create a hot start snapshot of the optimization process.
Definition at line 254 of file CouenneSolverInterface.cpp.
void CouenneSolverInterface::solveFromHotStart | ( | ) | [virtual] |
Optimize starting from the hot start snapshot.
Definition at line 270 of file CouenneSolverInterface.cpp.
References Couenne_large_bound, cutgen_, isProvenDualInfeasible(), isProvenOptimal(), isProvenPrimalInfeasible(), knowDualInfeasible_, knowInfeasible_, knowOptimal_, resolve(), and x.
void CouenneSolverInterface::unmarkHotStart | ( | ) | [virtual] |
int CouenneSolverInterface::tightenBounds | ( | int | lightweight | ) | [virtual] |
Tighten bounds on all variables (including continuous).
Definition at line 17 of file CouenneLPtightenBounds.cpp.
References t_chg_bounds::CHANGED, COUENNE_EPS, cutgen_, and tightenBoundsCLP().
int CouenneSolverInterface::tightenBoundsCLP | ( | int | lightweight | ) | [virtual] |
Copy of the Clp version --- not light version.
Definition at line 18 of file CouenneLPtightenBoundsCLP.cpp.
References COIN_DEVELOP, COUENNE_EPS, e, and tightenBoundsCLP_Light().
Referenced by tightenBounds().
int CouenneSolverInterface::tightenBoundsCLP_Light | ( | int | lightweight | ) | [virtual] |
Copy of the Clp version --- light version.
Definition at line 18 of file CouenneLPtightenBoundsCLP-light.cpp.
References n.
Referenced by tightenBoundsCLP().
ClpSimplex* CouenneSolverInterface::continuousModel | ( | ) | [inline] |
bool& CouenneSolverInterface::doingResolve | ( | ) | [inline] |
set doingResolve_
Definition at line 100 of file CouenneSolverInterface.hpp.
References doingResolve_.
Referenced by resolve().
bool CouenneSolverInterface::isProvenDualInfeasible | ( | ) | const |
is this problem unbounded?
Definition at line 104 of file CouenneSolverInterface.cpp.
References knowDualInfeasible_.
Referenced by solveFromHotStart().
CouenneCutGenerator* CouenneSolverInterface::cutgen_ [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 112 of file CouenneSolverInterface.hpp.
Referenced by CouenneSolverInterface(), CutGen(), initialSolve(), resolve(), setCutGenPtr(), solveFromHotStart(), and tightenBounds().
bool CouenneSolverInterface::knowInfeasible_ [protected] |
Flag indicating that infeasibility was detected during solveFromHotStart.
Definition at line 115 of file CouenneSolverInterface.hpp.
Referenced by initialSolve(), isProvenPrimalInfeasible(), resolve(), and solveFromHotStart().
bool CouenneSolverInterface::knowOptimal_ [protected] |
Flag indicating that optimality was detected during solveFromHotStart.
Definition at line 118 of file CouenneSolverInterface.hpp.
Referenced by initialSolve(), isProvenOptimal(), resolve(), and solveFromHotStart().
bool CouenneSolverInterface::knowDualInfeasible_ [protected] |
Flag indicating this problem's continuous relaxation is unbounded.
Definition at line 121 of file CouenneSolverInterface.hpp.
Referenced by initialSolve(), isProvenDualInfeasible(), resolve(), and solveFromHotStart().
bool CouenneSolverInterface::doingResolve_ [protected] |
flag to indicate this is an LP for the BB, not for (e.g.
) strong branching or OBBT
Definition at line 125 of file CouenneSolverInterface.hpp.
Referenced by doingResolve().