[Avida-SVN] r1877 - branches/uml/source/main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Tue Jul 31 16:08:19 PDT 2007
Author: hjg
Date: 2007-07-31 19:08:19 -0400 (Tue, 31 Jul 2007)
New Revision: 1877
Modified:
branches/uml/source/main/cTaskLib.cc
branches/uml/source/main/cTaskLib.h
branches/uml/source/main/cUMLModel.cc
branches/uml/source/main/cUMLStateDiagram.cc
Log:
Added scenario tasks for the robot navigation UML model.
Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc 2007-07-31 20:50:25 UTC (rev 1876)
+++ branches/uml/source/main/cTaskLib.cc 2007-07-31 23:08:19 UTC (rev 1877)
@@ -414,6 +414,10 @@
NewTask(name, "Successfully created scenario 3", &cTaskLib::Task_Scenario3);
else if (name == "scene-4") //
NewTask(name, "Successfully created scenario 4", &cTaskLib::Task_Scenario4);
+ else if (name == "scene-5") //
+ NewTask(name, "Successfully created scenario 5", &cTaskLib::Task_Scenario5);
+ else if (name == "scene-6") //
+ NewTask(name, "Successfully created scenario 6", &cTaskLib::Task_Scenario6);
else if (name == "numStates") //
NewTask(name, "Successfully created 5 states", &cTaskLib::Task_NumStates);
else if (name == "numTrans") //
@@ -3106,6 +3110,67 @@
return bonus;
}
+double cTaskLib::Task_Scenario5(cTaskContext& ctx) const
+{
+ double bonus = 0.0;
+ std::deque<std::string> path1;
+ cOrganism* org = ctx.getOrganism();
+
+ // Check if this model is different than the organism's parent's model
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
+
+ // create the scenario
+ path1.push_back("[]/");
+ path1.push_back("timerEvent[]/");
+ path1.push_back("[]/^SensorInterface.readSensor()");
+ path1.push_back("sensorData[]/");
+ path1.push_back("[obstacle=1]/^WheelActuatorInterface.stop()");
+ path1.push_back("stopped[]/");
+ path1.push_back("[]/^NavigationControl.suspend()");
+
+ // check for scneario
+ bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+
+ } else {
+ bonus = org->getParentBonus("scenario5");
+ }
+
+ // Set bonus info for current model
+ org->getUMLModel()->setBonusInfo("scenario5", bonus);
+
+ return bonus;
+}
+
+double cTaskLib::Task_Scenario6(cTaskContext& ctx) const
+{
+ double bonus = 0.0;
+ std::deque<std::string> path1;
+ cOrganism* org = ctx.getOrganism();
+
+ // Check if this model is different than the organism's parent's model
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
+
+ // create the scenario
+ path1.push_back("[]/");
+ path1.push_back("timerEvent[]/");
+ path1.push_back("[]/^SensorInterface.readSensor()");
+ path1.push_back("sensorData[]/");
+ path1.push_back("[obstacle=0]/");
+
+
+ // check for scneario
+ bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+
+ } else {
+ bonus = org->getParentBonus("scenario6");
+ }
+
+ // Set bonus info for current model
+ org->getUMLModel()->setBonusInfo("scenario6", bonus);
+
+ return bonus;
+}
+
double cTaskLib::Task_NumStates(cTaskContext& ctx) const
{
double ns = (double) ctx.getOrganism()->getStateDiagram()->numStates();
Modified: branches/uml/source/main/cTaskLib.h
===================================================================
--- branches/uml/source/main/cTaskLib.h 2007-07-31 20:50:25 UTC (rev 1876)
+++ branches/uml/source/main/cTaskLib.h 2007-07-31 23:08:19 UTC (rev 1877)
@@ -291,6 +291,8 @@
double Task_Scenario2(cTaskContext& ctx) const;
double Task_Scenario3(cTaskContext& ctx) const;
double Task_Scenario4(cTaskContext& ctx) const;
+ double Task_Scenario5(cTaskContext& ctx) const;
+ double Task_Scenario6(cTaskContext& ctx) const;
double Task_NumStates(cTaskContext& ctx) const;
double Task_NumTrans(cTaskContext& ctx) const;
double Task_PropTrigger(cTaskContext& ctx) const;
Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc 2007-07-31 20:50:25 UTC (rev 1876)
+++ branches/uml/source/main/cUMLModel.cc 2007-07-31 23:08:19 UTC (rev 1877)
@@ -161,7 +161,7 @@
xmi += state_diagrams[0].getXMI("sd0");
xmi += xmi_class2;
// state_diagrams[1].printXMI();
- xmi += state_diagrams[1].getXMI("sd1");
+// xmi += state_diagrams[1].getXMI("sd1");
xmi += xmi_end;
Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc 2007-07-31 20:50:25 UTC (rev 1876)
+++ branches/uml/source/main/cUMLStateDiagram.cc 2007-07-31 23:08:19 UTC (rev 1877)
@@ -92,7 +92,8 @@
if (tg == "<null>") tg = "";
if (ta == "<null>") ta = "";
- ts = tt + tg + ta;
+ ts = tt + "[" + tg + "]" + "/" + ta;
+// std::cout << "transition named: " << ts << std::endl;
if (ts == path.front()) {
More information about the Avida-cvs
mailing list