Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Couenne::CouenneSolverInterface< T > Class Template Reference

Solver interface class with a pointer to a Couenne cut generator. More...

#include <CouenneChooseStrong.hpp>

Inheritance diagram for Couenne::CouenneSolverInterface< T >:
Inheritance graph
[legend]
Collaboration diagram for Couenne::CouenneSolverInterface< T >:
Collaboration graph
[legend]

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...
 
CouenneCutGeneratorCutGen ()
 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

CouenneCutGeneratorcutgen_
 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...
 

Detailed Description

template<class T>
class Couenne::CouenneSolverInterface< T >

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.

Constructor & Destructor Documentation

Constructor.

constructor

Definition at line 27 of file CouenneSolverInterface.cpp.

template<class T >
Couenne::CouenneSolverInterface< T >::CouenneSolverInterface ( const CouenneSolverInterface< T > &  src)

Copy constructor.

copy constructor

Definition at line 42 of file CouenneSolverInterface.cpp.

Destructor.

Definition at line 57 of file CouenneSolverInterface.cpp.

Member Function Documentation

template<class T>
virtual OsiSolverInterface* Couenne::CouenneSolverInterface< T >::clone ( bool  copyData = true) const
inlinevirtual

Clone.

Definition at line 41 of file CouenneSolverInterface.hpp.

template<class T >
bool Couenne::CouenneSolverInterface< T >::isProvenPrimalInfeasible ( ) const
virtual

we need to overwrite this since we might have internal knowledge

Definition at line 102 of file CouenneSolverInterface.cpp.

template<class T >
bool Couenne::CouenneSolverInterface< T >::isProvenOptimal ( ) const
virtual

we need to overwrite this since we might have internal knowledge

Definition at line 107 of file CouenneSolverInterface.cpp.

template<class T>
CouenneCutGenerator* Couenne::CouenneSolverInterface< T >::CutGen ( )
inline

Return cut generator pointer.

Definition at line 51 of file CouenneSolverInterface.hpp.

template<class T>
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.

template<class T >
void Couenne::CouenneSolverInterface< T >::initialSolve ( )
virtual

Solve initial LP relaxation.

Definition at line 65 of file CouenneSolverInterface.cpp.

template<class T >
void Couenne::CouenneSolverInterface< T >::resolve ( )
virtual

Resolve an LP relaxation after problem modification.

Definition at line 122 of file CouenneSolverInterface.cpp.

template<class T>
virtual void Couenne::CouenneSolverInterface< T >::resolve_nobt ( )
inlinevirtual

Resolve an LP without applying bound tightening beforehand.

Definition at line 70 of file CouenneSolverInterface.hpp.

template<class T >
void Couenne::CouenneSolverInterface< T >::markHotStart ( )
virtual

Create a hot start snapshot of the optimization process.

Definition at line 301 of file CouenneSolverInterface.cpp.

template<class T >
void Couenne::CouenneSolverInterface< T >::solveFromHotStart ( )
virtual

Optimize starting from the hot start snapshot.

Definition at line 313 of file CouenneSolverInterface.cpp.

template<class T >
void Couenne::CouenneSolverInterface< T >::unmarkHotStart ( )
virtual

Delete the hot start snapshot.

Definition at line 307 of file CouenneSolverInterface.cpp.

template<class T >
int Couenne::CouenneSolverInterface< T >::tightenBounds ( int  lightweight)
virtual

Tighten bounds on all variables (including continuous).

Definition at line 19 of file CouenneLPtightenBounds.cpp.

template<class T >
bool Couenne::CouenneSolverInterface< T >::isProvenDualInfeasible ( ) const

set doingResolve_

is this problem unbounded?

Definition at line 112 of file CouenneSolverInterface.cpp.

template<class T >
double Couenne::CouenneSolverInterface< T >::getObjValue ( ) const
inlinevirtual

Get the objective function value.

Modified due to possible constant objectives passed to Couenne

Definition at line 342 of file CouenneSolverInterface.cpp.

template<class T >
int Couenne::CouenneSolverInterface< T >::tightenBoundsCLP ( int  lightweight)
protectedvirtual

Copy of the Clp version — not light version.

Definition at line 23 of file CouenneLPtightenBoundsCLP.cpp.

template<class T >
int Couenne::CouenneSolverInterface< T >::tightenBoundsCLP_Light ( int  lightweight)
protectedvirtual

Copy of the Clp version — light version.

Definition at line 21 of file CouenneLPtightenBoundsCLP-light.cpp.

Member Data Documentation

template<class T>
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 116 of file CouenneSolverInterface.hpp.

template<class T>
bool Couenne::CouenneSolverInterface< T >::knowInfeasible_
protected

Flag indicating that infeasibility was detected during solveFromHotStart.

Definition at line 119 of file CouenneSolverInterface.hpp.

template<class T>
bool Couenne::CouenneSolverInterface< T >::knowOptimal_
protected

Flag indicating that optimality was detected during solveFromHotStart.

Definition at line 122 of file CouenneSolverInterface.hpp.

template<class T>
bool Couenne::CouenneSolverInterface< T >::knowDualInfeasible_
protected

Flag indicating this problem's continuous relaxation is unbounded.

Definition at line 125 of file CouenneSolverInterface.hpp.


The documentation for this class was generated from the following files: