flatzinc.hh
Go to the documentation of this file.
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
* Main authors:
* Guido Tack <tack@gecode.org>
*
* Contributing authors:
* Gabriel Hjort Blindell <gabriel.hjort.blindell@gmail.com>
*
* Copyright:
* Guido Tack, 2007-2012
* Gabriel Hjort Blindell, 2012
*
* This file is part of Gecode, the generic constraint
* development environment:
* http://www.gecode.org
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef __GECODE_FLATZINC_HH__
#define __GECODE_FLATZINC_HH__
#include <iostream>
#include <gecode/kernel.hh>
#include <gecode/int.hh>
#ifdef GECODE_HAS_SET_VARS
#include <gecode/set.hh>
#endif
#ifdef GECODE_HAS_FLOAT_VARS
#include <gecode/float.hh>
#endif
#include <map>
/*
* Support for DLLs under Windows
*
*/
#if !defined(GECODE_STATIC_LIBS) && \
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
#ifdef GECODE_BUILD_FLATZINC
#define GECODE_FLATZINC_EXPORT __declspec( dllexport )
#else
#define GECODE_FLATZINC_EXPORT __declspec( dllimport )
#endif
#else
#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
#define GECODE_FLATZINC_EXPORT __attribute__ ((visibility("default")))
#else
#define GECODE_FLATZINC_EXPORT
#endif
#endif
// Configure auto-linking
#ifndef GECODE_BUILD_FLATZINC
#define GECODE_LIBRARY_NAME "FlatZinc"
#include <gecode/support/auto-link.hpp>
#endif
#include <gecode/driver.hh>
#include <gecode/flatzinc/conexpr.hh>
#include <gecode/flatzinc/ast.hh>
#include <gecode/flatzinc/varspec.hh>
namespace Gecode { namespace FlatZinc {
class GECODE_FLATZINC_EXPORT Printer {
private:
std::vector<std::string> iv_names;
std::vector<std::string> bv_names;
#ifdef GECODE_HAS_FLOAT_VARS
std::vector<std::string> fv_names;
#endif
#ifdef GECODE_HAS_SET_VARS
std::vector<std::string> sv_names;
#endif
AST::Array* _output;
void printElem(std::ostream& out,
AST::Node* ai,
const Gecode::IntVarArray& iv,
const Gecode::BoolVarArray& bv
#ifdef GECODE_HAS_SET_VARS
,
const Gecode::SetVarArray& sv
#endif
#ifdef GECODE_HAS_FLOAT_VARS
,
const Gecode::FloatVarArray& fv
#endif
) const;
void printElemDiff(std::ostream& out,
AST::Node* ai,
const Gecode::IntVarArray& iv1,
const Gecode::IntVarArray& iv2,
const Gecode::BoolVarArray& bv1,
const Gecode::BoolVarArray& bv2
#ifdef GECODE_HAS_SET_VARS
,
const Gecode::SetVarArray& sv1,
const Gecode::SetVarArray& sv2
#endif
#ifdef GECODE_HAS_FLOAT_VARS
,
const Gecode::FloatVarArray& fv1,
const Gecode::FloatVarArray& fv2
#endif
) const;
public:
Printer(void) : _output(NULL) {}
void init(AST::Array* output);
void print(std::ostream& out,
const Gecode::IntVarArray& iv,
const Gecode::BoolVarArray& bv
#ifdef GECODE_HAS_SET_VARS
,
const Gecode::SetVarArray& sv
#endif
#ifdef GECODE_HAS_FLOAT_VARS
,
const Gecode::FloatVarArray& fv
#endif
) const;
void printDiff(std::ostream& out,
const Gecode::IntVarArray& iv1, const Gecode::IntVarArray& iv2,
const Gecode::BoolVarArray& bv1, const Gecode::BoolVarArray& bv2
#ifdef GECODE_HAS_SET_VARS
,
const Gecode::SetVarArray& sv1, const Gecode::SetVarArray& sv2
#endif
#ifdef GECODE_HAS_FLOAT_VARS
,
const Gecode::FloatVarArray& fv1,
const Gecode::FloatVarArray& fv2
#endif
) const;
~Printer(void);
void addIntVarName(const std::string& n);
const std::string& intVarName(int i) const { return iv_names[i]; }
void addBoolVarName(const std::string& n);
const std::string& boolVarName(int i) const { return bv_names[i]; }
#ifdef GECODE_HAS_FLOAT_VARS
void addFloatVarName(const std::string& n);
const std::string& floatVarName(int i) const { return fv_names[i]; }
#endif
#ifdef GECODE_HAS_SET_VARS
void addSetVarName(const std::string& n);
const std::string& setVarName(int i) const { return sv_names[i]; }
#endif
void shrinkElement(AST::Node* node,
std::map<int,int>& iv, std::map<int,int>& bv,
std::map<int,int>& sv, std::map<int,int>& fv);
void shrinkArrays(Space& home,
int& optVar, bool optVarIsInt,
Gecode::IntVarArray& iv,
Gecode::BoolVarArray& bv
#ifdef GECODE_HAS_SET_VARS
,
Gecode::SetVarArray& sv
#endif
#ifdef GECODE_HAS_FLOAT_VARS
,
Gecode::FloatVarArray& fv
#endif
);
private:
Printer(const Printer&);
Printer& operator=(const Printer&);
};
class FlatZincOptions : public Gecode::BaseOptions {
protected:
Gecode::Driver::IntOption _solutions;
Gecode::Driver::BoolOption _allSolutions;
Gecode::Driver::DoubleOption _threads;
Gecode::Driver::BoolOption _free;
Gecode::Driver::DoubleOption _decay;
Gecode::Driver::UnsignedIntOption _c_d;
Gecode::Driver::UnsignedIntOption _a_d;
Gecode::Driver::UnsignedIntOption _node;
Gecode::Driver::UnsignedIntOption _fail;
Gecode::Driver::UnsignedIntOption _time;
Gecode::Driver::UnsignedIntOption _time_limit;
Gecode::Driver::IntOption _seed;
Gecode::Driver::StringOption _restart;
Gecode::Driver::DoubleOption _r_base;
Gecode::Driver::UnsignedIntOption _r_scale;
Gecode::Driver::BoolOption _nogoods;
Gecode::Driver::UnsignedIntOption _nogoods_limit;
Gecode::Driver::BoolOption _interrupt;
Gecode::Driver::DoubleOption _step;
Gecode::Driver::StringOption _mode;
Gecode::Driver::BoolOption _stat;
Gecode::Driver::StringValueOption _output;
#ifdef GECODE_HAS_CPPROFILER
Gecode::Driver::IntOption _profiler_id;
Gecode::Driver::UnsignedIntOption _profiler_port;
Gecode::Driver::BoolOption _profiler_info;
#endif
public:
FlatZincOptions(const char* s)
: Gecode::BaseOptions(s),
_solutions("n","number of solutions (0 = all, -1 = one/best)",-1),
_allSolutions("a", "return all solutions (equal to -n 0)"),
_threads("p","number of threads (0 = #processing units)",
Gecode::Search::Config::threads),
_free("f", "free search, no need to follow search-specification"),
_decay("decay","decay factor",0.99),
_c_d("c-d","recomputation commit distance",Gecode::Search::Config::c_d),
_a_d("a-d","recomputation adaption distance",Gecode::Search::Config::a_d),
_node("node","node cutoff (0 = none, solution mode)"),
_fail("fail","failure cutoff (0 = none, solution mode)"),
_time("time","time (in ms) cutoff (0 = none, solution mode)"),
_time_limit("t","time (in ms) cutoff (0 = none, solution mode)"),
_seed("r","random seed",0),
_restart("restart","restart sequence type",RM_NONE),
_r_base("restart-base","base for geometric restart sequence",1.5),
_r_scale("restart-scale","scale factor for restart sequence",250),
_nogoods("nogoods","whether to use no-goods from restarts",false),
_nogoods_limit("nogoods-limit","depth limit for no-good extraction",
Search::Config::nogoods_limit),
_interrupt("interrupt","whether to catch Ctrl-C (true) or not (false)",
true),
_step("step","step distance for float optimization",0.0),
_mode("mode","how to execute script",Gecode::SM_SOLUTION),
_stat("s","emit statistics"),
_output("o","file to send output to")
#ifdef GECODE_HAS_CPPROFILER
,
_profiler_id("cpprofiler-id", "use this execution id with cpprofiler", 0),
_profiler_port("cpprofiler-port", "connect to cpprofiler on this port", 6565),
_profiler_info("cpprofiler-info", "send solution information to cpprofiler", false)
#endif
{
_mode.add(Gecode::SM_SOLUTION, "solution");
_mode.add(Gecode::SM_STAT, "stat");
_mode.add(Gecode::SM_GIST, "gist");
_mode.add(Gecode::SM_CPPROFILER, "cpprofiler");
_restart.add(RM_NONE,"none");
_restart.add(RM_CONSTANT,"constant");
_restart.add(RM_LINEAR,"linear");
_restart.add(RM_LUBY,"luby");
_restart.add(RM_GEOMETRIC,"geometric");
add(_solutions); add(_threads); add(_c_d); add(_a_d);
add(_allSolutions);
add(_free);
add(_decay);
add(_node); add(_fail); add(_time); add(_time_limit); add(_interrupt);
add(_seed);
add(_step);
add(_restart); add(_r_base); add(_r_scale);
add(_nogoods); add(_nogoods_limit);
add(_mode); add(_stat);
add(_output);
#ifdef GECODE_HAS_CPPROFILER
add(_profiler_id);
add(_profiler_port);
add(_profiler_info);
#endif
}
void parse(int& argc, char* argv[]) {
Gecode::BaseOptions::parse(argc,argv);
if (_allSolutions.value() && _solutions.value()==-1) {
_solutions.value(0);
}
if (_time_limit.value()) {
_time.value(_time_limit.value());
}
if (_stat.value())
_mode.value(Gecode::SM_STAT);
}
virtual void help(void) {
std::cerr << "Gecode FlatZinc interpreter" << std::endl
<< " - Supported FlatZinc version: " << GECODE_FLATZINC_VERSION
<< std::endl << std::endl;
Gecode::BaseOptions::help();
}
int solutions(void) const { return _solutions.value(); }
bool allSolutions(void) const { return _allSolutions.value(); }
double threads(void) const { return _threads.value(); }
bool free(void) const { return _free.value(); }
unsigned int c_d(void) const { return _c_d.value(); }
unsigned int a_d(void) const { return _a_d.value(); }
unsigned int node(void) const { return _node.value(); }
unsigned int fail(void) const { return _fail.value(); }
unsigned int time(void) const { return _time.value(); }
int seed(void) const { return _seed.value(); }
double step(void) const { return _step.value(); }
const char* output(void) const { return _output.value(); }
Gecode::ScriptMode mode(void) const {
return static_cast<Gecode::ScriptMode>(_mode.value());
}
double decay(void) const { return _decay.value(); }
RestartMode restart(void) const {
return static_cast<RestartMode>(_restart.value());
}
void restart(RestartMode rm) {
_restart.value(rm);
}
double restart_base(void) const { return _r_base.value(); }
void restart_base(double d) { _r_base.value(d); }
unsigned int restart_scale(void) const { return _r_scale.value(); }
void restart_scale(int i) { _r_scale.value(i); }
bool nogoods(void) const { return _nogoods.value(); }
unsigned int nogoods_limit(void) const { return _nogoods_limit.value(); }
bool interrupt(void) const { return _interrupt.value(); }
#ifdef GECODE_HAS_CPPROFILER
int profiler_id(void) const { return _profiler_id.value(); }
unsigned int profiler_port(void) const { return _profiler_port.value(); }
bool profiler_info(void) const { return _profiler_info.value(); }
#endif
void allSolutions(bool b) { _allSolutions.value(b); }
};
class BranchInformation : public SharedHandle {
public:
BranchInformation(void);
BranchInformation(const BranchInformation& bi);
void init(void);
void add(BrancherGroup bg,
const std::string& rel0,
const std::string& rel1,
const std::vector<std::string>& n);
void print(const Brancher& b,
unsigned int a, int i, int n, std::ostream& o) const;
#ifdef GECODE_HAS_FLOAT_VARS
void print(const Brancher& b,
unsigned int a, int i, const FloatNumBranch& nl,
std::ostream& o) const;
#endif
};
GECODE_FLATZINC_EXPORT
extern Rnd defrnd;
class FlatZincSpaceInitData;
class GECODE_FLATZINC_EXPORT FlatZincSpace : public Space {
public:
enum Meth {
SAT, //< Solve as satisfaction problem
MIN, //< Solve as minimization problem
MAX //< Solve as maximization problem
};
protected:
FlatZincSpaceInitData* _initData;
int intVarCount;
int boolVarCount;
int floatVarCount;
int setVarCount;
int _optVar;
bool _optVarIsInt;
Meth _method;
unsigned int _lns;
IntSharedArray _lnsInitialSolution;
Rnd _random;
AST::Array* _solveAnnotations;
FlatZincSpace(FlatZincSpace&);
private:
template<template<class> class Engine>
void
runEngine(std::ostream& out, const Printer& p,
const FlatZincOptions& opt, Gecode::Support::Timer& t_total);
template<template<class> class Engine,
template<class, template<class> class> class Meta>
void
runMeta(std::ostream& out, const Printer& p,
const FlatZincOptions& opt, Gecode::Support::Timer& t_total);
void
branchWithPlugin(AST::Node* ann);
public:
Gecode::IntVarArray iv;
Gecode::IntVarArray iv_aux;
Gecode::IntVarArray iv_lns;
std::vector<bool> iv_introduced;
int* iv_boolalias;
Gecode::BoolVarArray bv;
Gecode::BoolVarArray bv_aux;
std::vector<bool> bv_introduced;
#ifdef GECODE_HAS_SET_VARS
Gecode::SetVarArray sv;
Gecode::SetVarArray sv_aux;
std::vector<bool> sv_introduced;
#endif
#ifdef GECODE_HAS_FLOAT_VARS
Gecode::FloatVarArray fv;
Gecode::FloatVarArray fv_aux;
std::vector<bool> fv_introduced;
Gecode::FloatNum step;
#endif
bool needAuxVars;
FlatZincSpace(Rnd& random = defrnd);
~FlatZincSpace(void);
void init(int intVars, int boolVars, int setVars, int floatVars);
void newIntVar(IntVarSpec* vs);
void aliasBool2Int(int iv, int bv);
int aliasBool2Int(int iv);
void newBoolVar(BoolVarSpec* vs);
void newSetVar(SetVarSpec* vs);
void newFloatVar(FloatVarSpec* vs);
void postConstraints(std::vector<ConExpr*>& ces);
void solve(AST::Array* annotation);
void minimize(int var, bool isInt, AST::Array* annotation);
void maximize(int var, bool isInt, AST::Array* annotation);
void run(std::ostream& out, const Printer& p,
const FlatZincOptions& opt, Gecode::Support::Timer& t_total);
void print(std::ostream& out, const Printer& p) const;
#ifdef GECODE_HAS_CPPROFILER
std::string getDomains(const Printer& p) const;
#endif
void compare(const Space& s, std::ostream& out) const;
void compare(const FlatZincSpace& s, std::ostream& out,
const Printer& p) const;
void shrinkArrays(Printer& p);
Meth method(void) const;
int optVar(void) const;
bool optVarIsInt(void) const;
void createBranchers(Printer& p, AST::Node* ann,
FlatZincOptions& opt, bool ignoreUnknown,
std::ostream& err = std::cerr);
AST::Array* solveAnnotations(void) const;
BranchInformation branchInfo;
virtual void constrain(const Space& s);
virtual Gecode::Space* copy(void);
virtual bool slave(const MetaInfo& mi);
IntArgs arg2intargs(AST::Node* arg, int offset = 0);
IntSharedArray arg2intsharedarray(AST::Node* arg, int offset = 0);
IntArgs arg2boolargs(AST::Node* arg, int offset = 0);
IntSharedArray arg2boolsharedarray(AST::Node* arg, int offset = 0);
IntSet arg2intset(AST::Node* n);
IntSetArgs arg2intsetargs(AST::Node* arg, int offset = 0);
IntVarArgs arg2intvarargs(AST::Node* arg, int offset = 0);
BoolVarArgs arg2boolvarargs(AST::Node* arg, int offset = 0, int siv=-1);
BoolVar arg2BoolVar(AST::Node* n);
IntVar arg2IntVar(AST::Node* n);
TupleSet arg2tupleset(const IntArgs& a, int noOfVars);
bool isBoolArray(AST::Node* b, int& singleInt);
#ifdef GECODE_HAS_SET_VARS
SetVar arg2SetVar(AST::Node* n);
SetVarArgs arg2setvarargs(AST::Node* arg, int offset = 0, int doffset = 0,
const IntSet& od=IntSet::empty);
#endif
#ifdef GECODE_HAS_FLOAT_VARS
FloatValArgs arg2floatargs(AST::Node* arg, int offset = 0);
FloatVar arg2FloatVar(AST::Node* n);
FloatVarArgs arg2floatvarargs(AST::Node* arg, int offset = 0);
#endif
IntPropLevel ann2ipl(AST::Node* ann);
DFA getSharedDFA(DFA& a);
};
class GECODE_VTABLE_EXPORT Error {
private:
const std::string msg;
public:
Error(const std::string& where, const std::string& what)
: msg(where+": "+what) {}
const std::string& toString(void) const { return msg; }
};
GECODE_FLATZINC_EXPORT
FlatZincSpace* parse(const std::string& fileName,
Printer& p, std::ostream& err = std::cerr,
FlatZincSpace* fzs=NULL, Rnd& rnd=defrnd);
GECODE_FLATZINC_EXPORT
FlatZincSpace* parse(std::istream& is,
Printer& p, std::ostream& err = std::cerr,
FlatZincSpace* fzs=NULL, Rnd& rnd=defrnd);
}}
#endif
// STATISTICS: flatzinc-any
ast.hh
auto-link.hpp
Gecode::BaseOptions
Base class for script options.
Definition driver.hh:331
Gecode::BaseOptions::BaseOptions
BaseOptions(const char *s)
Initialize options for script with name s.
Definition options.cpp:483
Gecode::BaseOptions::add
void add(Driver::BaseOption &o)
Add new option o.
Definition options.cpp:474
Gecode::BaseOptions::help
virtual void help(void)
Print help text.
Definition options.cpp:494
Gecode::BaseOptions::parse
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc).
Definition options.cpp:548
Gecode::BoolVarArgs
Passing Boolean variables.
Definition int.hh:712
Gecode::BoolVarArray
Boolean variable array.
Definition int.hh:808
Gecode::BoolVar
Boolean integer variables.
Definition int.hh:512
Gecode::BrancherGroup
Group of branchers.
Definition core.hpp:799
Gecode::Brancher
Base-class for branchers.
Definition core.hpp:1442
Gecode::DFA
Deterministic finite automaton (DFA).
Definition int.hh:2049
Gecode::Driver::BoolOption
Boolean option.
Definition driver.hh:269
Gecode::Driver::DoubleOption
Double option.
Definition driver.hh:249
Gecode::Driver::IntOption
Integer option.
Definition driver.hh:209
Gecode::Driver::StringOption
String-valued option (integer value defined by strings).
Definition driver.hh:174
Gecode::Driver::StringValueOption
String-valued option.
Definition driver.hh:151
Gecode::Driver::UnsignedIntOption
Unsigned integer option.
Definition driver.hh:229
Gecode::FlatZinc::AST::Array
Array node
Definition ast.hh:231
Gecode::FlatZinc::AST::Node
A node in a FlatZinc abstract syntax tree.
Definition ast.hh:67
Gecode::FlatZinc::BranchInformation
Definition flatzinc.hh:394
Gecode::FlatZinc::BranchInformation::init
void init(void)
Initialise for use.
Definition flatzinc.cpp:315
Gecode::FlatZinc::BranchInformation::print
void print(const Brancher &b, unsigned int a, int i, int n, std::ostream &o) const
Output branch information.
Definition flatzinc.cpp:328
Gecode::FlatZinc::BranchInformation::BranchInformation
BranchInformation(void)
Constructor.
Definition flatzinc.cpp:308
Gecode::FlatZinc::BranchInformation::add
void add(BrancherGroup bg, const std::string &rel0, const std::string &rel1, const std::vector< std::string > &n)
Add new brancher information.
Definition flatzinc.cpp:321
Gecode::FlatZinc::Error::Error
Error(const std::string &where, const std::string &what)
Definition flatzinc.hh:669
Gecode::FlatZinc::Error::toString
const std::string & toString(void) const
Definition flatzinc.hh:671
Gecode::FlatZinc::FlatZincOptions
Options for running FlatZinc models
Definition flatzinc.hh:226
Gecode::FlatZinc::FlatZincOptions::_interrupt
Gecode::Driver::BoolOption _interrupt
Whether to catch SIGINT.
Definition flatzinc.hh:247
Gecode::FlatZinc::FlatZincOptions::_nogoods
Gecode::Driver::BoolOption _nogoods
Whether to use no-goods.
Definition flatzinc.hh:245
Gecode::FlatZinc::FlatZincOptions::_allSolutions
Gecode::Driver::BoolOption _allSolutions
Return all solutions.
Definition flatzinc.hh:231
Gecode::FlatZinc::FlatZincOptions::_stat
Gecode::Driver::BoolOption _stat
Emit statistics.
Definition flatzinc.hh:254
Gecode::FlatZinc::FlatZincOptions::time
unsigned int time(void) const
Script mode to run.
Definition flatzinc.hh:359
Gecode::FlatZinc::FlatZincOptions::allSolutions
void allSolutions(bool b)
Script mode to run.
Definition flatzinc.hh:391
Gecode::FlatZinc::FlatZincOptions::allSolutions
bool allSolutions(void) const
Script mode to run.
Definition flatzinc.hh:352
Gecode::FlatZinc::FlatZincOptions::fail
unsigned int fail(void) const
Script mode to run.
Definition flatzinc.hh:358
Gecode::FlatZinc::FlatZincOptions::_free
Gecode::Driver::BoolOption _free
Use free search.
Definition flatzinc.hh:233
Gecode::FlatZinc::FlatZincOptions::FlatZincOptions
FlatZincOptions(const char *s)
Constructor.
Definition flatzinc.hh:268
Gecode::FlatZinc::FlatZincOptions::seed
int seed(void) const
Script mode to run.
Definition flatzinc.hh:360
Gecode::FlatZinc::FlatZincOptions::decay
double decay(void) const
Script mode to run.
Definition flatzinc.hh:368
Gecode::FlatZinc::FlatZincOptions::_profiler_id
Gecode::Driver::IntOption _profiler_id
Use this execution id for the CP-profiler.
Definition flatzinc.hh:259
Gecode::FlatZinc::FlatZincOptions::nogoods_limit
unsigned int nogoods_limit(void) const
Script mode to run.
Definition flatzinc.hh:380
Gecode::FlatZinc::FlatZincOptions::_nogoods_limit
Gecode::Driver::UnsignedIntOption _nogoods_limit
Depth limit for extracting no-goods.
Definition flatzinc.hh:246
Gecode::FlatZinc::FlatZincOptions::output
const char * output(void) const
Script mode to run.
Definition flatzinc.hh:362
Gecode::FlatZinc::FlatZincOptions::restart
RestartMode restart(void) const
Script mode to run.
Definition flatzinc.hh:369
Gecode::FlatZinc::FlatZincOptions::_r_scale
Gecode::Driver::UnsignedIntOption _r_scale
Restart scale factor.
Definition flatzinc.hh:244
Gecode::FlatZinc::FlatZincOptions::restart_base
double restart_base(void) const
Script mode to run.
Definition flatzinc.hh:375
Gecode::FlatZinc::FlatZincOptions::help
virtual void help(void)
Script mode to run.
Definition flatzinc.hh:344
Gecode::FlatZinc::FlatZincOptions::solutions
int solutions(void) const
Script mode to run.
Definition flatzinc.hh:351
Gecode::FlatZinc::FlatZincOptions::_time_limit
Gecode::Driver::UnsignedIntOption _time_limit
Cutoff for time (for compatibility with flatzinc command line).
Definition flatzinc.hh:240
Gecode::FlatZinc::FlatZincOptions::_node
Gecode::Driver::UnsignedIntOption _node
Cutoff for number of nodes.
Definition flatzinc.hh:237
Gecode::FlatZinc::FlatZincOptions::nogoods
bool nogoods(void) const
Script mode to run.
Definition flatzinc.hh:379
Gecode::FlatZinc::FlatZincOptions::step
double step(void) const
Script mode to run.
Definition flatzinc.hh:361
Gecode::FlatZinc::FlatZincOptions::_step
Gecode::Driver::DoubleOption _step
Step option.
Definition flatzinc.hh:248
Gecode::FlatZinc::FlatZincOptions::mode
Gecode::ScriptMode mode(void) const
Script mode to run.
Definition flatzinc.hh:364
Gecode::FlatZinc::FlatZincOptions::interrupt
bool interrupt(void) const
Script mode to run.
Definition flatzinc.hh:381
Gecode::FlatZinc::FlatZincOptions::_output
Gecode::Driver::StringValueOption _output
Output file.
Definition flatzinc.hh:255
Gecode::FlatZinc::FlatZincOptions::parse
void parse(int &argc, char *argv[])
Script mode to run.
Definition flatzinc.hh:332
Gecode::FlatZinc::FlatZincOptions::profiler_port
unsigned int profiler_port(void) const
Script mode to run.
Definition flatzinc.hh:386
Gecode::FlatZinc::FlatZincOptions::_profiler_info
Gecode::Driver::BoolOption _profiler_info
Whether solution information should be sent to the CP-profiler.
Definition flatzinc.hh:261
Gecode::FlatZinc::FlatZincOptions::restart
void restart(RestartMode rm)
Script mode to run.
Definition flatzinc.hh:372
Gecode::FlatZinc::FlatZincOptions::_r_base
Gecode::Driver::DoubleOption _r_base
Restart base.
Definition flatzinc.hh:243
Gecode::FlatZinc::FlatZincOptions::_profiler_port
Gecode::Driver::UnsignedIntOption _profiler_port
Connect to this port.
Definition flatzinc.hh:260
Gecode::FlatZinc::FlatZincOptions::_c_d
Gecode::Driver::UnsignedIntOption _c_d
Copy recomputation distance.
Definition flatzinc.hh:235
Gecode::FlatZinc::FlatZincOptions::profiler_id
int profiler_id(void) const
Script mode to run.
Definition flatzinc.hh:385
Gecode::FlatZinc::FlatZincOptions::restart_scale
void restart_scale(int i)
Script mode to run.
Definition flatzinc.hh:378
Gecode::FlatZinc::FlatZincOptions::_mode
Gecode::Driver::StringOption _mode
Script mode to run.
Definition flatzinc.hh:253
Gecode::FlatZinc::FlatZincOptions::restart_scale
unsigned int restart_scale(void) const
Script mode to run.
Definition flatzinc.hh:377
Gecode::FlatZinc::FlatZincOptions::a_d
unsigned int a_d(void) const
Script mode to run.
Definition flatzinc.hh:356
Gecode::FlatZinc::FlatZincOptions::c_d
unsigned int c_d(void) const
Script mode to run.
Definition flatzinc.hh:355
Gecode::FlatZinc::FlatZincOptions::profiler_info
bool profiler_info(void) const
Script mode to run.
Definition flatzinc.hh:387
Gecode::FlatZinc::FlatZincOptions::_a_d
Gecode::Driver::UnsignedIntOption _a_d
Adaptive recomputation distance.
Definition flatzinc.hh:236
Gecode::FlatZinc::FlatZincOptions::_fail
Gecode::Driver::UnsignedIntOption _fail
Cutoff for number of failures.
Definition flatzinc.hh:238
Gecode::FlatZinc::FlatZincOptions::node
unsigned int node(void) const
Script mode to run.
Definition flatzinc.hh:357
Gecode::FlatZinc::FlatZincOptions::free
bool free(void) const
Script mode to run.
Definition flatzinc.hh:354
Gecode::FlatZinc::FlatZincOptions::_threads
Gecode::Driver::DoubleOption _threads
How many threads to use.
Definition flatzinc.hh:232
Gecode::FlatZinc::FlatZincOptions::_seed
Gecode::Driver::IntOption _seed
Random seed.
Definition flatzinc.hh:241
Gecode::FlatZinc::FlatZincOptions::_solutions
Gecode::Driver::IntOption _solutions
How many solutions.
Definition flatzinc.hh:230
Gecode::FlatZinc::FlatZincOptions::_decay
Gecode::Driver::DoubleOption _decay
Decay option.
Definition flatzinc.hh:234
Gecode::FlatZinc::FlatZincOptions::threads
double threads(void) const
Script mode to run.
Definition flatzinc.hh:353
Gecode::FlatZinc::FlatZincOptions::_time
Gecode::Driver::UnsignedIntOption _time
Cutoff for time.
Definition flatzinc.hh:239
Gecode::FlatZinc::FlatZincOptions::_restart
Gecode::Driver::StringOption _restart
Restart method option.
Definition flatzinc.hh:242
Gecode::FlatZinc::FlatZincOptions::restart_base
void restart_base(double d)
Script mode to run.
Definition flatzinc.hh:376
Gecode::FlatZinc::FlatZincSpaceInitData
Definition flatzinc.cpp:753
Gecode::FlatZinc::FlatZincSpace
A space that can be initialized with a FlatZinc model.
Definition flatzinc.hh:428
Gecode::FlatZinc::FlatZincSpace::createBranchers
void createBranchers(Printer &p, AST::Node *ann, FlatZincOptions &opt, bool ignoreUnknown, std::ostream &err=std::cerr)
Create branchers corresponding to the solve item annotations.
Definition flatzinc.cpp:1037
Gecode::FlatZinc::FlatZincSpace::iv_lns
Gecode::IntVarArray iv_lns
The integer variables used in LNS.
Definition flatzinc.hh:490
Gecode::FlatZinc::FlatZincSpace::shrinkArrays
void shrinkArrays(Printer &p)
Remove all variables not needed for output.
Definition flatzinc.cpp:2111
Gecode::FlatZinc::FlatZincSpace::_lns
unsigned int _lns
Percentage of variables to keep in LNS (or 0 for no LNS).
Definition flatzinc.hh:456
Gecode::FlatZinc::FlatZincSpace::maximize
void maximize(int var, bool isInt, AST::Array *annotation)
Post that integer variable var should be maximized.
Definition flatzinc.cpp:1616
Gecode::FlatZinc::FlatZincSpace::arg2intvarargs
IntVarArgs arg2intvarargs(AST::Node *arg, int offset=0)
Convert arg to IntVarArgs.
Definition flatzinc.cpp:2227
Gecode::FlatZinc::FlatZincSpace::fv
Gecode::FloatVarArray fv
The float variables.
Definition flatzinc.hh:512
Gecode::FlatZinc::FlatZincSpace::_random
Rnd _random
Random number generator.
Definition flatzinc.hh:462
Gecode::FlatZinc::FlatZincSpace::newBoolVar
void newBoolVar(BoolVarSpec *vs)
Create new Boolean variable from specification.
Definition flatzinc.cpp:908
Gecode::FlatZinc::FlatZincSpace::arg2FloatVar
FloatVar arg2FloatVar(AST::Node *n)
Convert n to FloatVar.
Definition flatzinc.cpp:2375
Gecode::FlatZinc::FlatZincSpace::print
void print(std::ostream &out, const Printer &p) const
Produce output on out using p.
Definition flatzinc.cpp:2046
Gecode::FlatZinc::FlatZincSpace::fv_introduced
std::vector< bool > fv_introduced
Indicates whether a float variable is introduced by mzn2fzn.
Definition flatzinc.hh:516
Gecode::FlatZinc::FlatZincSpace::_solveAnnotations
AST::Array * _solveAnnotations
Annotations on the solve item.
Definition flatzinc.hh:465
Gecode::FlatZinc::FlatZincSpace::_optVar
int _optVar
Index of the variable to optimize.
Definition flatzinc.hh:448
Gecode::FlatZinc::FlatZincSpace::branchInfo
BranchInformation branchInfo
Information for printing branches.
Definition flatzinc.hh:607
Gecode::FlatZinc::FlatZincSpace::run
void run(std::ostream &out, const Printer &p, const FlatZincOptions &opt, Gecode::Support::Timer &t_total)
Run the search.
Definition flatzinc.cpp:1967
Gecode::FlatZinc::FlatZincSpace::getSharedDFA
DFA getSharedDFA(DFA &a)
Share DFA a if possible.
Definition flatzinc.cpp:2402
Gecode::FlatZinc::FlatZincSpace::newFloatVar
void newFloatVar(FloatVarSpec *vs)
Create new float variable from specification.
Definition flatzinc.cpp:967
Gecode::FlatZinc::FlatZincSpace::arg2SetVar
SetVar arg2SetVar(AST::Node *n)
Convert n to SetVar.
Definition flatzinc.cpp:2317
Gecode::FlatZinc::FlatZincSpace::iv_boolalias
int * iv_boolalias
Indicates whether an integer variable aliases a Boolean variable.
Definition flatzinc.hh:495
Gecode::FlatZinc::FlatZincSpace::slave
virtual bool slave(const MetaInfo &mi)
Slave function for restarts.
Definition flatzinc.cpp:2002
Gecode::FlatZinc::FlatZincSpace::postConstraints
void postConstraints(std::vector< ConExpr * > &ces)
Post a constraint specified by ce.
Definition flatzinc.cpp:1004
Gecode::FlatZinc::FlatZincSpace::arg2setvarargs
SetVarArgs arg2setvarargs(AST::Node *arg, int offset=0, int doffset=0, const IntSet &od=IntSet::empty)
Convert n to SetVarArgs.
Definition flatzinc.cpp:2328
Gecode::FlatZinc::FlatZincSpace::_optVarIsInt
bool _optVarIsInt
Whether variable to optimize is integer (or float).
Definition flatzinc.hh:450
Gecode::FlatZinc::FlatZincSpace::FlatZincSpace
FlatZincSpace(FlatZincSpace &)
Copy constructor.
Definition flatzinc.cpp:774
Gecode::FlatZinc::FlatZincSpace::bv
Gecode::BoolVarArray bv
The Boolean variables.
Definition flatzinc.hh:497
Gecode::FlatZinc::FlatZincSpace::newSetVar
void newSetVar(SetVarSpec *vs)
Create new set variable from specification.
Definition flatzinc.cpp:920
Gecode::FlatZinc::FlatZincSpace::optVarIsInt
bool optVarIsInt(void) const
Return whether variable used for optimization is integer (or float).
Definition flatzinc.cpp:2041
Gecode::FlatZinc::FlatZincSpace::iv_introduced
std::vector< bool > iv_introduced
Indicates whether an integer variable is introduced by mzn2fzn.
Definition flatzinc.hh:493
Gecode::FlatZinc::FlatZincSpace::arg2IntVar
IntVar arg2IntVar(AST::Node *n)
Convert n to IntVar.
Definition flatzinc.cpp:2285
Gecode::FlatZinc::FlatZincSpace::getDomains
std::string getDomains(const Printer &p) const
Get string representing the domains of variables (for cpprofiler).
Definition flatzinc.cpp:1795
Gecode::FlatZinc::FlatZincSpace::_initData
FlatZincSpaceInitData * _initData
Initialisation data (only used for posting constraints).
Definition flatzinc.hh:437
Gecode::FlatZinc::FlatZincSpace::method
Meth method(void) const
Return whether to solve a satisfaction or optimization problem.
Definition flatzinc.cpp:2031
Gecode::FlatZinc::FlatZincSpace::sv_introduced
std::vector< bool > sv_introduced
Indicates whether a set variable is introduced by mzn2fzn.
Definition flatzinc.hh:508
Gecode::FlatZinc::FlatZincSpace::arg2intset
IntSet arg2intset(AST::Node *n)
Convert n to IntSet.
Definition flatzinc.cpp:2197
Gecode::FlatZinc::FlatZincSpace::bv_introduced
std::vector< bool > bv_introduced
Indicates whether a Boolean variable is introduced by mzn2fzn.
Definition flatzinc.hh:501
Gecode::FlatZinc::FlatZincSpace::fv_aux
Gecode::FloatVarArray fv_aux
The introduced float variables.
Definition flatzinc.hh:514
Gecode::FlatZinc::FlatZincSpace::minimize
void minimize(int var, bool isInt, AST::Array *annotation)
Post that integer variable var should be minimized.
Definition flatzinc.cpp:1608
Gecode::FlatZinc::FlatZincSpace::constrain
virtual void constrain(const Space &s)
Implement optimization.
Definition flatzinc.cpp:1981
Gecode::FlatZinc::FlatZincSpace::arg2boolargs
IntArgs arg2boolargs(AST::Node *arg, int offset=0)
Convert arg (array of Booleans) to IntArgs.
Definition flatzinc.cpp:2173
Gecode::FlatZinc::FlatZincSpace::sv_aux
Gecode::SetVarArray sv_aux
The introduced set variables.
Definition flatzinc.hh:506
Gecode::FlatZinc::FlatZincSpace::floatVarCount
int floatVarCount
Number of float variables.
Definition flatzinc.hh:443
Gecode::FlatZinc::FlatZincSpace::boolVarCount
int boolVarCount
Number of Boolean variables.
Definition flatzinc.hh:441
Gecode::FlatZinc::FlatZincSpace::sv
Gecode::SetVarArray sv
The set variables.
Definition flatzinc.hh:504
Gecode::FlatZinc::FlatZincSpace::setVarCount
int setVarCount
Number of set variables.
Definition flatzinc.hh:445
Gecode::FlatZinc::FlatZincSpace::optVar
int optVar(void) const
Return index of variable used for optimization.
Definition flatzinc.cpp:2036
Gecode::FlatZinc::FlatZincSpace::arg2floatvarargs
FloatVarArgs arg2floatvarargs(AST::Node *arg, int offset=0)
Convert n to FloatVarArgs.
Definition flatzinc.cpp:2354
Gecode::FlatZinc::FlatZincSpace::arg2boolsharedarray
IntSharedArray arg2boolsharedarray(AST::Node *arg, int offset=0)
Convert arg (array of integers) to IntSharedArray.
Definition flatzinc.cpp:2183
Gecode::FlatZinc::FlatZincSpace::solve
void solve(AST::Array *annotation)
Post the solve item.
Definition flatzinc.cpp:1602
Gecode::FlatZinc::FlatZincSpace::step
Gecode::FloatNum step
Step by which a next solution has to have lower cost.
Definition flatzinc.hh:518
Gecode::FlatZinc::FlatZincSpace::_lnsInitialSolution
IntSharedArray _lnsInitialSolution
Initial solution to start the LNS (or NULL for no LNS).
Definition flatzinc.hh:459
Gecode::FlatZinc::FlatZincSpace::bv_aux
Gecode::BoolVarArray bv_aux
The introduced Boolean variables.
Definition flatzinc.hh:499
Gecode::FlatZinc::FlatZincSpace::arg2intsharedarray
IntSharedArray arg2intsharedarray(AST::Node *arg, int offset=0)
Convert arg (array of integers) to IntSharedArray.
Definition flatzinc.cpp:2159
Gecode::FlatZinc::FlatZincSpace::arg2boolvarargs
BoolVarArgs arg2boolvarargs(AST::Node *arg, int offset=0, int siv=-1)
Convert arg to BoolVarArgs.
Definition flatzinc.cpp:2248
Gecode::FlatZinc::FlatZincSpace::aliasBool2Int
void aliasBool2Int(int iv, int bv)
Link integer variable iv to Boolean variable bv.
Definition flatzinc.cpp:899
Gecode::FlatZinc::FlatZincSpace::solveAnnotations
AST::Array * solveAnnotations(void) const
Return the solve item annotations.
Definition flatzinc.cpp:1597
Gecode::FlatZinc::FlatZincSpace::iv_aux
Gecode::IntVarArray iv_aux
The introduced integer variables.
Definition flatzinc.hh:487
Gecode::FlatZinc::FlatZincSpace::iv
Gecode::IntVarArray iv
The integer variables.
Definition flatzinc.hh:485
Gecode::FlatZinc::FlatZincSpace::copy
virtual Gecode::Space * copy(void)
Copy function.
Definition flatzinc.cpp:2026
Gecode::FlatZinc::FlatZincSpace::init
void init(int intVars, int boolVars, int setVars, int floatVars)
Initialize space with given number of variables.
Definition flatzinc.cpp:856
Gecode::FlatZinc::FlatZincSpace::isBoolArray
bool isBoolArray(AST::Node *b, int &singleInt)
Check if b is array of Booleans (or has a single integer).
Definition flatzinc.cpp:2295
Gecode::FlatZinc::FlatZincSpace::ann2ipl
IntPropLevel ann2ipl(AST::Node *ann)
Convert ann to integer propagation level.
Definition flatzinc.cpp:2386
Gecode::FlatZinc::FlatZincSpace::newIntVar
void newIntVar(IntVarSpec *vs)
Create new integer variable from specification.
Definition flatzinc.cpp:881
Gecode::FlatZinc::FlatZincSpace::_method
Meth _method
Whether to solve as satisfaction or optimization problem.
Definition flatzinc.hh:453
Gecode::FlatZinc::FlatZincSpace::compare
void compare(const Space &s, std::ostream &out) const
Compare this space with space s and print the differences on out.
Definition flatzinc.cpp:2058
Gecode::FlatZinc::FlatZincSpace::Meth
Meth
Definition flatzinc.hh:430
Gecode::FlatZinc::FlatZincSpace::MIN
@ MIN
Definition flatzinc.hh:432
Gecode::FlatZinc::FlatZincSpace::SAT
@ SAT
Definition flatzinc.hh:431
Gecode::FlatZinc::FlatZincSpace::MAX
@ MAX
Definition flatzinc.hh:433
Gecode::FlatZinc::FlatZincSpace::intVarCount
int intVarCount
Number of integer variables.
Definition flatzinc.hh:439
Gecode::FlatZinc::FlatZincSpace::arg2BoolVar
BoolVar arg2BoolVar(AST::Node *n)
Convert n to BoolVar.
Definition flatzinc.cpp:2274
Gecode::FlatZinc::FlatZincSpace::arg2tupleset
TupleSet arg2tupleset(const IntArgs &a, int noOfVars)
Convert a to TupleSet.
Definition flatzinc.cpp:2133
Gecode::FlatZinc::FlatZincSpace::arg2intsetargs
IntSetArgs arg2intsetargs(AST::Node *arg, int offset=0)
Convert arg to IntSetArgs.
Definition flatzinc.cpp:2212
Gecode::FlatZinc::FlatZincSpace::arg2floatargs
FloatValArgs arg2floatargs(AST::Node *arg, int offset=0)
Convert n to FloatValArgs.
Definition flatzinc.cpp:2344
Gecode::FlatZinc::FlatZincSpace::needAuxVars
bool needAuxVars
Whether the introduced variables still need to be copied.
Definition flatzinc.hh:521
Gecode::FlatZinc::FlatZincSpace::arg2intargs
IntArgs arg2intargs(AST::Node *arg, int offset=0)
Convert arg (array of integers) to IntArgs.
Definition flatzinc.cpp:2123
Gecode::FlatZinc::Printer
Output support class for FlatZinc interpreter.
Definition flatzinc.hh:107
Gecode::FlatZinc::Printer::setVarName
const std::string & setVarName(int i) const
Definition flatzinc.hh:196
Gecode::FlatZinc::Printer::boolVarName
const std::string & boolVarName(int i) const
Definition flatzinc.hh:189
Gecode::FlatZinc::Printer::intVarName
const std::string & intVarName(int i) const
Definition flatzinc.hh:187
Gecode::FlatZinc::Printer::floatVarName
const std::string & floatVarName(int i) const
Definition flatzinc.hh:192
Gecode::FlatZinc::Printer::Printer
Printer(void)
Definition flatzinc.hh:153
Gecode::FloatNumBranch
Value description class for branching.
Definition float.hh:1462
Gecode::FloatValArgs
Passing float arguments.
Definition float.hh:950
Gecode::FloatVarArgs
Passing float variables.
Definition float.hh:979
Gecode::FloatVarArray
Float variable array.
Definition float.hh:1030
Gecode::FloatVar
Float variables.
Definition float.hh:870
Gecode::IntArgs
Passing integer arguments.
Definition int.hh:628
Gecode::IntSet
Integer sets.
Definition int.hh:174
Gecode::IntVarArgs
Passing integer variables.
Definition int.hh:656
Gecode::IntVarArray
Integer variable array.
Definition int.hh:763
Gecode::IntVar
Integer variables.
Definition int.hh:371
Gecode::Rnd
Random number generator.
Definition rnd.hpp:42
Gecode::SetVarArgs
Passing set variables.
Definition set.hh:488
Gecode::SetVarArray
Set variable array
Definition set.hh:570
Gecode::SetVar
Set variables
Definition set.hh:127
Gecode::SharedHandle::SharedHandle
SharedHandle(void)
Create shared handle with no object pointing to.
Definition shared-object.hpp:122
Gecode::Space
Computation spaces.
Definition core.hpp:1742
Gecode::Space::p
struct Gecode::Space::@055132133326276162005044145100211202071356247106::@275070317317120154232063063134255170030071110047 p
Data only available during propagation or branching.
Gecode::Support::Timer
Timer
Definition timer.hpp:51
Gecode::TupleSet
Class represeting a set of tuples.
Definition int.hh:2191
conexpr.hh
driver.hh
GECODE_FLATZINC_EXPORT
#define GECODE_FLATZINC_EXPORT
Definition flatzinc.hh:75
float.hh
int.hh
set.hh
Gecode::ScriptMode
ScriptMode
Different modes for executing scripts.
Definition driver.hh:94
Gecode::RestartMode
RestartMode
Different modes for restart-based search.
Definition driver.hh:106
Gecode::SM_STAT
@ SM_STAT
Print statistics for script.
Definition driver.hh:97
Gecode::SM_SOLUTION
@ SM_SOLUTION
Print solution and some statistics.
Definition driver.hh:95
Gecode::SM_GIST
@ SM_GIST
Run script in Gist.
Definition driver.hh:98
Gecode::SM_CPPROFILER
@ SM_CPPROFILER
Run script with CP-profiler.
Definition driver.hh:99
Gecode::RM_CONSTANT
@ RM_CONSTANT
Restart with constant sequence.
Definition driver.hh:108
Gecode::RM_LINEAR
@ RM_LINEAR
Restart with linear sequence.
Definition driver.hh:109
Gecode::RM_LUBY
@ RM_LUBY
Restart with Luby sequence.
Definition driver.hh:110
Gecode::RM_NONE
@ RM_NONE
No restarts.
Definition driver.hh:107
Gecode::RM_GEOMETRIC
@ RM_GEOMETRIC
Restart with geometric sequence.
Definition driver.hh:111
Gecode::FloatNum
double FloatNum
Floating point number base type.
Definition float.hh:106
Gecode::IntPropLevel
IntPropLevel
Propagation levels for integer propagators.
Definition int.hh:974
Gecode::Space::Space
Space(void)
Default constructor.
Definition core.cpp:115
print
void print(const Search::Statistics &stat, bool restart)
Print statistics.
Definition job-shop.cpp:606
kernel.hh
Gecode::FlatZinc
Interpreter for the FlatZinc language.
Gecode::FlatZinc::parse
GECODE_FLATZINC_EXPORT FlatZincSpace * parse(const std::string &fileName, Printer &p, std::ostream &err=std::cerr, FlatZincSpace *fzs=NULL, Rnd &rnd=defrnd)
Parse FlatZinc file fileName into fzs and return it.
Gecode::FlatZinc::defrnd
GECODE_FLATZINC_EXPORT Rnd defrnd
Uninitialized default random number generator.
Gecode::Search
Search engines
Gecode
Gecode toplevel namespace
Gecode::IntSetArgs
ArgArray< IntSet > IntSetArgs
Passing set arguments.
Definition int.hh:619
Gecode::IntSharedArray
SharedArray< int > IntSharedArray
Arrays of integers that can be shared among several element constraints.
Definition int.hh:1477
std
Definition flatzinc.cpp:52
GECODE_HAS_FLOAT_VARS
#define GECODE_HAS_FLOAT_VARS
Definition config.hpp:35
GECODE_HAS_SET_VARS
#define GECODE_HAS_SET_VARS
Definition config.hpp:56
GECODE_FLATZINC_VERSION
#define GECODE_FLATZINC_VERSION
Definition config.hpp:17
GECODE_VTABLE_EXPORT
#define GECODE_VTABLE_EXPORT
Definition support.hh:72
varspec.hh