Solver interface class with a pointer to a Couenne cut generator. More...
#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 |
| set doingResolve_ | |
| virtual double | getObjValue () const |
| Get the objective function value. | |
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. | |
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 27 of file CouenneSolverInterface.hpp.
| Couenne::CouenneSolverInterface< T >::CouenneSolverInterface | ( | CouenneCutGenerator * | cg = NULL |
) | [inline] |
| Couenne::CouenneSolverInterface< T >::CouenneSolverInterface | ( | const CouenneSolverInterface< T > & | src | ) | [inline] |
| Couenne::CouenneSolverInterface< T >::~CouenneSolverInterface | ( | ) | [inline] |
Destructor.
Definition at line 52 of file CouenneSolverInterface.cpp.
| virtual OsiSolverInterface* Couenne::CouenneSolverInterface< T >::clone | ( | bool | copyData = true |
) | const [inline, virtual] |
Clone.
Definition at line 41 of file CouenneSolverInterface.hpp.
| bool Couenne::CouenneSolverInterface< T >::isProvenPrimalInfeasible | ( | ) | const [inline, virtual] |
we need to overwrite this since we might have internal knowledge
Definition at line 91 of file CouenneSolverInterface.cpp.
| bool Couenne::CouenneSolverInterface< T >::isProvenOptimal | ( | ) | const [inline, virtual] |
we need to overwrite this since we might have internal knowledge
Definition at line 96 of file CouenneSolverInterface.cpp.
| CouenneCutGenerator* Couenne::CouenneSolverInterface< T >::CutGen | ( | ) | [inline] |
Return cut generator pointer.
Definition at line 51 of file CouenneSolverInterface.hpp.
| void Couenne::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 57 of file CouenneSolverInterface.hpp.
| void Couenne::CouenneSolverInterface< T >::initialSolve | ( | ) | [inline, virtual] |
Solve initial LP relaxation.
Definition at line 60 of file CouenneSolverInterface.cpp.
| void Couenne::CouenneSolverInterface< T >::resolve | ( | ) | [inline, virtual] |
Resolve an LP relaxation after problem modification.
Definition at line 111 of file CouenneSolverInterface.cpp.
| virtual void Couenne::CouenneSolverInterface< T >::resolve_nobt | ( | ) | [inline, virtual] |
Resolve an LP without applying bound tightening beforehand.
Definition at line 70 of file CouenneSolverInterface.hpp.
| void Couenne::CouenneSolverInterface< T >::markHotStart | ( | ) | [inline, virtual] |
Create a hot start snapshot of the optimization process.
Definition at line 290 of file CouenneSolverInterface.cpp.
| void Couenne::CouenneSolverInterface< T >::solveFromHotStart | ( | ) | [inline, virtual] |
Optimize starting from the hot start snapshot.
Definition at line 302 of file CouenneSolverInterface.cpp.
| void Couenne::CouenneSolverInterface< T >::unmarkHotStart | ( | ) | [inline, virtual] |
Delete the hot start snapshot.
Definition at line 296 of file CouenneSolverInterface.cpp.
| int Couenne::CouenneSolverInterface< T >::tightenBounds | ( | int | lightweight | ) | [inline, virtual] |
Tighten bounds on all variables (including continuous).
Definition at line 19 of file CouenneLPtightenBounds.cpp.
| bool Couenne::CouenneSolverInterface< T >::isProvenDualInfeasible | ( | ) | const [inline] |
set doingResolve_
is this problem unbounded?
Definition at line 101 of file CouenneSolverInterface.cpp.
| double Couenne::CouenneSolverInterface< T >::getObjValue | ( | ) | const [inline, virtual] |
Get the objective function value.
Modified due to possible constant objectives passed to Couenne
Definition at line 331 of file CouenneSolverInterface.cpp.
| int Couenne::CouenneSolverInterface< T >::tightenBoundsCLP | ( | int | lightweight | ) | [inline, protected, virtual] |
Copy of the Clp version --- not light version.
Definition at line 23 of file CouenneLPtightenBoundsCLP.cpp.
| int Couenne::CouenneSolverInterface< T >::tightenBoundsCLP_Light | ( | int | lightweight | ) | [inline, protected, virtual] |
Copy of the Clp version --- light version.
Definition at line 21 of file CouenneLPtightenBoundsCLP-light.cpp.
CouenneCutGenerator* Couenne::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 112 of file CouenneSolverInterface.hpp.
bool Couenne::CouenneSolverInterface< T >::knowInfeasible_ [protected] |
Flag indicating that infeasibility was detected during solveFromHotStart.
Definition at line 115 of file CouenneSolverInterface.hpp.
bool Couenne::CouenneSolverInterface< T >::knowOptimal_ [protected] |
Flag indicating that optimality was detected during solveFromHotStart.
Definition at line 118 of file CouenneSolverInterface.hpp.
bool Couenne::CouenneSolverInterface< T >::knowDualInfeasible_ [protected] |
Flag indicating this problem's continuous relaxation is unbounded.
Definition at line 121 of file CouenneSolverInterface.hpp.
1.6.1