<< Prev | - Up - | Next >> |
Instances of classes derived from OZ_CtWakeUp
indicate to the runtime system which wake-up event occurred. Therefore, member functions to initialize an RIWakeUp
instance according to a possible event are defined. They will be used to determine the wake-up event of a propagator upon a certain parameter when imposing a propagator(see Section ``Extending OZ_Expect
'').
class RIWakeUp : public OZ_CtWakeUp {
public:
static OZ_CtWakeUp wakeupMin(void) {
OZ_CtWakeUp ri_wakeup_min;
ri_wakeup_min.init();
ri_wakeup_min.setWakeUp(0);
return ri_wakeup_min;
}
static OZ_CtWakeUp wakeupMax(void) {
OZ_CtWakeUp ri_wakeup_max;
ri_wakeup_max.init();
ri_wakeup_max.setWakeUp(1);
return ri_wakeup_max;
}
static OZ_CtWakeUp wakeupMinMax(void) {
OZ_CtWakeUp ri_wakeup_minmax;
ri_wakeup_minmax.init();
ri_wakeup_minmax.setWakeUp(0);
ri_wakeup_minmax.setWakeUp(1);
return ri_wakeup_minmax;
}
};
An instance of RIWakeUp
is computed from an instance of RI
and a profile (stored before the constraint has be modified) by
OZ_CtWakeUp RI::getWakeUpDescriptor(OZ_CtProfile * p)
(see Section ``The Actual Real-Interval Constraint''). The definition of the profile class RIProfile
for real-intervals is given below.
class RIProfile : public OZ_CtProfile {
private:
ri_float _l, _u;
public:
RIProfile(void) {}
virtual void init(OZ_Ct * c) {
RI * ri = (RI *) c;
_l = ri->_l;
_u = ri->_u;
}
};
The function RIProfile::init(OZ_Ct * c)
takes a snapshot of c
to enable the detection of the abovementioned wake-up events, i. e., modified lower/upper bound resp. both.
<< Prev | - Up - | Next >> |