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);
    }
Exemple #2
0
        Overlaps()
        {
            addActivity("A");
            addActivity("B");

            // B needs to start at begin time of A + 1.0.
            addStartToStartConstraint("A", "B", 1.0, 2.0);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
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);
        }
Exemple #6
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);
    }
Exemple #7
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); }