Cbc  2.10.10
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | List of all members
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. More...
 
 CbcSymmetry (const CbcSymmetry &)
 Copy constructor. More...
 
CbcSymmetryoperator= (const CbcSymmetry &rhs)
 Assignment operator. More...
 
 ~CbcSymmetry ()
 Destructor. More...
 
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) More...
 
int orbitalFixing2 (OsiSolverInterface *solver)
 Fixes variables using root orbits (returns number fixed) More...
 
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) More...
 
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 More...
 
void fixSuccess (int nFixed)
 
void adjustStats (const CbcSymmetry *other)
 Adjust statistics from threads. More...
 
int numberColumns () const
 
bool compare (register Node &a, register Node &b) const
 
CbcNautygetNtyInfo ()
 
void setupSymmetry (CbcModel *model)
 empty if no NTY, symmetry data structure setup otherwise More...
 
void addPermutation (cbc_permute permutation)
 takes ownership of cbc_permute (orbits part) More...
 
int numberPermutations () const
 Number of permutation arrays. More...
 
int * permutation (int which) const
 Permutation arrays. More...
 
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 ( register Node a,
register 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: