[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