#include <CouenneSolverInterface.hpp>
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). | |
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 Member Functions | |
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. | |
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. |
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 26 of file CouenneSolverInterface.hpp.
CouenneSolverInterface< T >::CouenneSolverInterface | ( | CouenneCutGenerator * | cg = NULL |
) |
CouenneSolverInterface< T >::CouenneSolverInterface | ( | const CouenneSolverInterface< T > & | src | ) |
Copy constructor.
CouenneSolverInterface< T >::~CouenneSolverInterface | ( | ) |
Destructor.
virtual OsiSolverInterface* CouenneSolverInterface< T >::clone | ( | bool | copyData = true |
) | const [inline, virtual] |
Clone.
Definition at line 40 of file CouenneSolverInterface.hpp.
References CouenneSolverInterface< T >::CouenneSolverInterface().
virtual bool CouenneSolverInterface< T >::isProvenPrimalInfeasible | ( | ) | const [virtual] |
we need to overwrite this since we might have internal knowledge
virtual bool CouenneSolverInterface< T >::isProvenOptimal | ( | ) | const [virtual] |
we need to overwrite this since we might have internal knowledge
CouenneCutGenerator* CouenneSolverInterface< T >::CutGen | ( | ) | [inline] |
Return cut generator pointer.
Definition at line 50 of file CouenneSolverInterface.hpp.
References CouenneSolverInterface< T >::cutgen_.
void CouenneSolverInterface< T >::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 56 of file CouenneSolverInterface.hpp.
References CouenneSolverInterface< T >::cutgen_.
virtual void CouenneSolverInterface< T >::initialSolve | ( | ) | [virtual] |
Solve initial LP relaxation.
virtual void CouenneSolverInterface< T >::resolve | ( | ) | [virtual] |
Resolve an LP relaxation after problem modification.
virtual void CouenneSolverInterface< T >::resolve_nobt | ( | ) | [inline, virtual] |
Resolve an LP without applying bound tightening beforehand.
Definition at line 69 of file CouenneSolverInterface.hpp.
virtual void CouenneSolverInterface< T >::markHotStart | ( | ) | [virtual] |
Create a hot start snapshot of the optimization process.
virtual void CouenneSolverInterface< T >::solveFromHotStart | ( | ) | [virtual] |
Optimize starting from the hot start snapshot.
virtual void CouenneSolverInterface< T >::unmarkHotStart | ( | ) | [virtual] |
Delete the hot start snapshot.
virtual int CouenneSolverInterface< T >::tightenBounds | ( | int | lightweight | ) | [virtual] |
Tighten bounds on all variables (including continuous).
bool CouenneSolverInterface< T >::isProvenDualInfeasible | ( | ) | const |
is this problem unbounded?
virtual int CouenneSolverInterface< T >::tightenBoundsCLP | ( | int | lightweight | ) | [protected, virtual] |
Copy of the Clp version --- not light version.
virtual int CouenneSolverInterface< T >::tightenBoundsCLP_Light | ( | int | lightweight | ) | [protected, virtual] |
Copy of the Clp version --- light version.
CouenneCutGenerator* CouenneSolverInterface< T >::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 107 of file CouenneSolverInterface.hpp.
Referenced by CouenneSolverInterface< T >::CutGen(), and CouenneSolverInterface< T >::setCutGenPtr().
bool CouenneSolverInterface< T >::knowInfeasible_ [protected] |
Flag indicating that infeasibility was detected during solveFromHotStart.
Definition at line 110 of file CouenneSolverInterface.hpp.
bool CouenneSolverInterface< T >::knowOptimal_ [protected] |
Flag indicating that optimality was detected during solveFromHotStart.
Definition at line 113 of file CouenneSolverInterface.hpp.
bool CouenneSolverInterface< T >::knowDualInfeasible_ [protected] |
Flag indicating this problem's continuous relaxation is unbounded.
Definition at line 116 of file CouenneSolverInterface.hpp.