OnlyAgentPrecedenceConstraint(const vd::DynamicsInit& mdl, const vd::InitEventList& evts) : vmd::Agent(mdl, evts), mStart(false) { vmd::Activity& a = addActivity("A", 0, devs::infinity); a.addOutputFunction( boost::bind(&OnlyAgentPrecedenceConstraint::aout, this, _1, _2, _3)); vmd::Activity& b = addActivity("B", devs::negativeInfinity, devs::infinity); b.addOutputFunction( boost::bind(&OnlyAgentPrecedenceConstraint::aout, this, _1, _2, _3)); vmd::Activity& c = addActivity("C", devs::negativeInfinity, devs::infinity); c.addOutputFunction( boost::bind(&OnlyAgentPrecedenceConstraint::aout, this, _1, _2, _3)); vmd::Activity& d = addActivity("D", devs::negativeInfinity, devs::infinity); d.addOutputFunction( boost::bind(&OnlyAgentPrecedenceConstraint::aout, this, _1, _2, _3)); addStartToStartConstraint("A", "B", 1.0, devs::infinity); addStartToStartConstraint("B", "C", 1.0, devs::infinity); addStartToStartConstraint("C", "D", 8.0, devs::infinity); }
Overlaps() { addActivity("A"); addActivity("B"); // B needs to start at begin time of A + 1.0. addStartToStartConstraint("A", "B", 1.0, 2.0); }
StartsFailed() { addActivity("A", 1.0, 2.0); addActivity("B"); // A and B need to start at the same time. addStartToStartConstraint("A", "B", 0.0, 0.0); }
Equal() { addActivity("A"); addActivity("B"); // A and B need to start and finish a the same time. addStartToStartConstraint("A", "B", 0.0, 0.0); addFinishToFinishConstraint("A", "B", 0.0, 0.0); }
During() { addActivity("A"); addActivity("B"); // B needs to start at begin time of A + 1.0. // A needs to finished at end time of B + 1.0. addStartToStartConstraint("A", "B", 1.0, 1.0); addFinishToFinishConstraint("B", "A", 1.0); }
KnowledgeBaseGraph2() { addActivity("A"); addActivity("B"); addActivity("C"); addActivity("D"); addActivity("E"); addActivity("F"); addActivity("G"); addFinishToStartConstraint("A", "B", 0.0, 1.0); addFinishToStartConstraint("B", "C", 0.0, 1.0); addFinishToStartConstraint("B", "D", 0.0, 1.0); addFinishToStartConstraint("C", "E", 0.0, 1.0); addFinishToStartConstraint("D", "F", 0.0, 1.0); addFinishToStartConstraint("E", "G", 0.0, 1.0); addFinishToStartConstraint("F", "G", 0.0, 1.0); addStartToStartConstraint("C", "D", 0.0); addFinishToFinishConstraint("E", "F", 0.0); }
/** * @brief The predecessor activity (i) must start before the successor * activity (j) can start. * @param acti The (i) activity in SiSj relationship. * @param actj The (j) activity in SiSj relationship. * @param maxtimelag time lag in SiSj relationship [0..maxtimelag]. */ void addStartToStartConstraint(const std::string& acti, const std::string& actj, const vle::devs::Time& maxtimelag) { addStartToStartConstraint(acti, actj, 0, maxtimelag); }