[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