1 #ifndef __CONSTRAINT_H__
2 #define __CONSTRAINT_H__
8 #include "../../data_structures/bm/blockmodel.h"
9 #include "../../data_structures/bm/blocksel.h"
11 #include "../../solvers/scheduling/fractional_scheduler/fractional_schedule.h"
12 #include "../../data_structures/precs/arcs.h"
13 #include "../../data_structures/precs/precs.h"
83 virtual string ToXML(
const unsigned int identation_level = 0)
const;
97 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
106 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
115 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
125 static string XMLIdentation(
const unsigned int & identation_level);
137 static string XMLAttribute(
const string & attr_name,
const double & value);
149 static string XMLAttribute(
const string & attr_name,
const string & value);
192 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
193 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
194 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
205 const unsigned int _period;
267 const double _min, _max;
268 vector<string> _dest;
299 const unsigned int & period,
300 const string & attribute,
301 const vector<string> & destinations,
409 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
410 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
411 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
428 const string _weight_attr;
429 const double _term_min;
430 const double _term_max;
447 const unsigned int & period,
448 const string & sum_attr,
449 const string & weight_attr,
450 const vector<string> & destinations,
454 const double term_min =0.0,
455 const double term_max =0.0);
503 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
504 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
505 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
560 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
561 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
562 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
618 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
619 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
620 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
635 const unsigned int _delta;
694 virtual string XMLHeading(
const unsigned int & identation_level=0)
const;
695 virtual string XMLBody(
const unsigned int & identation_level=0)
const;
696 virtual string XMLFooting(
const unsigned int & identation_level=0)
const;
virtual ~GeometricConstraint()
Destroys the precedence constraint.
Definition: constraint.cpp:790
virtual bool Check(const delphos::Schedule &sch) const
Checks if the constraint is satisfied.
Definition: constraint.cpp:802
TimedConstraint(const string &name, const unsigned int &period)
Creates a new timed constraint.
Definition: constraint.cpp:72
delphos::BlockSelection * GetBlockSelection() const
Returns the selection of blocks being constrained.
Definition: constraint.cpp:102
const unsigned int NumAffectedDestinations() const
Returns the number of destinations affected by the constraint.
Definition: constraint.cpp:359
PrecedenceConstraint(const string &name, const delphos::Precedence &prec)
Creates a new precedence constraint.
Definition: constraint.cpp:586
Abstracts a set of blocks (subset of a blockmodel).
Definition: blocksel.h:33
virtual bool Check(const delphos::Schedule &sch) const
Checks if the constraint is satisfied.
Definition: constraint.cpp:597
const double MinValue() const
Returns the lower limit set by the constraint. Return the lower limit set by the constraint.
Definition: constraint.cpp:353
virtual bool Check(const delphos::Schedule &sch) const
Checks if the constraint is satisfied.
Definition: constraint.cpp:694
A constraint on the addition of the attributes of a block.
Definition: constraint.h:264
const double MaxValue() const
Returns the upper limit set by the constraint. Return the upper limit set by the constraint.
Definition: constraint.cpp:356
const vector< string > & GetAffectedDestinations() const
Returns the affected destinations.
Definition: constraint.cpp:370
virtual bool Check(const delphos::Schedule &sch) const
Checks if the schedule satisfies the constraint.
Definition: constraint.cpp:211
virtual ~PrecedenceConstraint()
Destroys the precedence constraint.
Definition: constraint.cpp:590
const string GetSumAttribute() const
Returns the attribute to be added up and limited.
Definition: constraint.cpp:349
virtual const delphos::Precedence & GetPrecedence() const
Returns the precedence object associated to the constraint.
Definition: constraint.cpp:593
virtual ~BlockSelectionPrecedenceConstraint()
Destroy the block selection precedence constraint.
Definition: constraint.cpp:680
const unsigned int GetTimeDifference() const
Returns the constraint's extraction time difference.
Definition: constraint.cpp:797
virtual const delphos::RampPrecedence & GetPrecedence() const
Returns the precedence object associated to the constraint.
Definition: constraint.cpp:792
A base class for constraints that apply to subsets of blocks.
Definition: constraint.h:158
BlockTimingConstraint(const string &name, const unsigned int &period, delphos::BlockModel &bm)
Creates a constraint limiting the period .
Definition: constraint.cpp:127
A constraint on the average values of attributes of blocks.
Definition: constraint.h:426
Constraint(const string &name)
Creates a constraint with given name.
Definition: constraint.cpp:10
virtual bool Check(const delphos::Schedule &sch) const
Checks if the given schedule satisfies the constraint.
Definition: constraint.cpp:19
BlockSelectionPrecedenceConstraint(const string &name, const BlockSelection &bs_first, const BlockSelection &bs_second)
Creates a block selection precedence constraint.
Definition: constraint.cpp:675
virtual string ToXML(const unsigned int identation_level=0) const
A XML string describing the constraint.
Definition: constraint.cpp:39
virtual ~BlockConstraint()
Destroys a block constraint.
Definition: constraint.cpp:95
horizontal precedence class with utility methods.
Definition: ramps.h:25
virtual ~Constraint()
Destructor.
Definition: constraint.cpp:13
Abstracts a container of blocks as a table with arbitrary number of attributes that can be accessed b...
Definition: blockmodel.h:62
A base class for constraints indexed by time-period.
Definition: constraint.h:203
const double GetFixedTermMin() const
Returns the fixed term on minimum bound.
Definition: constraint.cpp:411
const unsigned int GetNumAffectedDestinations() const
Returns the number of destinations affected by the constraint.
Definition: constraint.cpp:362
A geometric constraint.
Definition: constraint.h:632
Implements a precedence as an explicit set of arcs between blocks. Provides utility functions...
Definition: precs.h:22
Defines a fractional scheduling of blocks.
Definition: fractional_schedule.h:22
virtual const delphos::BlockSelection & GetFirstBlockSelection() const
Returns the first block selection to be extracted.
Definition: constraint.cpp:684
string GetAffectedDestination(const unsigned int &i) const
Returns the name of the i-th destinations affected by the constraint.
Definition: constraint.cpp:366
virtual const delphos::BlockSelection & GetSecondBlockSelection() const
Returns the second block selection to be extracted.
Definition: constraint.cpp:689
const double GetFixedTermMax() const
Returns the fixed term on the maximum bound.
Definition: constraint.cpp:414
const double GetMaxValue() const
Returns the upper limit set by the constraint. Return the upper limit set by the constraint.
Definition: constraint.cpp:357
GeometricConstraint(const string &name, const delphos::RampPrecedence &rprec, const unsigned int delta)
Creates a new geometric constraint.
Definition: constraint.cpp:786
AttributeSumConstraint(const string &name, const unsigned int &period, const string &attribute, const vector< string > &destinations, const double min_value=NegativeInfinite, const double max_value=PositiveInfinite, delphos::BlockSelection *bs=NULL)
Creates a new sum constraint.
Definition: constraint.cpp:143
BlockConstraint(const string &name, delphos::BlockModel &bm)
Creates a new block selection constraint.
Definition: constraint.cpp:89
const bool IsLowerBounded() const
Checks if the lower limit applies or not.
Definition: constraint.cpp:162
const string GetWeightAttribute() const
The attribute to be used as weight for the average of the attribute. The attribute to be used as weig...
Definition: constraint.cpp:407
const unsigned int GetPeriod() const
Returns the time-period that the constraint applies at.
Definition: constraint.cpp:78
Defines a constraint that limits processing periods or destinations for blocks.
Definition: constraint.h:234
Defines the base class for all constraints.
Definition: constraint.h:33
A precedence constraint.
Definition: constraint.h:513
static const double NegativeInfinite
Useful constant for 'negative infinite'.
Definition: constraint.h:276
const string SumAttribute() const
Returns the attribute to be added up and limited.
Definition: constraint.cpp:345
AttributeAvgConstraint(const string &name, const unsigned int &period, const string &sum_attr, const string &weight_attr, const vector< string > &destinations, const double min_value=NegativeInfinite, const double max_value=PositiveInfinite, delphos::BlockSelection *bs=NULL, const double term_min=0.0, const double term_max=0.0)
Definition: constraint.cpp:379
A block selection precedence constraint.
Definition: constraint.h:572
const char * TypeName() const
a char string used a identifier in the XML representation of the constraint.
Definition: constraint.cpp:15
Defines a scheduling of blocks.
Definition: schedule.h:23
virtual ~AttributeAvgConstraint()
Destroys the attribute average constraint.
Definition: constraint.cpp:402
const string WeightAttribute() const
The attribute to be used as weight for the average of the attribute. The attribute to be used as weig...
Definition: constraint.cpp:404
virtual bool Check(const delphos::Schedule &sch) const
Checks if the constraint is satisfied by the schedule.
Definition: constraint.cpp:440
static const double PositiveInfinite
Useful constant for 'positive infinite'.
Definition: constraint.h:284
virtual ~TimedConstraint()
destroys a timed constraint.
Definition: constraint.cpp:77
const double GetMinValue() const
Returns the lower limit set by the constraint. Return the lower limit set by the constraint.
Definition: constraint.cpp:354
const bool IsUpperBounded() const
Checks if the upper bound limit applies or not.
Definition: constraint.cpp:167