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