Cbc 2.10.12
Loading...
Searching...
No Matches
CbcSymmetry Class Reference

Class to deal with symmetry. More...

#include <CbcSymmetry.hpp>

Collaboration diagram for CbcSymmetry:

Classes

struct  less_than_str
struct  myclass
struct  myclass0
class  Node

Constructors and destructors

myclass0 node_sort
myclass index_sort
std::vector< Nodenode_info_
CbcNautynauty_info_
int numberColumns_
int numberUsefulOrbits_
int numberUsefulObjects_
int numberPermutations_
cbc_permutepermutations_
int * whichOrbit_
int stats_ [5]
double nautyTime_
double nautyFixes_
double nautyOtherBranches_
int nautyBranchCalls_
int lastNautyBranchSucceeded_
int nautyBranchSucceeded_
int nautyFixCalls_
int lastNautyFixSucceeded_
int nautyFixSucceeded_
 CbcSymmetry ()
 Default constructor.
 CbcSymmetry (const CbcSymmetry &)
 Copy constructor.
CbcSymmetryoperator= (const CbcSymmetry &rhs)
 Assignment operator.
 ~CbcSymmetry ()
 Destructor.
std::vector< int > * Find_Orbit (int) const
void Compute_Symmetry () const
int statsOrbits (CbcModel *model, int type) const
void Print_Orbits (int type=0) const
void fillOrbits ()
int orbitalFixing (OsiSolverInterface *solver)
 Fixes variables using orbits (returns number fixed)
int orbitalFixing2 (OsiSolverInterface *solver)
 Fixes variables using root orbits (returns number fixed)
int * whichOrbit ()
int * fixedToZero () const
int numberUsefulOrbits () const
int numberUsefulObjects () const
int largestOrbit (const double *lower, const double *upper) const
void ChangeBounds (const double *lower, const double *upper, int numberColumns, bool justFixedAtOne) const
int changeBounds (int kColumn, double *saveLower, double *saveUpper, OsiSolverInterface *solver, int mode) const
 for simple stuff - returns number can fix if can use saved orbit (mode 1) otherwise may fix and return number can fix (mode 0)
int changeBounds (double *saveLower, double *saveUpper, OsiSolverInterface *solver) const
int changeBounds2 (double *saveLower, double *saveUpper, OsiSolverInterface *solver) const
int fixSome (int iColumn, double *columnLower, double *columnUpper) const
int worthBranching (const double *saveLower, const double *saveUpper, int iColumn, int &numberCouldFix) const
 return number of orbits if worth branching
void fixSuccess (int nFixed)
void adjustStats (const CbcSymmetry *other)
 Adjust statistics from threads.
int numberColumns () const
bool compare (Node &a, Node &b) const
CbcNautygetNtyInfo ()
void setupSymmetry (CbcModel *model)
 empty if no NTY, symmetry data structure setup otherwise
void addPermutation (cbc_permute permutation)
 takes ownership of cbc_permute (orbits part)
int numberPermutations () const
 Number of permutation arrays.
int * permutation (int which) const
 Permutation arrays.
int numberInPermutation (int which) const
void incrementNautyBranches (int n)
void incrementBranchSucceeded ()

Detailed Description

Class to deal with symmetry.

Hacked from Couenne Thanks, but it had been nice to make sure that there are no symbol collisions when building Couenne with this Cbc.

Definition at line 71 of file CbcSymmetry.hpp.

Constructor & Destructor Documentation

◆ CbcSymmetry() [1/2]

CbcSymmetry::CbcSymmetry ( )

Default constructor.

◆ CbcSymmetry() [2/2]

CbcSymmetry::CbcSymmetry ( const CbcSymmetry & )

Copy constructor.

◆ ~CbcSymmetry()

CbcSymmetry::~CbcSymmetry ( )

Destructor.

Member Function Documentation

◆ operator=()

CbcSymmetry & CbcSymmetry::operator= ( const CbcSymmetry & rhs)

Assignment operator.

◆ Find_Orbit()

std::vector< int > * CbcSymmetry::Find_Orbit ( int ) const

◆ Compute_Symmetry()

void CbcSymmetry::Compute_Symmetry ( ) const

◆ statsOrbits()

int CbcSymmetry::statsOrbits ( CbcModel * model,
int type ) const

◆ Print_Orbits()

void CbcSymmetry::Print_Orbits ( int type = 0) const

◆ fillOrbits()

void CbcSymmetry::fillOrbits ( )

◆ orbitalFixing()

int CbcSymmetry::orbitalFixing ( OsiSolverInterface * solver)

Fixes variables using orbits (returns number fixed)

◆ orbitalFixing2()

int CbcSymmetry::orbitalFixing2 ( OsiSolverInterface * solver)

Fixes variables using root orbits (returns number fixed)

◆ whichOrbit()

int * CbcSymmetry::whichOrbit ( )
inline

Definition at line 152 of file CbcSymmetry.hpp.

◆ fixedToZero()

int * CbcSymmetry::fixedToZero ( ) const
inline

Definition at line 156 of file CbcSymmetry.hpp.

◆ numberUsefulOrbits()

int CbcSymmetry::numberUsefulOrbits ( ) const
inline

Definition at line 160 of file CbcSymmetry.hpp.

◆ numberUsefulObjects()

int CbcSymmetry::numberUsefulObjects ( ) const
inline

Definition at line 164 of file CbcSymmetry.hpp.

◆ largestOrbit()

int CbcSymmetry::largestOrbit ( const double * lower,
const double * upper ) const

◆ ChangeBounds()

void CbcSymmetry::ChangeBounds ( const double * lower,
const double * upper,
int numberColumns,
bool justFixedAtOne ) const

◆ changeBounds() [1/2]

