Gecode::FlatZinc::FlatZincSpace Class Reference
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 (Rnd &random=defrnd) | |
Construct empty space. | |
~FlatZincSpace (void) | |
Destructor. | |
void | init (int intVars, int boolVars, int setVars, int floatVars) |
Initialize space with given number of variables. | |
void | newIntVar (IntVarSpec *vs) |
Create new integer variable from specification. | |
void | aliasBool2Int (int iv, int bv) |
Link integer variable iv to Boolean variable bv. | |
int | aliasBool2Int (int iv) |
Return linked Boolean variable for integer variable iv. | |
void | newBoolVar (BoolVarSpec *vs) |
Create new Boolean variable from specification. | |
void | newSetVar (SetVarSpec *vs) |
Create new set variable from specification. | |
void | newFloatVar (FloatVarSpec *vs) |
Create new float variable from specification. | |
void | postConstraints (std::vector< ConExpr * > &ces) |
Post a constraint specified by ce. | |
void | solve (AST::Array *annotation) |
Post the solve item. | |
void | minimize (int var, bool isInt, AST::Array *annotation) |
Post that integer variable var should be minimized. | |
void | maximize (int var, bool isInt, AST::Array *annotation) |
Post that integer variable var should be maximized. | |
void | run (std::ostream &out, const Printer &p, const FlatZincOptions &opt, Gecode::Support::Timer &t_total) |
Run the search. | |
void | print (std::ostream &out, const Printer &p) const |
Produce output on out using p. | |
std::string | getDomains (const Printer &p) const |
Get string representing the domains of variables (for cpprofiler). | |
void | compare (const Space &s, std::ostream &out) const |
Compare this space with space s and print the differences on out. | |
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. | |
void | shrinkArrays (Printer &p) |
Remove all variables not needed for output. | |
Meth | method (void) const |
Return whether to solve a satisfaction or optimization problem. | |
int | optVar (void) const |
Return index of variable used for optimization. | |
bool | optVarIsInt (void) const |
Return whether variable used for optimization is integer (or float). | |
void | createBranchers (Printer &p, AST::Node *ann, FlatZincOptions &opt, bool ignoreUnknown, std::ostream &err=std::cerr) |
Create branchers corresponding to the solve item annotations. | |
AST::Array * | solveAnnotations (void) const |
Return the solve item annotations. | |
virtual void | constrain (const Space &s) |
Implement optimization. | |
virtual Gecode::Space * | copy (void) |
Copy function. | |
virtual bool | slave (const MetaInfo &mi) |
Slave function for restarts. | |
Public Attributes | |
Gecode::IntVarArray | iv |
The integer variables. | |
Gecode::IntVarArray | iv_aux |
The introduced integer variables. | |
Gecode::IntVarArray | iv_lns |
The integer variables used in LNS. | |
std::vector< bool > | iv_introduced |
Indicates whether an integer variable is introduced by mzn2fzn. | |
int * | iv_boolalias |
Indicates whether an integer variable aliases a Boolean variable. | |
Gecode::BoolVarArray | bv |
The Boolean variables. | |
Gecode::BoolVarArray | bv_aux |
The introduced Boolean variables. | |
std::vector< bool > | bv_introduced |
Indicates whether a Boolean variable is introduced by mzn2fzn. | |
Gecode::SetVarArray | sv |
The set variables. | |
Gecode::SetVarArray | sv_aux |
The introduced set variables. | |
std::vector< bool > | sv_introduced |
Indicates whether a set variable is introduced by mzn2fzn. | |
Gecode::FloatVarArray | fv |
The float variables. | |
Gecode::FloatVarArray | fv_aux |
The introduced float variables. | |
std::vector< bool > | fv_introduced |
Indicates whether a float variable is introduced by mzn2fzn. | |
Gecode::FloatNum | step |
Step by which a next solution has to have lower cost. | |
bool | needAuxVars |
Whether the introduced variables still need to be copied. | |
BranchInformation | branchInfo |
Information for printing branches. | |
Protected Member Functions | |
FlatZincSpace (FlatZincSpace &) | |
Copy constructor. | |
Protected Attributes | |
FlatZincSpaceInitData * | _initData |
Initialisation data (only used for posting constraints). | |
int | intVarCount |
Number of integer variables. | |
int | boolVarCount |
Number of Boolean variables. | |
int | floatVarCount |
Number of float variables. | |
int | setVarCount |
Number of set variables. | |
int | _optVar |
Index of the variable to optimize. | |
bool | _optVarIsInt |
Whether variable to optimize is integer (or float). | |
Meth | _method |
Whether to solve as satisfaction or optimization problem. | |
unsigned int | _lns |
Percentage of variables to keep in LNS (or 0 for no LNS). | |
IntSharedArray | _lnsInitialSolution |
Initial solution to start the LNS (or NULL for no LNS). | |
Rnd | _random |
Random number generator. | |
AST::Array * | _solveAnnotations |
Annotations on the solve item. | |
AST to variable and value conversion | |
| |
IntArgs | arg2intargs (AST::Node *arg, int offset=0) |
Convert arg (array of integers) to IntArgs. | |
IntSharedArray | arg2intsharedarray (AST::Node *arg, int offset=0) |
Convert arg (array of integers) to IntSharedArray. | |
IntArgs | arg2boolargs (AST::Node *arg, int offset=0) |
Convert arg (array of Booleans) to IntArgs. | |
IntSharedArray | arg2boolsharedarray (AST::Node *arg, int offset=0) |
Convert arg (array of integers) to IntSharedArray. | |
IntSet | arg2intset (AST::Node *n) |
Convert n to IntSet. | |
IntSetArgs | arg2intsetargs (AST::Node *arg, int offset=0) |
Convert arg to IntSetArgs. | |
IntVarArgs | arg2intvarargs (AST::Node *arg, int offset=0) |
Convert arg to IntVarArgs. | |
BoolVarArgs | arg2boolvarargs (AST::Node *arg, int offset=0, int siv=-1) |
Convert arg to BoolVarArgs. | |
BoolVar | arg2BoolVar (AST::Node *n) |
Convert n to BoolVar. | |
IntVar | arg2IntVar (AST::Node *n) |
Convert n to IntVar. | |
TupleSet | arg2tupleset (AST::Node *n, int noOfVars) |
Convert n to TupleSet. | |
bool | isBoolArray (AST::Node *b, int &singleInt) |
Check if b is array of Booleans (or has a single integer). | |
SetVar | arg2SetVar (AST::Node *n) |
Convert n to SetVar. | |
SetVarArgs | arg2setvarargs (AST::Node *arg, int offset=0, int doffset=0, const IntSet &od=IntSet::empty) |
Convert n to SetVarArgs. | |
FloatValArgs | arg2floatargs (AST::Node *arg, int offset=0) |
Convert n to FloatValArgs. | |
FloatVar | arg2FloatVar (AST::Node *n) |
Convert n to FloatVar. | |
FloatVarArgs | arg2floatvarargs (AST::Node *arg, int offset=0) |
Convert n to FloatVarArgs. | |
IntPropLevel | ann2ipl (AST::Node *ann) |
Convert ann to integer propagation level. | |
DFA | getSharedDFA (DFA &a) |
Share DFA a if possible. |
Detailed Description
A space that can be initialized with a FlatZinc model.
Definition at line 423 of file flatzinc.hh.
Member Enumeration Documentation
Definition at line 425 of file flatzinc.hh.
Constructor & Destructor Documentation
Gecode::FlatZinc::FlatZincSpace::FlatZincSpace | ( | FlatZincSpace & | f | ) | [protected] |
Copy constructor.
Definition at line 774 of file flatzinc.cpp.
Construct empty space.
Definition at line 846 of file flatzinc.cpp.
Gecode::FlatZinc::FlatZincSpace::~FlatZincSpace | ( | void | ) |
Destructor.
Definition at line 1623 of file flatzinc.cpp.
Member Function Documentation
void Gecode::FlatZinc::FlatZincSpace::init | ( | int | intVars, | |
int | boolVars, | |||
int | setVars, | |||
int | floatVars | |||
) |
Initialize space with given number of variables.
Definition at line 856 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newIntVar | ( | IntVarSpec * | vs | ) |
Create new integer variable from specification.
Definition at line 881 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::aliasBool2Int | ( | int | iv, | |
int | bv | |||
) |
Link integer variable iv to Boolean variable bv.
Definition at line 899 of file flatzinc.cpp.
int Gecode::FlatZinc::FlatZincSpace::aliasBool2Int | ( | int | iv | ) |
Return linked Boolean variable for integer variable iv.
Definition at line 903 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newBoolVar | ( | BoolVarSpec * | vs | ) |
Create new Boolean variable from specification.
Definition at line 908 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newSetVar | ( | SetVarSpec * | vs | ) |
Create new set variable from specification.
Definition at line 920 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::newFloatVar | ( | FloatVarSpec * | vs | ) |
Create new float variable from specification.
Definition at line 967 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::postConstraints | ( | std::vector< ConExpr * > & | ces | ) |
Post a constraint specified by ce.
Definition at line 1004 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::solve | ( | AST::Array * | annotation | ) |
Post the solve item.
Definition at line 1602 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::minimize | ( | int | var, | |
bool | isInt, | |||
AST::Array * | annotation | |||
) |
Post that integer variable var should be minimized.
Definition at line 1608 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::maximize | ( | int | var, | |
bool | isInt, | |||
AST::Array * | annotation | |||
) |
Post that integer variable var should be maximized.
Definition at line 1616 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 1963 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 2042 of file flatzinc.cpp.
std::string Gecode::FlatZinc::FlatZincSpace::getDomains | ( | const Printer & | p | ) | const |
Get string representing the domains of variables (for cpprofiler).
Definition at line 1795 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 2054 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 2094 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 2107 of file flatzinc.cpp.
FlatZincSpace::Meth Gecode::FlatZinc::FlatZincSpace::method | ( | void | ) | const |
Return whether to solve a satisfaction or optimization problem.
Definition at line 2027 of file flatzinc.cpp.
int Gecode::FlatZinc::FlatZincSpace::optVar | ( | void | ) | const |
Return index of variable used for optimization.
Definition at line 2032 of file flatzinc.cpp.
bool Gecode::FlatZinc::FlatZincSpace::optVarIsInt | ( | void | ) | const |
Return whether variable used for optimization is integer (or float).
Definition at line 2037 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::createBranchers | ( | Printer & | p, | |
AST::Node * | ann, | |||
FlatZincOptions & | opt, | |||
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 1037 of file flatzinc.cpp.
AST::Array * Gecode::FlatZinc::FlatZincSpace::solveAnnotations | ( | void | ) | const |
Return the solve item annotations.
Definition at line 1597 of file flatzinc.cpp.
void Gecode::FlatZinc::FlatZincSpace::constrain | ( | const Space & | s | ) | [virtual] |
Implement optimization.
Reimplemented from Gecode::Space.
Definition at line 1977 of file flatzinc.cpp.
Space * Gecode::FlatZinc::FlatZincSpace::copy | ( | void | ) | [virtual] |
bool Gecode::FlatZinc::FlatZincSpace::slave | ( | const MetaInfo & | mi | ) | [virtual] |
Slave function for restarts.
Reimplemented from Gecode::Space.
Definition at line 1998 of file flatzinc.cpp.
Convert arg (array of integers) to IntArgs.
Definition at line 2119 of file flatzinc.cpp.
IntSharedArray Gecode::FlatZinc::FlatZincSpace::arg2intsharedarray | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert arg (array of integers) to IntSharedArray.
Definition at line 2156 of file flatzinc.cpp.
Convert arg (array of Booleans) to IntArgs.
Definition at line 2170 of file flatzinc.cpp.
IntSharedArray Gecode::FlatZinc::FlatZincSpace::arg2boolsharedarray | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert arg (array of integers) to IntSharedArray.
Definition at line 2180 of file flatzinc.cpp.
Convert n to IntSet.
Definition at line 2194 of file flatzinc.cpp.
IntSetArgs Gecode::FlatZinc::FlatZincSpace::arg2intsetargs | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert arg to IntSetArgs.
Definition at line 2209 of file flatzinc.cpp.
IntVarArgs Gecode::FlatZinc::FlatZincSpace::arg2intvarargs | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert arg to IntVarArgs.
Definition at line 2224 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 2245 of file flatzinc.cpp.
Convert n to BoolVar.
Definition at line 2271 of file flatzinc.cpp.
Convert n to IntVar.
Definition at line 2282 of file flatzinc.cpp.
Convert n to TupleSet.
Definition at line 2129 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 2292 of file flatzinc.cpp.
Convert n to SetVar.
Definition at line 2314 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 2325 of file flatzinc.cpp.
FloatValArgs Gecode::FlatZinc::FlatZincSpace::arg2floatargs | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert n to FloatValArgs.
Definition at line 2341 of file flatzinc.cpp.
Convert n to FloatVar.
Definition at line 2372 of file flatzinc.cpp.
FloatVarArgs Gecode::FlatZinc::FlatZincSpace::arg2floatvarargs | ( | AST::Node * | arg, | |
int | offset = 0 | |||
) |
Convert n to FloatVarArgs.
Definition at line 2351 of file flatzinc.cpp.
IntPropLevel Gecode::FlatZinc::FlatZincSpace::ann2ipl | ( | AST::Node * | ann | ) |
Convert ann to integer propagation level.
Definition at line 2383 of file flatzinc.cpp.
Share DFA a if possible.
Definition at line 2399 of file flatzinc.cpp.
Member Data Documentation
Initialisation data (only used for posting constraints).
Definition at line 432 of file flatzinc.hh.
int Gecode::FlatZinc::FlatZincSpace::intVarCount [protected] |
Number of integer variables.
Definition at line 434 of file flatzinc.hh.
int Gecode::FlatZinc::FlatZincSpace::boolVarCount [protected] |
Number of Boolean variables.
Definition at line 436 of file flatzinc.hh.
int Gecode::FlatZinc::FlatZincSpace::floatVarCount [protected] |
Number of float variables.
Definition at line 438 of file flatzinc.hh.
int Gecode::FlatZinc::FlatZincSpace::setVarCount [protected] |
Number of set variables.
Definition at line 440 of file flatzinc.hh.
int Gecode::FlatZinc::FlatZincSpace::_optVar [protected] |
Index of the variable to optimize.
Definition at line 443 of file flatzinc.hh.
bool Gecode::FlatZinc::FlatZincSpace::_optVarIsInt [protected] |
Whether variable to optimize is integer (or float).
Definition at line 445 of file flatzinc.hh.
Meth Gecode::FlatZinc::FlatZincSpace::_method [protected] |
Whether to solve as satisfaction or optimization problem.
Definition at line 448 of file flatzinc.hh.
unsigned int Gecode::FlatZinc::FlatZincSpace::_lns [protected] |
Percentage of variables to keep in LNS (or 0 for no LNS).
Definition at line 451 of file flatzinc.hh.
Initial solution to start the LNS (or NULL for no LNS).
Definition at line 454 of file flatzinc.hh.
Rnd Gecode::FlatZinc::FlatZincSpace::_random [protected] |
Random number generator.
Definition at line 457 of file flatzinc.hh.
Annotations on the solve item.
Definition at line 460 of file flatzinc.hh.
The integer variables.
Definition at line 480 of file flatzinc.hh.
The introduced integer variables.
Definition at line 482 of file flatzinc.hh.
The integer variables used in LNS.
Definition at line 485 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::iv_introduced |
Indicates whether an integer variable is introduced by mzn2fzn.
Definition at line 488 of file flatzinc.hh.
Indicates whether an integer variable aliases a Boolean variable.
Definition at line 490 of file flatzinc.hh.
The Boolean variables.
Definition at line 492 of file flatzinc.hh.
The introduced Boolean variables.
Definition at line 494 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::bv_introduced |
Indicates whether a Boolean variable is introduced by mzn2fzn.
Definition at line 496 of file flatzinc.hh.
The set variables.
Definition at line 499 of file flatzinc.hh.
The introduced set variables.
Definition at line 501 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::sv_introduced |
Indicates whether a set variable is introduced by mzn2fzn.
Definition at line 503 of file flatzinc.hh.
The float variables.
Definition at line 507 of file flatzinc.hh.
The introduced float variables.
Definition at line 509 of file flatzinc.hh.
std::vector<bool> Gecode::FlatZinc::FlatZincSpace::fv_introduced |
Indicates whether a float variable is introduced by mzn2fzn.
Definition at line 511 of file flatzinc.hh.
Step by which a next solution has to have lower cost.
Definition at line 513 of file flatzinc.hh.
Whether the introduced variables still need to be copied.
Definition at line 516 of file flatzinc.hh.
Information for printing branches.
Definition at line 602 of file flatzinc.hh.
The documentation for this class was generated from the following files:
- gecode/flatzinc.hh
- gecode/flatzinc/flatzinc.cpp