A space that can be initialized with a FlatZinc model. More...
#include <flatzinc.hh>
Public Types | |
enum | Meth { SAT, MIN, MAX } |
Public Member Functions | |
FlatZincSpace (void) | |
Construct empty space. More... | |
~FlatZincSpace (void) | |
Destructor. More... | |
void | init (int intVars, int boolVars, int setVars, int floatVars) |
Initialize space with given number of variables. More... | |
void | newIntVar (IntVarSpec *vs) |
Create new integer variable from specification. More... | |
void | aliasBool2Int (int iv, int bv) |
Link integer variable iv to Boolean variable bv. More... | |
int | aliasBool2Int (int iv) |
Return linked Boolean variable for integer variable iv. More... | |
void | newBoolVar (BoolVarSpec *vs) |
Create new Boolean variable from specification. More... | |
void | newSetVar (SetVarSpec *vs) |
Create new set variable from specification. More... | |
void | newFloatVar (FloatVarSpec *vs) |
Create new float variable from specification. More... | |
void | postConstraint (const ConExpr &ce, AST::Node *annotation) |
Post a constraint specified by ce. More... | |
void | solve (AST::Array *annotation) |
Post the solve item. More... | |
void | minimize (int var, AST::Array *annotation) |
Post that integer variable var should be minimized. More... | |
void | maximize (int var, AST::Array *annotation) |
Post that integer variable var should be maximized. More... | |
void | run (std::ostream &out, const Printer &p, const FlatZincOptions &opt, Gecode::Support::Timer &t_total) |
Run the search. More... | |
void | print (std::ostream &out, const Printer &p) const |
Produce output on out using p. More... | |
void | compare (const Space &s, std::ostream &out) const |
Compare this space with space s and print the differences on out. More... | |
void | compare (const FlatZincSpace &s, std::ostream &out, const Printer &p) const |
Compare this space with space s and print the differences on out using p. More... | |
void | shrinkArrays (Printer &p) |
Remove all variables not needed for output. More... | |
Meth | method (void) const |
Return whether to solve a satisfaction or optimization problem. More... | |
int | optVar (void) const |
Return index of variable used for optimization. More... | |
void | createBranchers (AST::Node *ann, int seed, double decay, bool ignoreUnknown, std::ostream &err=std::cerr) |
Create branchers corresponding to the solve item annotations. More... | |
AST::Array * | solveAnnotations (void) const |
Return the solve item annotations. More... | |
virtual void | constrain (const Space &s) |
Implement optimization. More... | |
virtual Gecode::Space * | copy (bool share) |
Copy function. More... | |
![]() | |
Space (void) | |
Default constructor. More... | |
virtual | ~Space (void) |
Destructor. More... | |
Space (bool share, Space &s) | |
Constructor for cloning. More... | |
virtual void | master (unsigned long int i, const Space *s) |
Master configuration function for restart meta search engine. More... | |
virtual void | slave (unsigned long int i, const Space *s) |
Slave configuration function for restart meta search engine. More... | |
SpaceStatus | status (StatusStatistics &stat=unused_status) |
Query space status. More... | |
const Choice * | choice (void) |
Create new choice for current brancher. More... | |
const Choice * | choice (Archive &e) const |
Create new choice from e. More... | |
Space * | clone (bool share=true, CloneStatistics &stat=unused_clone) const |
Clone space. More... | |
void | commit (const Choice &c, unsigned int a, CommitStatistics &stat=unused_commit) |
Commit choice c for alternative a. More... | |
void | notice (Actor &a, ActorProperty p) |
Notice actor property. More... | |
void | ignore (Actor &a, ActorProperty p) |
Ignore actor property. More... | |
ExecStatus | ES_SUBSUMED (Propagator &p) |
Propagator p is subsumed More... | |
ExecStatus | ES_SUBSUMED_DISPOSED (Propagator &p, size_t s) |
Propagator p is subsumed More... | |
ExecStatus | ES_FIX_PARTIAL (Propagator &p, const ModEventDelta &med) |
Propagator p has computed partial fixpoint More... | |
ExecStatus | ES_NOFIX_PARTIAL (Propagator &p, const ModEventDelta &med) |
Propagator p has not computed partial fixpoint More... | |
template<class A > | |
ExecStatus | ES_FIX_DISPOSE (Council< A > &c, A &a) |
Advisor a must be disposed More... | |
template<class A > | |
ExecStatus | ES_NOFIX_DISPOSE (Council< A > &c, A &a) |
Advisor a must be disposed and its propagator must be run More... | |
template<class A > | |
ExecStatus | ES_NOFIX_DISPOSE_FORCE (Council< A > &c, A &a) |
Advisor a must be disposed and its propagator must be forcefully rescheduled More... | |
void | fail (void) |
Fail space. More... | |
bool | failed (void) const |
Check whether space is failed. More... | |
bool | stable (void) const |
Return if space is stable (at fixpoint or failed) More... | |
unsigned int | propagators (void) const |
Return number of propagators. More... | |
unsigned int | branchers (void) const |
Return number of branchers. More... | |
template<class T > | |
T * | alloc (long unsigned int n) |
Allocate block of n objects of type T from space heap. More... | |
template<class T > | |
T * | alloc (long int n) |
Allocate block of n objects of type T from space heap. More... | |
template<class T > | |
T * | alloc (unsigned int n) |
Allocate block of n objects of type T from space heap. More... | |
template<class T > | |
T * | alloc (int n) |
Allocate block of n objects of type T from space heap. More... | |
template<class T > | |
void | free (T *b, long unsigned int n) |
Delete n objects allocated from space heap starting at b. More... | |
template<class T > | |
void | free (T *b, long int n) |
Delete n objects allocated from space heap starting at b. More... | |
template<class T > | |
void | free (T *b, unsigned int n) |
Delete n objects allocated from space heap starting at b. More... | |
template<class T > | |
void | free (T *b, int n) |
Delete n objects allocated from space heap starting at b. More... | |
template<class T > | |
T * | realloc (T *b, long unsigned int n, long unsigned int m) |
Reallocate block of n objects starting at b to m objects of type T from the space heap. More... | |
template<class T > | |
T * | realloc (T *b, long int n, long int m) |
Reallocate block of n objects starting at b to m objects of type T from the space heap. More... | |
template<class T > | |
T * | realloc (T *b, unsigned int n, unsigned int m) |
Reallocate block of n objects starting at b to m objects of type T from the space heap. More... | |
template<class T > | |
T * | realloc (T *b, int n, int m) |
Reallocate block of n objects starting at b to m objects of type T from the space heap. More... | |
template<class T > | |
T ** | realloc (T **b, long unsigned int n, long unsigned int m) |
Reallocate block of n pointers starting at b to m objects of type T* from the space heap. More... | |
template<class T > | |
T ** | realloc (T **b, long int n, long int m) |
Reallocate block of n pointers starting at b to m objects of type T* from the space heap. More... | |
template<class T > | |
T ** | realloc (T **b, unsigned int n, unsigned int m) |
Reallocate block of n pointers starting at b to m objects of type T* from the space heap. More... | |
template<class T > | |
T ** | realloc (T **b, int n, int m) |
Reallocate block of n pointers starting at b to m objects of type T* from the space heap. More... | |
void * | ralloc (size_t s) |
Allocate memory on space heap. More... | |
void | rfree (void *p, size_t s) |
Free memory previously allocated with alloc (might be reused later) More... | |
void * | rrealloc (void *b, size_t n, size_t m) |
Reallocate memory block starting at b from size n to size s. More... | |
template<size_t > | |
void * | fl_alloc (void) |
Allocate from freelist-managed memory. More... | |
template<size_t > | |
void | fl_dispose (FreeList *f, FreeList *l) |
Return freelist-managed memory to freelist. More... | |
size_t | allocated (void) const |
Return how much heap memory is allocated. More... | |
void | flush (void) |
Flush cached memory blocks. More... | |
Home | operator() (Propagator &p) |
Return a home for this space with the information that p is being rewritten. More... | |
template<class T > | |
T & | construct (void) |
Construction routines. More... | |
template<class T , typename A1 > | |
T & | construct (A1 const &a1) |
Constructs a single object of type T from space heap using a unary constructor. More... | |
template<class T , typename A1 , typename A2 > | |
T & | construct (A1 const &a1, A2 const &a2) |
Constructs a single object of type T from space heap using a binary constructor. More... | |
template<class T , typename A1 , typename A2 , typename A3 > | |
T & | construct (A1 const &a1, A2 const &a2, A3 const &a3) |
Constructs a single object of type T from space heap using a ternary constructor. More... | |
template<class T , typename A1 , typename A2 , typename A3 , typename A4 > | |
T & | construct (A1 const &a1, A2 const &a2, A3 const &a3, A4 const &a4) |
Constructs a single object of type T from space heap using a quaternary constructor. More... | |
template<class T , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > | |
T & | construct (A1 const &a1, A2 const &a2, A3 const &a3, A4 const &a4, A5 const &a5) |
Constructs a single object of type T from space heap using a quinary constructor. More... | |
Public Attributes | |
Gecode::IntVarArray | iv |
The integer variables. More... | |
Gecode::IntVarArray | iv_aux |
The introduced integer variables. More... | |
std::vector< bool > | iv_introduced |
Indicates whether an integer variable is introduced by mzn2fzn. More... | |
int * | iv_boolalias |
Indicates whether an integer variable aliases a Boolean variable. More... | |
Gecode::BoolVarArray | bv |
The Boolean variables. More... | |
Gecode::BoolVarArray | bv_aux |
The introduced Boolean variables. More... | |
std::vector< bool > | bv_introduced |
Indicates whether a Boolean variable is introduced by mzn2fzn. More... | |
Gecode::SetVarArray | sv |
The set variables. More... | |
Gecode::SetVarArray | sv_aux |
The introduced set variables. More... | |
std::vector< bool > | sv_introduced |
Indicates whether a set variable is introduced by mzn2fzn. More... | |
Gecode::FloatVarArray | fv |
The float variables. More... | |
Gecode::FloatVarArray | fv_aux |
The introduced float variables. More... | |
std::vector< bool > | fv_introduced |
Indicates whether a float variable is introduced by mzn2fzn. More... | |
bool | needAuxVars |
Whether the introduced variables still need to be copied. More... | |
Protected Member Functions | |
FlatZincSpace (bool share, FlatZincSpace &) | |
Copy constructor. More... | |
Protected Attributes | |
int | intVarCount |
Number of integer variables. More... | |
int | boolVarCount |
Number of Boolean variables. More... | |
int | floatVarCount |
Number of float variables. More... | |
int | setVarCount |
Number of set variables. More... | |
int | _optVar |
Index of the integer variable to optimize. More... | |
Meth | _method |
Whether to solve as satisfaction or optimization problem. More... | |
AST::Array * | _solveAnnotations |
Annotations on the solve item. More... | |
AST to variable and value conversion | |
IntArgs | arg2intargs (AST::Node *arg, int offset=0) |
Convert arg (array of integers) to IntArgs. More... | |
IntArgs | arg2boolargs (AST::Node *arg, int offset=0) |
Convert arg (array of Booleans) to IntArgs. More... | |
IntSet | arg2intset (AST::Node *n) |
Convert n to IntSet. More... | |
IntSetArgs | arg2intsetargs (AST::Node *arg, int offset=0) |
Convert arg to IntSetArgs. More... | |
IntVarArgs | arg2intvarargs (AST::Node *arg, int offset=0) |
Convert arg to IntVarArgs. More... | |
BoolVarArgs | arg2boolvarargs (AST::Node *arg, int offset=0, int siv=-1) |
Convert arg to BoolVarArgs. More... | |
BoolVar | arg2BoolVar (AST::Node *n) |
Convert n to BoolVar. More... | |
IntVar | arg2IntVar (AST::Node *n) |
Convert n to IntVar. More... | |
bool | isBoolArray (AST::Node *b, int &singleInt) |
Check if b is array of Booleans (or has a single integer) More... | |
SetVar | arg2SetVar (AST::Node *n) |
Convert n to SetVar. More... | |
SetVarArgs | arg2setvarargs (AST::Node *arg, int offset=0, int doffset=0, const IntSet &od=IntSet::empty) |
Convert n to SetVarArgs. More... | |
FloatValArgs | arg2floatargs (AST::Node *arg, int offset=0) |
Convert n to FloatValArgs. More... | |
FloatVar | arg2FloatVar (AST::Node *n) |
Convert n to FloatVar. More... | |
FloatVarArgs | arg2floatvarargs (AST::Node *arg, int offset=0) |
Convert n to FloatVarArgs. More... | |
IntConLevel | ann2icl (AST::Node *ann) |
Convert ann to IntConLevel. More... | |
Additional Inherited Members | |
![]() | |
static void * | operator new (size_t) |
Allocate memory from heap for new space. More... | |
static void | operator delete (void *) |
Free memory allocated from heap. More... | |
A space that can be initialized with a FlatZinc model.
Definition at line 322 of file flatzinc.hh.
Enumerator | |
---|---|
SAT | |
MIN | |
MAX |
Definition at line 324 of file flatzinc.hh.
|
protected |
Copy constructor.
Definition at line 423 of file flatzinc.cpp.
Gecode::FlatZinc::FlatZincSpace::FlatZincSpace | ( | void | ) |
Construct empty space.
Definition at line 485 of file flatzinc.cpp.
Gecode::FlatZinc::FlatZincSpace::~FlatZincSpace | ( | void | ) |
Destructor.
Definition at line 929 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::init | ( | int | intVars, |
int | boolVars, | ||
int | setVars, | ||
int | floatVars | ||
) |
Initialize space with given number of variables.
Definition at line 490 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newIntVar | ( | IntVarSpec * | vs | ) |
Create new integer variable from specification.
Definition at line 515 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::aliasBool2Int | ( | int | iv, |
int | bv | ||
) |
Link integer variable iv to Boolean variable bv.
Definition at line 533 of file flatzinc.cpp.
int Gecode::FlatZinc::FlatZincSpace::aliasBool2Int | ( | int | iv | ) |
Return linked Boolean variable for integer variable iv.
Definition at line 537 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newBoolVar | ( | BoolVarSpec * | vs | ) |
Create new Boolean variable from specification.
Definition at line 542 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newSetVar | ( | SetVarSpec * | vs | ) |
Create new set variable from specification.
Definition at line 554 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newFloatVar | ( | FloatVarSpec * | vs | ) |
Create new float variable from specification.
Definition at line 601 of file flatzinc.cpp.
Post a constraint specified by ce.
Definition at line 630 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::solve | ( | AST::Array * | annotation | ) |
Post the solve item.
Definition at line 888 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::minimize | ( | int | var, |
AST::Array * | annotation | ||
) |
Post that integer variable var should be minimized.
Definition at line 894 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::maximize | ( | int | var, |
AST::Array * | annotation | ||
) |
Post that integer variable var should be maximized.
Definition at line 912 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::run | ( | std::ostream & | out, |
const Printer & | p, | ||
const FlatZincOptions & | opt, | ||
Gecode::Support::Timer & | t_total | ||
) |
Run the search.
Definition at line 1171 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::print | ( | std::ostream & | out, |
const Printer & | p | ||
) | const |
Produce output on out using p.
Definition at line 1210 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::compare | ( | const Space & | s, |
std::ostream & | out | ||
) | const |
Compare this space with space s and print the differences on out.
Definition at line 1222 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::compare | ( | const FlatZincSpace & | s, |
std::ostream & | out, | ||
const Printer & | p | ||
) | const |
Compare this space with space s and print the differences on out using p.
Definition at line 1262 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::shrinkArrays | ( | Printer & | p | ) |
Remove all variables not needed for output.
After calling this function, no new constraints can be posted through FlatZinc variable references, and the createBranchers method must not be called again.
Definition at line 1275 of file flatzinc.cpp.
FlatZincSpace::Meth Gecode::FlatZinc::FlatZincSpace::method | ( | void | ) | const |
Return whether to solve a satisfaction or optimization problem.
Definition at line 1200 of file flatzinc.cpp.
int Gecode::FlatZinc::FlatZincSpace::optVar | ( | void | ) | const |
Return index of variable used for optimization.
Definition at line 1205 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::createBranchers | ( | AST::Node * | ann, |
int | seed, | ||
double | decay, | ||
bool | ignoreUnknown, | ||
std::ostream & | err = std::cerr |
||
) |
Create branchers corresponding to the solve item annotations.
If ignoreUnknown is true, unknown solve item annotations will be ignored, otherwise a warning is written to err.
The seed for random branchers is given by the seed parameter.
Definition at line 655 of file flatzinc.cpp.
AST::Array * Gecode::FlatZinc::FlatZincSpace::solveAnnotations | ( | void | ) | const |
Return the solve item annotations.
Definition at line 883 of file flatzinc.cpp.
|
virtual |
Implement optimization.
Reimplemented from Gecode::Space.
Definition at line 1185 of file flatzinc.cpp.
|
virtual |
Convert arg (array of integers) to IntArgs.
Definition at line 1287 of file flatzinc.cpp.
Convert arg (array of Booleans) to IntArgs.
Definition at line 1297 of file flatzinc.cpp.
Convert n to IntSet.
Definition at line 1307 of file flatzinc.cpp.
IntSetArgs Gecode::FlatZinc::FlatZincSpace::arg2intsetargs | ( | AST::Node * | arg, |
int | offset = 0 |
||
) |
Convert arg to IntSetArgs.
Definition at line 1322 of file flatzinc.cpp.
IntVarArgs Gecode::FlatZinc::FlatZincSpace::arg2intvarargs | ( | AST::Node * | arg, |
int | offset = 0 |
||
) |
Convert arg to IntVarArgs.
Definition at line 1337 of file flatzinc.cpp.
BoolVarArgs Gecode::FlatZinc::FlatZincSpace::arg2boolvarargs | ( | AST::Node * | arg, |
int | offset = 0 , |
||
int | siv = -1 |
||
) |
Convert arg to BoolVarArgs.
Definition at line 1358 of file flatzinc.cpp.
Convert n to BoolVar.
Definition at line 1384 of file flatzinc.cpp.
Convert n to IntVar.
Definition at line 1395 of file flatzinc.cpp.
bool Gecode::FlatZinc::FlatZincSpace::isBoolArray | ( | AST::Node * | b, |
int & | singleInt | ||
) |
Check if b is array of Booleans (or has a single integer)
Definition at line 1405 of file flatzinc.cpp.
Convert n to SetVar.
Definition at line 1427 of file flatzinc.cpp.
SetVarArgs Gecode::FlatZinc::FlatZincSpace::arg2setvarargs | ( | AST::Node * | arg, |
int | offset = 0 , |
||
int | doffset = 0 , |
||
const IntSet & | od = IntSet::empty |
||
) |
Convert n to SetVarArgs.
Definition at line 1438 of file flatzinc.cpp.
FloatValArgs Gecode::FlatZinc::FlatZincSpace::arg2floatargs | ( | AST::Node * | arg, |
int | offset = 0 |
||
) |
Convert n to FloatValArgs.
Definition at line 1454 of file flatzinc.cpp.
Convert n to FloatVar.
Definition at line 1485 of file flatzinc.cpp.
FloatVarArgs Gecode::FlatZinc::FlatZincSpace::arg2floatvarargs | ( | AST::Node * | arg, |
int | offset = 0 |
||
) |
Convert n to FloatVarArgs.
Definition at line 1464 of file flatzinc.cpp.
IntConLevel Gecode::FlatZinc::FlatZincSpace::ann2icl | ( | AST::Node * | ann | ) |
Convert ann to IntConLevel.
Definition at line 1496 of file flatzinc.cpp.
|
protected |
Number of integer variables.
Definition at line 331 of file flatzinc.hh.
|
protected |
Number of Boolean variables.
Definition at line 333 of file flatzinc.hh.
|
protected |
Number of float variables.
Definition at line 335 of file flatzinc.hh.
|
protected |
Number of set variables.
Definition at line 337 of file flatzinc.hh.
|
protected |
Index of the integer variable to optimize.
Definition at line 340 of file flatzinc.hh.
|
protected |
Whether to solve as satisfaction or optimization problem.
Definition at line 343 of file flatzinc.hh.
|
protected |
Annotations on the solve item.
Definition at line 346 of file flatzinc.hh.
Gecode::IntVarArray Gecode::FlatZinc::FlatZincSpace::iv |
The integer variables.
Definition at line 366 of file flatzinc.hh.
Gecode::IntVarArray Gecode::FlatZinc::FlatZincSpace::iv_aux |
The introduced integer variables.
Definition at line 368 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::iv_introduced |
Indicates whether an integer variable is introduced by mzn2fzn.
Definition at line 370 of file flatzinc.hh.
int* Gecode::FlatZinc::FlatZincSpace::iv_boolalias |
Indicates whether an integer variable aliases a Boolean variable.
Definition at line 372 of file flatzinc.hh.
Gecode::BoolVarArray Gecode::FlatZinc::FlatZincSpace::bv |
The Boolean variables.
Definition at line 374 of file flatzinc.hh.
Gecode::BoolVarArray Gecode::FlatZinc::FlatZincSpace::bv_aux |
The introduced Boolean variables.
Definition at line 376 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::bv_introduced |
Indicates whether a Boolean variable is introduced by mzn2fzn.
Definition at line 378 of file flatzinc.hh.
Gecode::SetVarArray Gecode::FlatZinc::FlatZincSpace::sv |
The set variables.
Definition at line 381 of file flatzinc.hh.
Gecode::SetVarArray Gecode::FlatZinc::FlatZincSpace::sv_aux |
The introduced set variables.
Definition at line 383 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::sv_introduced |
Indicates whether a set variable is introduced by mzn2fzn.
Definition at line 385 of file flatzinc.hh.
Gecode::FloatVarArray Gecode::FlatZinc::FlatZincSpace::fv |
The float variables.
Definition at line 389 of file flatzinc.hh.
Gecode::FloatVarArray Gecode::FlatZinc::FlatZincSpace::fv_aux |
The introduced float variables.
Definition at line 391 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::fv_introduced |
Indicates whether a float variable is introduced by mzn2fzn.
Definition at line 393 of file flatzinc.hh.
bool Gecode::FlatZinc::FlatZincSpace::needAuxVars |
Whether the introduced variables still need to be copied.
Definition at line 396 of file flatzinc.hh.