Scippy

SCIP

Solving Constraint Integer Programs

polyscip::doubledescription::DoubleDescriptionMethod Class Reference

Detailed Description

Algorithm for transforming h-representation to v-representation.

Details of the underlying algorithm can be found in "Double Description Method Revisited" by K. Fukuda and A. Prodon

Definition at line 197 of file double_description_method.h.

Algorithm for transforming h-representation to v-representation. More...

#include <double_description_method.h>

Public Types

using AdjPair = std::pair< std::reference_wrapper< const V_RepT >, std::reference_wrapper< const V_RepT > >
 Pair of adjacent v-representation elements. More...
 
using AdjPairContainer = std::vector< AdjPair >
 Container for adjacent pairs. More...
 

Public Member Functions

 DoubleDescriptionMethod (SCIP *scip, std::size_t no_all_obj, const ResultContainer &bounded, const ResultContainer &unbounded)
 
void computeVRep ()
 
void computeVRep_Var1 ()
 
void printVRep (std::ostream &os=std::cout, bool withIncidentFacets=false) const
 
std::size_t size () const
 
H_RepC getHRep ()
 
V_RepC getVRep ()
 
H_RepC && moveHRep ()
 
V_RepC && moveVRep ()
 

Member Typedef Documentation

◆ AdjPair

using polyscip::doubledescription::DoubleDescriptionMethod::AdjPair = std::pair<std::reference_wrapper<const V_RepT>, std::reference_wrapper<const V_RepT> >

Pair of adjacent v-representation elements.

Definition at line 199 of file double_description_method.h.

◆ AdjPairContainer

Container for adjacent pairs.

Definition at line 200 of file double_description_method.h.

Constructor & Destructor Documentation

◆ DoubleDescriptionMethod()

polyscip::doubledescription::DoubleDescriptionMethod::DoubleDescriptionMethod ( SCIP scip,
std::size_t  no_all_obj,
const ResultContainer bounded,
const ResultContainer unbounded 
)
explicit

Constructor

Parameters
scipSCIP pointer
no_all_objNumber of objectives
boundedBounded results
unboundedUnbounded results

Definition at line 246 of file double_description_method.cpp.

References polyscip::doubledescription::V_RepT::getMinInfeasIndex(), and polyscip::doubledescription::V_RepT::isZeroSlackIndex().

Member Function Documentation

◆ computeVRep()

void polyscip::doubledescription::DoubleDescriptionMethod::computeVRep ( )

Standard double description algorithm

Definition at line 332 of file double_description_method.cpp.

◆ computeVRep_Var1()

void polyscip::doubledescription::DoubleDescriptionMethod::computeVRep_Var1 ( )

Variation 1 of double description algorithm

Definition at line 370 of file double_description_method.cpp.

References h, polyscip::doubledescription::V_RepT::isZeroSlackIndex(), SCIPisEQ(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), and w.

◆ printVRep()

void polyscip::doubledescription::DoubleDescriptionMethod::printVRep ( std::ostream &  os = std::cout,
bool  withIncidentFacets = false 
) const

Print function

Parameters
osOutput stream to write to
withIncidentFacetsIndicates whether corresponding facets should be printed

Definition at line 324 of file double_description_method.cpp.

◆ size()

std::size_t polyscip::doubledescription::DoubleDescriptionMethod::size ( ) const
inline

Get size of v-representation

Returns
Number of elements in v-representation

Definition at line 236 of file double_description_method.h.

◆ getHRep()

H_RepC polyscip::doubledescription::DoubleDescriptionMethod::getHRep ( )
inline

Copy entire h-representation

Returns
Copy of container storing entire h-representation

Definition at line 242 of file double_description_method.h.

◆ getVRep()

V_RepC polyscip::doubledescription::DoubleDescriptionMethod::getVRep ( )
inline

Copy entire v-representation

Returns
Copy of container storing entire v-representation

Definition at line 248 of file double_description_method.h.

◆ moveHRep()

H_RepC&& polyscip::doubledescription::DoubleDescriptionMethod::moveHRep ( )
inline

Make entire h-representation movable

Returns
Rvalue reference to container storing entire h-representation

Definition at line 254 of file double_description_method.h.

◆ moveVRep()

V_RepC&& polyscip::doubledescription::DoubleDescriptionMethod::moveVRep ( )
inline

Make entire v-representation movable

Returns
Rvalue reference to container storing entire v-representation

Definition at line 260 of file double_description_method.h.

References w.