[Avida-SVN] r1891 - branches/uml/source/main

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Mon Aug 6 07:10:06 PDT 2007


Author: hjg
Date: 2007-08-06 10:10:06 -0400 (Mon, 06 Aug 2007)
New Revision: 1891

Modified:
   branches/uml/source/main/cStats.cc
   branches/uml/source/main/cStats.h
   branches/uml/source/main/cTaskLib.cc
   branches/uml/source/main/cUMLStateDiagram.cc
Log:
Looping scenario code

Modified: branches/uml/source/main/cStats.cc
===================================================================
--- branches/uml/source/main/cStats.cc	2007-08-02 19:18:18 UTC (rev 1890)
+++ branches/uml/source/main/cStats.cc	2007-08-06 14:10:06 UTC (rev 1891)
@@ -1008,7 +1008,7 @@
 	df.Write( GetUpdate(), "update" );
 	df.Write( av_number_of_states.Average(), "av num states");
 	df.Write( av_number_of_trans.Average(), "av num trans");
-	df.Write( av_number_of_triggers.Average(), "av num triggers");
+/*	df.Write( av_number_of_triggers.Average(), "av num triggers");
 	df.Write( av_number_of_guards.Average(), "av num guards");
 	df.Write( av_number_of_actions.Average(), "av num actions");
 	df.Write( av_number_of_state_diagrams.Average(), "av num state diagrams");
@@ -1024,8 +1024,10 @@
 	df.Write( m_N2Attempt.Sum(), "total number of spin N2 attempts" );
 	df.Write( m_N2Passed.Sum(), "total number of spin N2 passes" );
 	df.Write( m_N1andN2Passed.Sum(), "total number of spin N1 & N2 passes");
+*/	
 	df.Write( m_scenario5.Sum(), "total number of scenario 5 all transitions");
-	df.Write( m_scenario6.Sum(), "total number of scenario 5 all transitions");
+	df.Write( m_scenario5loop.Sum(), "total number of scenario 5 all transitions - might loop");	
+	df.Write( m_scenario6loop.Sum(), "total number of scenario 6 all transitions - might loop");
 
 	
 	av_number_of_states.Clear();
@@ -1034,7 +1036,6 @@
 	av_number_of_guards.Clear();
 	av_number_of_actions.Clear();
 	av_number_of_state_diagrams.Clear();
-	
 	av_number_of_trans_lab.Clear();
 
   m_hydraAttempt.Clear();
@@ -1050,7 +1051,8 @@
   m_N1andN2Passed.Clear();
   m_scenario5.Clear();
   m_scenario6.Clear();
+  m_scenario5loop.Clear();
+  m_scenario6loop.Clear();
 
-
 df.Endl();
 }

Modified: branches/uml/source/main/cStats.h
===================================================================
--- branches/uml/source/main/cStats.h	2007-08-02 19:18:18 UTC (rev 1890)
+++ branches/uml/source/main/cStats.h	2007-08-06 14:10:06 UTC (rev 1891)
@@ -271,9 +271,10 @@
   cDoubleSum m_N1andN2Passed;
   cDoubleSum m_scenario5;
   cDoubleSum m_scenario6;
+  cDoubleSum m_scenario5loop;
+  cDoubleSum m_scenario6loop;
 
 
-
   cStats(); // @not_implemented
   cStats(const cStats&); // @not_implemented
   cStats& operator=(const cStats&); // @not_implemented
@@ -655,6 +656,8 @@
   void N1andN2Passed() { m_N1andN2Passed.Add(1); } 
   void scenario5Complete() { m_scenario5.Add(1); } 
   void scenario6Complete() { m_scenario6.Add(1); } 
+  void scenario5Loop() { m_scenario5loop.Add(1); } 
+  void scenario6Loop() { m_scenario6loop.Add(1); } 
     
   
 };

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2007-08-02 19:18:18 UTC (rev 1890)
+++ branches/uml/source/main/cTaskLib.cc	2007-08-06 14:10:06 UTC (rev 1891)
@@ -3120,13 +3120,34 @@
 	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("wheelStopped[]/");
 		path1.push_back("[]/^NavigationControl.suspend()");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[]/^NavigationControl.restart()");
+// sequence is repeated to encourage looping.		
+		path1.push_back("timerEvent[]/");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[obstacle=1]/^WheelActuatorInterface.stop()");
+		path1.push_back("wheelStopped[]/");
+		path1.push_back("[]/^NavigationControl.suspend()");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[]/^NavigationControl.restart()");
+		path1.push_back("timerEvent[]/");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[obstacle=1]/^WheelActuatorInterface.stop()");
+		path1.push_back("wheelStopped[]/");
+		path1.push_back("[]/^NavigationControl.suspend()");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[]/^NavigationControl.restart()");
 		
 		// check for scneario
 		bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
@@ -3136,7 +3157,7 @@
 	}
 	
 	// Track in stats.
-	if (bonus == 7) { 
+	if (bonus == 9) { 
 		m_world->GetStats().scenario5Complete();
 	}
 	
@@ -3156,12 +3177,19 @@
 	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]/");
-		
+// sequence is repeated to encourage looping.		
+		path1.push_back("timerEvent[]/");
+		path1.push_back("[]/^SensorInterface.readSensor()");
+		path1.push_back("sensorData[]/");
+		path1.push_back("[obstacle=0]/");
+		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());
@@ -3171,9 +3199,9 @@
 	}
 	
 	// Track in stats.
-	if (bonus == 5) { 
+	if (bonus == 4) { 
 		m_world->GetStats().scenario6Complete();
-	}
+	} 
 	
 	// Set bonus info for current model
 	org->getUMLModel()->setBonusInfo("scenario6", bonus);		
@@ -3498,8 +3526,8 @@
 		(organism->getUMLModel()->getBonusInfo("spinw2") == 0)) { 
 			return bonus;
 	} */
-	if ((organism->getUMLModel()->getBonusInfo("scenario5") != 7) || 
-		(organism->getUMLModel()->getBonusInfo("scenario6") != 5)) { 
+	if ((organism->getUMLModel()->getBonusInfo("scenario5") != 6) || 
+		(organism->getUMLModel()->getBonusInfo("scenario6") != 4)) { 
 			return bonus;
 	}
 	
@@ -3512,6 +3540,8 @@
 		bonus /= mt;
 	}	
 	
+	if (bonus > 5) bonus = 5;
+	
 	return bonus;
 
 }

Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc	2007-08-02 19:18:18 UTC (rev 1890)
+++ branches/uml/source/main/cUMLStateDiagram.cc	2007-08-06 14:10:06 UTC (rev 1891)
@@ -29,10 +29,10 @@
 // This function accepts a path throught the state diagram as a deque and returns the length 
 // of the longest path segment that the diagram satisfies. 
 // The function is complicated by the fact that the longest path segment could start at the 
-// beginning, middle, or end of the path itself AND the path could begin at any reachable vertex. 
+// beginning, middle, or end of the path itself. 
+// Currently the path must begin at the 0 vertex. 
 int cUMLStateDiagram::findPath(std::deque<std::string> p) { 
 	unsigned int path_dist = 0; // the current path distance satisfied is 0. 
-//	int path_total_length = p.size();
 //	int path_longest_length = 0; 
 	unsigned int len = 0;
 	int num_vert = num_vertices(sd0);




More information about the Avida-cvs mailing list