Generated on Tue Apr 18 10:24:11 2017 for Gecode by doxygen 1.6.3

Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print > Class Template Reference

Symmetry-breaking brancher with generic view and value selection. More...

#include <ldsb.hh>

List of all members.

Public Member Functions

 LDSBSetBrancher (Space &home, bool share, LDSBSetBrancher &b)
 Constructor for cloning b.
 LDSBSetBrancher (Home home, ViewArray< View > &x, ViewSel< View > *vs[n], ValSelCommitBase< View, Val > *vsc, SymmetryImp< View > **syms, int nsyms, BranchFilter< Var > bf, VarValPrint< Var, Val > vvp)
 Constructor for creation.
virtual const Choicechoice (Space &home)
 Return choice.
virtual ExecStatus commit (Space &home, const Choice &c, unsigned int b)
 Perform commit for choice c and alternative b.
virtual Actorcopy (Space &home, bool share)
 Perform cloning.
template<class View0 , int n0, class Val0 , unsigned int a0>
void postldsbsetbrancher (Home home, ViewArray< View0 > &x, ViewSel< View0 > *vs[n0], ValSelCommitBase< View0, Val0 > *vsc, SymmetryImp< View0 > **syms, int nsyms, BranchFilter< typename View0::VarType > bf, VarValPrint< typename View0::VarType, Val0 > vvp)
 Post LDSB brancher.
void updatePart1 (Space &home, int choicePos)
 Part one of the update phase.

Static Public Member Functions

static void post (Home home, ViewArray< View > &x, ViewSel< View > *vs[n], ValSelCommitBase< View, Val > *vsc, SymmetryImp< View > **_syms, int _nsyms, BranchFilter< Var > bf, VarValPrint< Var, Val > vvp)
 Brancher post function.

Public Attributes

int _prevPos
 Position of previous variable that was branched on.
int _nNonValueSymmetries
 Number of non-value symmetries.
int _nValueSymmetries
 Number of value symmetries.
ValueSymmetryImp< View > ** _copiedSyms
 Copy of value symmetries from the first node where the current variable was branched on.
int _nCopiedSyms
 Number of copied symmetries.
IntSet _leftBranchValues
 Set of values used on left branches for the current variable.
bool _stable
 Is the state of the brancher "stable"?

Detailed Description

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
class Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >

Symmetry-breaking brancher with generic view and value selection.

Implements view-based branching for an array of views (of type View) on set variables and value (of type Val).

Definition at line 62 of file ldsb.hh.


Constructor & Destructor Documentation

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::LDSBSetBrancher ( Space home,
bool  share,
LDSBSetBrancher< View, n, Val, a, Filter, Print > &  b 
) [inline]

Constructor for cloning b.

Definition at line 74 of file brancher.hpp.

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::LDSBSetBrancher ( Home  home,
ViewArray< View > &  x,
ViewSel< View > *  vs[n],
ValSelCommitBase< View, Val > *  vsc,
SymmetryImp< View > **  syms,
int  nsyms,
BranchFilter< Var bf,
VarValPrint< Var, Val >  vvp 
) [inline]

Constructor for creation.

Definition at line 43 of file brancher.hpp.


Member Function Documentation

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
const Choice * Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::choice ( Space home  )  [inline, virtual]

Return choice.

Reimplemented from Gecode::Int::LDSB::LDSBBrancher< View, n, Val, a, Filter, Print >.

Definition at line 186 of file brancher.hpp.

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
ExecStatus Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::commit ( Space home,
const Choice c,
unsigned int  b 
) [inline, virtual]

Perform commit for choice c and alternative b.

Reimplemented from Gecode::Int::LDSB::LDSBBrancher< View, n, Val, a, Filter, Print >.

Definition at line 206 of file brancher.hpp.

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
Actor * Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::copy ( Space home,
bool  share 
) [inline, virtual]

Perform cloning.

Reimplemented from Gecode::Int::LDSB::LDSBBrancher< View, n, Val, a, Filter, Print >.

Definition at line 251 of file brancher.hpp.

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
void Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::post ( Home  home,
ViewArray< View > &  x,
ViewSel< View > *  vs[n],
ValSelCommitBase< View, Val > *  vsc,
SymmetryImp< View > **  _syms,
int  _nsyms,
BranchFilter< Var bf,
VarValPrint< Var, Val >  vvp 
) [inline, static]

Brancher post function.

Reimplemented from Gecode::Int::LDSB::LDSBBrancher< View, n, Val, a, Filter, Print >.

Definition at line 260 of file brancher.hpp.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
template<class View0 , int n0, class Val0 , unsigned int a0>
void Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::postldsbsetbrancher ( Home  home,
ViewArray< View0 > &  x,
ViewSel< View0 > *  vs[n0],
ValSelCommitBase< View0, Val0 > *  vsc,
SymmetryImp< View0 > **  syms,
int  nsyms,
BranchFilter< typename View0::VarType >  bf,
VarValPrint< typename View0::VarType, Val0 >  vvp 
) [inline]

Post LDSB brancher.

template<class View , int n, class Val , unsigned int a, class Filter , class Print >
void Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::updatePart1 ( Space home,
int  choicePos 
) [inline]

Part one of the update phase.

If the branching is at a new variable, restore previously copied value symmetries, do bulk update of values used on left branches for the previous variable, and make fresh copy of resulting value symmetries.

Definition at line 138 of file brancher.hpp.


Member Data Documentation

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
int Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_prevPos

Position of previous variable that was branched on.

Reimplemented from Gecode::Int::LDSB::LDSBBrancher< View, n, Val, a, Filter, Print >.

Definition at line 66 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
int Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_nNonValueSymmetries

Number of non-value symmetries.

Definition at line 68 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
int Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_nValueSymmetries

Number of value symmetries.

Definition at line 70 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
ValueSymmetryImp<View>** Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_copiedSyms

Copy of value symmetries from the first node where the current variable was branched on.

Definition at line 73 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
int Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_nCopiedSyms

Number of copied symmetries.

Definition at line 75 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
IntSet Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_leftBranchValues

Set of values used on left branches for the current variable.

Definition at line 77 of file ldsb.hh.

template<class View, int n, class Val, unsigned int a, class Filter, class Print>
bool Gecode::Set::LDSB::LDSBSetBrancher< View, n, Val, a, Filter, Print >::_stable

Is the state of the brancher "stable"?

The brancher is unstable if we are about to run either "choice" or "commit", but "updatePart1" has not been run. After "updatePart1" has been run the brancher is stable, until the second part of the update is done (in commit).

Definition at line 86 of file ldsb.hh.


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