[Avida-SVN] r1897 - branches/uml/source/main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Tue Aug 7 11:13:49 PDT 2007
Author: hjg
Date: 2007-08-07 14:13:49 -0400 (Tue, 07 Aug 2007)
New Revision: 1897
Modified:
branches/uml/source/main/cStats.h
branches/uml/source/main/cTaskLib.cc
branches/uml/source/main/cTaskLib.h
Log:
scenario 7 - robot_nav sensor scenario
Modified: branches/uml/source/main/cStats.h
===================================================================
--- branches/uml/source/main/cStats.h 2007-08-06 16:42:31 UTC (rev 1896)
+++ branches/uml/source/main/cStats.h 2007-08-07 18:13:49 UTC (rev 1897)
@@ -271,10 +271,11 @@
cDoubleSum m_N1andN2Passed;
cDoubleSum m_scenario5;
cDoubleSum m_scenario6;
+ cDoubleSum m_scenario7;
cDoubleSum m_scenario5loop;
cDoubleSum m_scenario6loop;
+ cDoubleSum m_scenario7loop;
-
cStats(); // @not_implemented
cStats(const cStats&); // @not_implemented
cStats& operator=(const cStats&); // @not_implemented
@@ -656,8 +657,10 @@
void N1andN2Passed() { m_N1andN2Passed.Add(1); }
void scenario5Complete() { m_scenario5.Add(1); }
void scenario6Complete() { m_scenario6.Add(1); }
+ void scenario7Complete() { m_scenario7.Add(1); }
void scenario5Loop() { m_scenario5loop.Add(1); }
void scenario6Loop() { m_scenario6loop.Add(1); }
+ void scenario7Loop() { m_scenario7loop.Add(1); }
};
Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc 2007-08-06 16:42:31 UTC (rev 1896)
+++ branches/uml/source/main/cTaskLib.cc 2007-08-07 18:13:49 UTC (rev 1897)
@@ -418,6 +418,8 @@
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 == "scene-7") //
+ NewTask(name, "Successfully created scenario 7", &cTaskLib::Task_Scenario7);
else if (name == "numStates") //
NewTask(name, "Successfully created 5 states", &cTaskLib::Task_NumStates);
else if (name == "numTrans") //
@@ -3213,6 +3215,43 @@
return bonus;
}
+double cTaskLib::Task_Scenario7(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("readObstacleSensors[]/");
+ path1.push_back("[]/^Environment.checkForObstacle()");
+ path1.push_back("setObstacleSensors[]/^ObstacleAvoidanceTimer.sensorData(obstacle)");
+// sequence is repeated to encourage looping.
+
+
+ // check for scneario
+ bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+
+ } else {
+ bonus = org->getParentBonus("scenario7");
+ }
+
+ // Track in stats.
+ if (bonus >= 3) {
+ m_world->GetStats().scenario7Complete();
+ } else if (bonus >= 6) {
+ m_world->GetStats().scenario7Loop();
+ }
+
+ // Set bonus info for current model
+ org->getUMLModel()->setBonusInfo("scenario7", 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-08-06 16:42:31 UTC (rev 1896)
+++ branches/uml/source/main/cTaskLib.h 2007-08-07 18:13:49 UTC (rev 1897)
@@ -293,6 +293,7 @@
double Task_Scenario4(cTaskContext& ctx) const;
double Task_Scenario5(cTaskContext& ctx) const;
double Task_Scenario6(cTaskContext& ctx) const;
+ double Task_Scenario7(cTaskContext& ctx) const;
double Task_NumStates(cTaskContext& ctx) const;
double Task_NumTrans(cTaskContext& ctx) const;
double Task_PropTrigger(cTaskContext& ctx) const;
More information about the Avida-cvs
mailing list