Overview | Group | Tree | Graph | Index | Concepts |
The class IlcTransitionTimeObjectI
defines a set of
functions that calculate the transition time between resource constraints.
To define an IlcTransitionTimeObjectI
class adapted to your
needs, you have to encode the virtual functions declared in the
IlcTransitionTimeObjectI
class.
See Also:
IlcMakeTransitionTime, IlcTransitionTimeObject
Method Summary | |
---|---|
public virtual IlcInt | getTransitionTime(const IlcResourceConstraint srct1, const IlcResourceConstraint srct2) const |
Method Detail |
---|
This virtual member function returns the transition time if the activity
of resource constraint rct1
immediately precedes the activity
of resource constraint rct2
in the sequence. By default, it
raises an error.
Example
To define an IlcTransitionTimeObjectI
subclass adapted to
your needs, you have to encode the virtual functions declared in the
IlcTransitionTimeObjectI
class. To do so, you must define a
subclass of the implementation class IlcTransitionTimeObjectI
.
In the subclass, you must then redefine the virtual member function
getTransitionTime
.
class TransTimeObject: public IlcTransitionTimeObjectI { private: IlcInt _distance; public: TransTimeObject(IlcInt distance); IlcInt getTransitionTime(const IlcResourceConstraint rct1, const IlcResourceConstraint rct2)const; }; TransTimeObject::TransTimeObject(IlcInt distance) :_distance(distance) {} IlcInt TransTimeObject::getTransitionTime (const IlcResourceConstraint, const IlcResourceConstraint) const { return _distance; } IlcTransitionTimeObject myTransTimeObject(IloSolver s, * IlcInt distance) { return new (s.getImpl()) TransTimeObject(distance); }
Now you can use this last function to define the transition time of a resource, like this:
IlcUnaryResource resource(schedule, myTransitionTimeObject(solver, 2));