int CbcSymmetry::changeBounds ( int kColumn,
double * saveLower,
double * saveUpper,
OsiSolverInterface * solver,
int mode ) const

for simple stuff - returns number can fix if can use saved orbit (mode 1) otherwise may fix and return number can fix (mode 0)

◆ changeBounds() [2/2]

int CbcSymmetry::changeBounds ( double * saveLower,
double * saveUpper,
OsiSolverInterface * solver ) const

◆ changeBounds2()

int CbcSymmetry::changeBounds2 ( double * saveLower,
double * saveUpper,
OsiSolverInterface * solver ) const

◆ fixSome()

int CbcSymmetry::fixSome ( int iColumn,
double * columnLower,
double * columnUpper ) const

◆ worthBranching()

int CbcSymmetry::worthBranching ( const double * saveLower,
const double * saveUpper,
int iColumn,
int & numberCouldFix ) const

return number of orbits if worth branching

◆ fixSuccess()

void CbcSymmetry::fixSuccess ( int nFixed)

◆ adjustStats()

void CbcSymmetry::adjustStats ( const CbcSymmetry * other)

Adjust statistics from threads.

◆ numberColumns()

int CbcSymmetry::numberColumns ( ) const
inline

Definition at line 187 of file CbcSymmetry.hpp.

◆ compare()

bool CbcSymmetry::compare ( Node & a,
Node & b ) const
inline

◆ getNtyInfo()

CbcNauty * CbcSymmetry::getNtyInfo ( )
inline

Definition at line 190 of file CbcSymmetry.hpp.

◆ setupSymmetry()

void CbcSymmetry::setupSymmetry ( CbcModel * model)

empty if no NTY, symmetry data structure setup otherwise

◆ addPermutation()

void CbcSymmetry::addPermutation ( cbc_permute permutation)

takes ownership of cbc_permute (orbits part)

◆ numberPermutations()

int CbcSymmetry::numberPermutations ( ) const
inline

Number of permutation arrays.

Definition at line 201 of file CbcSymmetry.hpp.

◆ permutation()

int * CbcSymmetry::permutation ( int which) const
inline

Permutation arrays.

Definition at line 204 of file CbcSymmetry.hpp.

◆ numberInPermutation()

int CbcSymmetry::numberInPermutation ( int which) const
inline

Definition at line 206 of file CbcSymmetry.hpp.

◆ incrementNautyBranches()

void CbcSymmetry::incrementNautyBranches ( int n)
inline

Definition at line 208 of file CbcSymmetry.hpp.

◆ incrementBranchSucceeded()

void CbcSymmetry::incrementBranchSucceeded ( )
inline

Definition at line 210 of file CbcSymmetry.hpp.

Member Data Documentation

◆ node_sort

myclass0 CbcSymmetry::node_sort

Definition at line 140 of file CbcSymmetry.hpp.

◆ index_sort

myclass CbcSymmetry::index_sort

Definition at line 141 of file CbcSymmetry.hpp.

◆ node_info_

std::vector< Node > CbcSymmetry::node_info_
mutableprivate

Definition at line 213 of file CbcSymmetry.hpp.

◆ nauty_info_

CbcNauty* CbcSymmetry::nauty_info_
mutableprivate

Definition at line 214 of file CbcSymmetry.hpp.

◆ numberColumns_

int CbcSymmetry::numberColumns_
private

Definition at line 215 of file CbcSymmetry.hpp.

◆ numberUsefulOrbits_

int CbcSymmetry::numberUsefulOrbits_
private

Definition at line 216 of file CbcSymmetry.hpp.

◆ numberUsefulObjects_

int CbcSymmetry::numberUsefulObjects_
private

Definition at line 217 of file CbcSymmetry.hpp.

◆ numberPermutations_

int CbcSymmetry::numberPermutations_
private

Definition at line 218 of file CbcSymmetry.hpp.

◆ permutations_

cbc_permute* CbcSymmetry::permutations_
private

Definition at line 219 of file CbcSymmetry.hpp.

◆ whichOrbit_

int* CbcSymmetry::whichOrbit_
private

Definition at line 220 of file CbcSymmetry.hpp.

◆ stats_

int CbcSymmetry::stats_[5]
private

Definition at line 221 of file CbcSymmetry.hpp.

◆ nautyTime_

double CbcSymmetry::nautyTime_
private

Definition at line 222 of file CbcSymmetry.hpp.

◆ nautyFixes_

double CbcSymmetry::nautyFixes_
private

Definition at line 223 of file CbcSymmetry.hpp.

◆ nautyOtherBranches_

double CbcSymmetry::nautyOtherBranches_
mutableprivate

Definition at line 224 of file CbcSymmetry.hpp.

◆ nautyBranchCalls_

int CbcSymmetry::nautyBranchCalls_
mutableprivate

Definition at line 225 of file CbcSymmetry.hpp.

◆ lastNautyBranchSucceeded_

int CbcSymmetry::lastNautyBranchSucceeded_
mutableprivate

Definition at line 226 of file CbcSymmetry.hpp.

◆ nautyBranchSucceeded_

int CbcSymmetry::nautyBranchSucceeded_
private

Definition at line 227 of file CbcSymmetry.hpp.

◆ nautyFixCalls_

int CbcSymmetry::nautyFixCalls_
mutableprivate

Definition at line 228 of file CbcSymmetry.hpp.

◆ lastNautyFixSucceeded_

int CbcSymmetry::lastNautyFixSucceeded_
mutableprivate

Definition at line 229 of file CbcSymmetry.hpp.

◆ nautyFixSucceeded_

int CbcSymmetry::nautyFixSucceeded_
private

Definition at line 230 of file CbcSymmetry.hpp.


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