34#ifndef __GECODE_DRIVER_HH__
35#define __GECODE_DRIVER_HH__
47#if !defined(GECODE_STATIC_LIBS) && \
48 (defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
50#ifdef GECODE_BUILD_DRIVER
51#define GECODE_DRIVER_EXPORT __declspec( dllexport )
53#define GECODE_DRIVER_EXPORT __declspec( dllimport )
58#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
59#define GECODE_DRIVER_EXPORT __attribute__ ((visibility("default")))
61#define GECODE_DRIVER_EXPORT
67#ifndef GECODE_BUILD_DRIVER
68#define GECODE_LIBRARY_NAME "Driver"
129 char*
argument(
int argc,
char* argv[])
const;
134 virtual int parse(
int argc,
char* argv[]) = 0;
140 static char*
strdup(
const char* s);
142 static char*
stredup(
const char* s);
144 static void strdel(
const char* s);
158 void value(
const char* v);
160 const char*
value(
void)
const;
162 virtual int parse(
int argc,
char* argv[]);
164 virtual void help(
void);
193 int value(
void)
const;
195 void add(
int v,
const char* o,
const char* h = NULL);
197 virtual int parse(
int argc,
char* argv[]);
199 virtual void help(
void);
214 IntOption(
const char* o,
const char* e,
int v=0);
218 int value(
void)
const;
220 virtual int parse(
int argc,
char* argv[]);
222 virtual void help(
void);
236 void value(
unsigned int v);
238 unsigned int value(
void)
const;
240 virtual int parse(
int argc,
char* argv[]);
242 virtual void help(
void);
256 void value(
double v);
258 double value(
void)
const;
260 virtual int parse(
int argc,
char* argv[]);
262 virtual void help(
void);
274 BoolOption(
const char* o,
const char* e,
bool v=
false);
278 bool value(
void)
const;
280 virtual int parse(
int argc,
char* argv[]);
282 virtual void help(
void);
300 virtual int parse(
int argc,
char* argv[]);
302 virtual void help(
void);
318 int value(
void)
const;
320 virtual int parse(
int argc,
char* argv[]);
322 virtual void help(
void);
340 virtual void help(
void);
351 void parse(
int& argc,
char* argv[]);
354 const char*
name(
void)
const;
356 void name(
const char*);
412#ifdef GECODE_HAS_CPPROFILER
429 void model(
int v,
const char* o,
const char* h = NULL);
431 int model(
void)
const;
436 void symmetry(
int v,
const char* o,
const char* h = NULL);
443 void propagation(
int v,
const char* o,
const char* h = NULL);
455 void branching(
int v,
const char* o,
const char* h = NULL);
460 void decay(
double d);
462 double decay(
void)
const;
465 void seed(
unsigned int s);
467 unsigned int seed(
void)
const;
472 double step(
void)
const;
480 void search(
int v,
const char* o,
const char* h = NULL);
495 void c_d(
unsigned int d);
497 unsigned int c_d(
void)
const;
500 void a_d(
unsigned int d);
502 unsigned int a_d(
void)
const;
505 void d_l(
unsigned int d);
507 unsigned int d_l(
void)
const;
510 void node(
unsigned int n);
512 unsigned int node(
void)
const;
515 void fail(
unsigned int n);
517 unsigned int fail(
void)
const;
520 void time(
unsigned int t);
522 unsigned int time(
void)
const;
525 void assets(
unsigned int n);
527 unsigned int assets(
void)
const;
530 void slice(
unsigned int n);
532 unsigned int slice(
void)
const;
560 void relax(
double d);
562 double relax(
void)
const;
580 unsigned int samples(
void)
const;
605 int trace(
void)
const;
607#ifdef GECODE_HAS_CPPROFILER
623#ifdef GECODE_HAS_GIST
630 unsigned int n_click;
634 unsigned int n_solution;
642 unsigned int n_compare;
682 virtual void help(
void);
684 void parse(
int& argc,
char* argv[]);
687 void size(
unsigned int s);
689 unsigned int size(
void)
const;
703 virtual void help(
void);
705 void parse(
int& argc,
char* argv[]);
719namespace Gecode {
namespace Driver {
728 template<
class BaseSpace>
736 virtual void print(std::ostream& os)
const;
750 template<
class Script,
template<
class>
class Engine,
class Options>
753 template<
class Script,
template<
class>
class Engine,
class Options,
754 template<
class,
template<
class>
class>
class Meta>
758#ifdef GECODE_HAS_FLOAT_VARS
761 template<
class BaseSpace>
766 : BaseSpace(opt.step()) {}
775 template<
class BaseSpace>
829#ifdef GECODE_HAS_FLOAT_VARS
Base class for script options.
BaseOptions(const char *s)
Initialize options for script with name s.
void add(Driver::BaseOption &o)
Add new option o.
const char * _name
Script name.
Driver::BaseOption * fst
First registered option.
Driver::BaseOption * lst
Last registered option.
const char * name(void) const
Return name of script.
virtual void help(void)
Print help text.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
static void strdel(const char *s)
Delete heap-allocated copy of string s.
virtual void help(void)=0
Print help text.
static char * stredup(const char *s)
Create heap-allocated copy of string s with hyphen added.
const char * eopt
String for option (excluding hyphen)
char * argument(int argc, char *argv[]) const
static char * strdup(const char *s)
Create heap-allocated copy of string s.
const char * exp
Short explanation.
const char * iopt
String for option (including hyphen)
BaseOption(const char *o, const char *e)
Initialize for option o and explanation e.
virtual int parse(int argc, char *argv[])=0
Parse option at first position and return number of parsed arguments.
BaseOption * next
Next option Check for option and return its argument.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
BoolOption(const char *o, const char *e, bool v=false)
Initialize for option o and explanation e and default value v.
void value(bool v)
Set default value to v.
virtual void help(void)
Print help text.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
virtual void help(void)
Print help text.
DoubleOption(const char *o, const char *e, double v=0)
Initialize for option o and explanation e and default value v.
void value(double v)
Set default value to v.
IgnoreStepOption(BaseSpace &e)
Constructor used for cloning.
IgnoreStepOption(const Options &)
Constructor.
virtual void help(void)
Print help text.
void value(int v)
Set default value to v.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
IntOption(const char *o, const char *e, int v=0)
Initialize for option o and explanation e and default value v.
Integer propagation level option.
IntPropLevel cur
Current value.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
IplOption(IntPropLevel ipl=IPL_DEF)
Initialize with default value ipl.
virtual void help(void)
Print help text.
void value(IntPropLevel l)
Set default level to l.
Parametric base-class for scripts.
static void run(const Options &opt, Script *s=NULL)
ScriptBase(ScriptBase &e)
Constructor used for cloning.
virtual void compare(const Space &home, std::ostream &os) const
Compare with s.
virtual void print(std::ostream &os) const
Print a solution to os.
static std::ostream & select_ostream(const char *sn, std::ofstream &ofs)
Choose output stream according to sn.
ScriptBase(const Options &opt)
Constructor.
const char * help
Optional help text.
Value * next
Next option value.
int val
Value for an option value.
const char * opt
String for option value.
String-valued option (integer value defined by strings)
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
StringOption(const char *o, const char *e, int v=0)
Initialize for option o and explanation e and default value v.
virtual void help(void)
Print help text.
void value(int v)
Set default value to v.
Value * lst
Last option value.
Value * fst
First option value.
void add(int v, const char *o, const char *h=NULL)
Add option value for value v, string o, and help text h.
virtual void help(void)
Print help text.
void value(const char *v)
Set default value to v.
StringValueOption(const char *o, const char *e, const char *v=NULL)
Initialize for option o and explanation e and default value v.
const char * cur
Current value.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
virtual void help(void)
Print help text.
TraceOption(int f=0)
Initialize with no tracing.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
void value(int f)
Set default trace flags to f.
void value(unsigned int v)
Set default value to v.
UnsignedIntOption(const char *o, const char *e, unsigned int v=0)
Initialize for option o and explanation e and default value v.
virtual int parse(int argc, char *argv[])
Parse option at first position and return number of parsed arguments.
unsigned int cur
Current value.
virtual void help(void)
Print help text.
Abstract base class for comparators.
Abstract base class for inspectors.
const char * _inst
Instance string.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
void instance(const char *s)
Set default instance name.
virtual void help(void)
Print help text.
InstanceOptions(const char *s)
Initialize options for script with name s.
void click(Gist::Inspector *i)
Add inspector that reacts on node double clicks.
void solution(Gist::Inspector *i)
Add inspector that reacts on each new solution that is found.
void move(Gist::Inspector *i)
Add inspector that reacts on each move of the cursor.
void compare(Gist::Comparator *i)
Add comparator.
Driver::DoubleOption _relax
Probability to relax variable.
void trace(int f)
Set trace flags.
Driver::StringValueOption _log_file
Where to print statistics.
void c_d(unsigned int d)
Set default copy recomputation distance.
Driver::StringOption _model
General model options.
void log_file(const char *f)
Set default output file name for Gecode stats.
void print_last(bool p)
Set whether to print only last solution found.
Driver::StringOption _mode
Script mode to run.
void propagation(int v)
Set default propagation value.
void iterations(unsigned int i)
Set default number of iterations.
Driver::DoubleOption _decay
Decay option.
Driver::UnsignedIntOption _nogoods_limit
Limit for no-good extraction.
void a_d(unsigned int d)
Set default adaptive recomputation distance.
void profiler_id(int i)
Set profiler execution identifier.
void seed(unsigned int s)
Set default seed value.
Driver::BoolOption _nogoods
Whether to use no-goods.
void branching(int v)
Set default branching value.
void fail(unsigned int n)
Set default failure cutoff.
void solutions(unsigned int n)
Set default number of solutions to search for.
Driver::UnsignedIntOption _slice
Size of a portfolio slice.
Driver::TraceOption _trace
Trace flags for tracing.
Driver::UnsignedIntOption _d_l
Discrepancy limit for LDS.
void slice(unsigned int n)
Set default slice size in a portfolio.
Driver::UnsignedIntOption _assets
Number of assets in a portfolio.
void search(int v)
Set default search value.
Driver::UnsignedIntOption _solutions
How many solutions.
void nogoods(bool b)
Set default nogoods posting behavior.
void symmetry(int v)
Set default symmetry value.
void profiler_port(unsigned int p)
Set profiler port.
Driver::UnsignedIntOption _iterations
How many iterations per sample.
Driver::StringOption _search
Search options.
Driver::StringOption _propagation
Propagation options.
Driver::IplOption _ipl
Integer propagation level.
void restart(RestartMode r)
Set default restart mode.
Options(const char *s)
Initialize options for script with name s.
Driver::BoolOption _profiler_info
Whether solution information should be sent to the CPProfiler.
Driver::BoolOption _print_last
Print only last solution found.
Driver::UnsignedIntOption _c_d
Copy recomputation distance.
void nogoods_limit(unsigned int l)
Set default nogoods depth limit.
void step(double s)
Set default step value.
void relax(double d)
Set default relax probability.
void ipl(IntPropLevel i)
Set default integer propagation level.
Driver::DoubleOption _threads
How many threads to use.
Driver::StringOption _branching
Branching options.
Driver::StringOption _restart
Restart method option.
void assets(unsigned int n)
Set default number of assets in a portfolio.
Driver::UnsignedIntOption _seed
Seed option.
Driver::UnsignedIntOption _time
Cutoff for time.
Driver::DoubleOption _step
Step option.
Driver::UnsignedIntOption _profiler_port
Connect to this port.
Driver::UnsignedIntOption _r_scale
Restart scale factor.
Driver::IntOption _profiler_id
Use this execution id for the CP-profiler.
void restart_scale(unsigned int scale)
Set default restart scale factor.
void profiler_info(bool b)
Whether solution info should be sent to profiler.
void interrupt(bool b)
Set default interrupt behavior.
void restart_base(double base)
Set default restart base.
Driver::BoolOption _interrupt
Whether to catch SIGINT.
void d_l(unsigned int d)
Set default discrepancy limit for LDS.
void model(int v)
Set default model value.
void decay(double d)
Set default decay factor.
Driver::UnsignedIntOption _a_d
Adaptive recomputation distance.
void node(unsigned int n)
Set default node cutoff.
void samples(unsigned int s)
Set default number of samples.
void out_file(const char *f)
Set default output file name for solutions.
Driver::DoubleOption _r_base
Restart base.
Driver::StringOption _symmetry
General symmetry options.
void time(unsigned int t)
Set default time cutoff.
Driver::StringValueOption _out_file
Where to print solutions.
Driver::UnsignedIntOption _node
Cutoff for number of nodes.
Driver::UnsignedIntOption _samples
How many samples.
void mode(ScriptMode em)
Set default mode.
Driver::UnsignedIntOption _fail
Cutoff for number of failures.
void threads(double n)
Set number of parallel threads.
virtual void help(void)
Print help text.
SizeOptions(const char *s)
Initialize options for script with name s.
unsigned int _size
Size value.
void size(unsigned int s)
Set default size.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
Array with arbitrary number of elements.
#define GECODE_DRIVER_EXPORT
ScriptMode
Different modes for executing scripts.
RestartMode
Different modes for restart-based search.
@ SM_STAT
Print statistics for script.
@ SM_SOLUTION
Print solution and some statistics.
@ SM_GIST
Run script in Gist.
@ SM_CPPROFILER
Run script with CP-profiler.
@ SM_TIME
Measure average runtime.
@ RM_CONSTANT
Restart with constant sequence.
@ RM_LINEAR
Restart with linear sequence.
@ RM_LUBY
Restart with Luby sequence.
@ RM_GEOMETRIC
Restart with geometric sequence.
Driver::ScriptBase< Driver::IgnoreStepOption< IntMaximizeSpace > > IntMaximizeScript
Base-class for scripts for finding solution of highest integer cost.
Driver::ScriptBase< Driver::IgnoreStepOption< Space > > Script
Base-class for scripts.
Driver::ScriptBase< Driver::ExtractStepOption< FloatMinimizeSpace > > FloatMinimizeScript
Base-class for scripts for finding solution of lowest float cost.
Driver::ScriptBase< Driver::ExtractStepOption< FloatMaximizeSpace > > FloatMaximizeScript
Base-class for scripts for finding solution of highest float cost.
Driver::ScriptBase< Driver::IgnoreStepOption< IntLexMaximizeSpace > > IntLexMaximizeScript
Base-class for scripts for finding solution of lexically highest integer costs.
Driver::ScriptBase< Driver::IgnoreStepOption< IntLexMinimizeSpace > > IntLexMinimizeScript
Base-class for scripts for finding solution of lexically lowest integer costs.
Driver::ScriptBase< Driver::IgnoreStepOption< IntMinimizeSpace > > IntMinimizeScript
Base-class for scripts for finding solution of lowest integer cost.
IntPropLevel
Propagation levels for integer propagators.
@ IPL_DEF
Simple propagation levels.
Gecode toplevel namespace
Post propagator for SetVar SetOpType SetVar SetRelType r