[Avida-SVN] r1807 - in branches/uml/source: cpu main

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Sat Jul 14 18:54:29 PDT 2007


Author: hjg
Date: 2007-07-14 21:54:29 -0400 (Sat, 14 Jul 2007)
New Revision: 1807

Modified:
   branches/uml/source/cpu/cHardwareCPU.cc
   branches/uml/source/main/cOrganism.cc
   branches/uml/source/main/cOrganism.h
   branches/uml/source/main/cTaskContext.h
   branches/uml/source/main/cTaskLib.cc
   branches/uml/source/main/cTaskLib.h
   branches/uml/source/main/cUMLModel.cc
   branches/uml/source/main/cUMLModel.h
   branches/uml/source/main/cUMLStateDiagram.cc
Log:
More merge bug fixes. 



Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2007-07-15 01:54:29 UTC (rev 1807)
@@ -3994,6 +3994,10 @@
 
 bool cHardwareCPU::Inst_HeadDivide(cAvidaContext& ctx)
 {
+
+  // modified for UML branch
+  organism->modelCheck(ctx);
+
   return Inst_HeadDivideMut(ctx, 1);
   
 }

Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cOrganism.cc	2007-07-15 01:54:29 UTC (rev 1807)
@@ -647,7 +647,7 @@
   
   // Edited for UML branch
   cTaskContext taskctx(m_interface, m_input_buf, m_output_buf, other_input_list, 
-                       other_output_list, 0, 0, 0, received_messages_point);
+                       other_output_list, 0, 0, 0, received_messages_point, this);
   bool task_completed = m_phenotype.TestOutput(ctx, taskctx, resource_count, res_change, insts_triggered);
   
   if(m_world->GetConfig().ENERGY_ENABLED.Get() && m_world->GetConfig().APPLY_ENERGY_METHOD.Get() == 1 && task_completed) {

Modified: branches/uml/source/main/cOrganism.h
===================================================================
--- branches/uml/source/main/cOrganism.h	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cOrganism.h	2007-07-15 01:54:29 UTC (rev 1807)
@@ -122,20 +122,7 @@
   int m_max_executed;      // Max number of instruction executed before death.  
   bool m_is_running;       // Does this organism have the CPU?
   bool m_is_sleeping;      // Is this organisms sleeping?
-  
-  // UML
-  int m_state_diag;			// Index of the state diagram that the organism is currently
-							// manipulating
-  int m_orig_state_index;
-  int m_dest_state_index;
-/*  int m_trans_label_index;
-  int m_trigger_index;
-  int m_guard_index;
-  int m_action_index;*/	
-  cUMLModel m_model;		
-  std::string m_parent_xmi; 
-  std::map<std::string, float> m_parent_bonus;  
-  
+    
   class cNetSupport
   {
   public:
@@ -150,6 +137,18 @@
   };
   cNetSupport* m_net;
 
+  // UML
+  int m_state_diag;			// Index of the state diagram that the organism is currently
+							// manipulating
+  int m_orig_state_index;
+  int m_dest_state_index;
+/*  int m_trans_label_index;
+  int m_trigger_index;
+  int m_guard_index;
+  int m_action_index;*/	
+  cUMLModel m_model;		
+  std::string m_parent_xmi; 
+  std::map<std::string, float> m_parent_bonus;  
 
   cOrganism(); // @not_implemented
   cOrganism(const cOrganism&); // @not_implemented

Modified: branches/uml/source/main/cTaskContext.h
===================================================================
--- branches/uml/source/main/cTaskContext.h	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskContext.h	2007-07-15 01:54:29 UTC (rev 1807)
@@ -58,24 +58,20 @@
   tBuffer<int>* m_received_messages;
   int m_logic_id;
   bool m_on_divide;
-  
-
-
+    
   // for optimize tasks actual value of function org is outputting, for all others nothing
   // implemented for now...
   double m_task_value;	
 
   cTaskEntry* m_task_entry;
   tHashTable<void*, cTaskState*>* m_task_states;
+  
+  // For UML branch 
+  cOrganism* organism;  
 
 
 public:
 
-  // For UML branch - Note: should eventually be made private.
-  bool m_task_success_complete;
-  cOrganism* organism;
-  
-
   cTaskContext(cOrgInterface* interface, const tBuffer<int>& inputs, const tBuffer<int>& outputs,
                const tList<tBuffer<int> >& other_inputs, const tList<tBuffer<int> >& other_outputs,
                bool in_net_valid, int in_net_completed, bool in_on_divide = false,
@@ -93,7 +89,7 @@
     , m_task_entry(NULL)
     , m_task_states(NULL)
 	, organism(in_org)
-	, m_task_success_complete(true)
+//	, m_task_success_complete(true)
   {
 	  m_task_value = 0;
   }
@@ -112,6 +108,11 @@
   inline void SetTaskValue(double v) { m_task_value = v; }
   inline double GetTaskValue() { return m_task_value; }
   
+  // for UML branch 
+  cOrganism* getOrganism() { return organism; } 
+//  bool getTaskSuccessComplete() { return m_task_success_complete; }
+//  void setTaskSuccessComplete( bool x ) { m_task_success_complete = x; } 
+  
   inline void SetTaskEntry(cTaskEntry* in_entry) { m_task_entry = in_entry; }
   inline cTaskEntry* GetTaskEntry() { return m_task_entry; }
   

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskLib.cc	2007-07-15 01:54:29 UTC (rev 1807)
@@ -430,8 +430,8 @@
 	  NewTask(name, "Successfully ran Spin", &cTaskLib::Task_SpinN2);	  
   else if (name == "spin-w2") // 
 	  NewTask(name, "Successfully ran Spin witness trace", &cTaskLib::Task_SpinW2);
-  else if (name == "mult_trans") // 
-	  NewTask(name, "Successfully completed multiple transitions", &cTaskLib::Task_MultTrans);
+/*  else if (name == "mult_trans") // 
+	  NewTask(name, "Successfully completed multiple transitions", &cTaskLib::Task_MultTrans);*/
 	  
 	 
 	  
@@ -2764,7 +2764,7 @@
 	double bonus = 0.0;
 	
 	//Init 	
-	ctx.m_task_success_complete = true;	
+//	ctx.m_task_success_complete = true;	
 
 //	if (ctx.organism->currTrans(1, -1, -1, -1, -1, "^TempSensor.getOpState()")) {		
 //	if (ctx.organism->currTrans(1, -1, -1, -1, -1, 1)) {		
@@ -2772,13 +2772,13 @@
 // tagaaa
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(0, 1, 1, 2, 3))
 // temp sensor
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(0, 1, 0, 0, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(0, 1, 0, 0, 0))
 	{
 	//	ctx.m_task_success_complete += 1;	
 		bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 }
 
@@ -2791,12 +2791,12 @@
 // tagaaa
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(1, 2, 0, 0, 0))
 // temp sensor
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(1, 2, 0, 0, 2))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(1, 2, 0, 0, 2))
 	{
 			bonus = 1.0;
 	}
 
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
 	return bonus;
 
 }
@@ -2810,12 +2810,12 @@
 // tagaaa
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(2, 3, 0, 3, 1))
 // temp sensor
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(2, 3, 2, 0, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(2, 3, 2, 0, 0))
 	{
 			bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 
 }
@@ -2829,12 +2829,12 @@
 // tagaaa
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(3, 4, 2, 1, 2))
 // temp sensor
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(3, 1, 0, 0, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(3, 1, 0, 0, 0))
 	{
 			bonus = 1.0;
 	}
 
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
 	return bonus;
 
 }
@@ -2845,12 +2845,12 @@
 //	if (ctx.organism->currTrans(0, -1, -1, -1, -1, "^SoftwareSensor.setTempOpState(op_state)")) {		
 	//if (ctx.organism->currTrans(0, -1, -1, -1, -1, 1)) 
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 1))
-	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(4, 0, 3, 0, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(0)->findTrans(4, 0, 3, 0, 0))
 	{		
 			bonus = 1.0;
 	}
 
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
+	//ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
 	return bonus;
 
 }
@@ -2862,12 +2862,12 @@
 //	if (ctx.organism->currTrans(1, -1, -1, -1, -1, "^TempSensor.getOpState()")) {		
 //	if (ctx.organism->currTrans(1, -1, -1, -1, -1, 1)) {		
 //	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(-1, -1, -1, -1, 1))
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(0, 4, 2, 1, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(0, 4, 2, 1, 0))
 	{
 		bonus = 1.0;
 	}
 
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 }
 
@@ -2877,12 +2877,12 @@
 //	if (ctx.organism->currTrans(0, -1, -1, "setTempOpState", -1, -1)) {		
 //	if (ctx.organism->currTrans(1, -1, -1, 1, -1, -1)) {		
 //	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(-1, -1, 1, -1, -1))
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(4, 1, 0, 1, 0))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(4, 1, 0, 1, 0))
 	{
 			bonus = 1.0;
 	}
 
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;		
 	return bonus;
 
 }
@@ -2893,12 +2893,12 @@
 //	if (ctx.organism->currTrans(0, -1, -1, "getOpState", -1, -1)) {		
 //	if (ctx.organism->currTrans(0, -1, -1, 1, -1, -1)) {		
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, 1, -1, -1))
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(1, 3, 1, 1, 1))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(1, 3, 1, 1, 1))
 	{
 			bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 
 }
@@ -2909,12 +2909,12 @@
 //	if (ctx.organism->currTrans(0, -1, -1, -1, -1, "op_state:=1")) {		
 //	if (ctx.organism->currTrans(0, -1, -1, -1, -1, 3)) {		
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 3))
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(3, 2, 2, 0, 3))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(3, 2, 2, 0, 3))
 	{
 		bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 
 }
@@ -2925,12 +2925,12 @@
 //	if (ctx.organism->currTrans(0, -1, -1, -1, -1, "^SoftwareSensor.setTempOpState(op_state)")) {		
 	//if (ctx.organism->currTrans(0, -1, -1, -1, -1, 1)) 
 //	if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 1))
-	if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(2, 4, 3, 2, 1))
+	if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(2, 4, 3, 2, 1))
 	{		
 		bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 }
 
@@ -2939,6 +2939,8 @@
 {
 	double bonus = 0.0; 
 	std::deque<std::string> path1;
+	cOrganism* org = ctx.getOrganism();
+	assert(org!=0);
 	
 	// Check if the tasks are complete so far... 
 	// This provides a basic ordering mechanism for the tasks.
@@ -2947,7 +2949,7 @@
 	}*/	
 	
 	// Check if this model is different than the organism's parent's model
-	if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+	if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
 		
 		// create the scenario
 		path1.push_back("^TempSensor.getOpState()");
@@ -2955,14 +2957,14 @@
 	
 		// check for scneario
 //		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1)) / path1.size());
-		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
+		bonus = ((org->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
 
 	} else { 
-		bonus = ctx.organism->getParentBonus("scenario1"); 
+		bonus = org->getParentBonus("scenario1"); 
 	}
 	
 	// Set bonus info for current model
-	ctx.organism->getUMLModel()->setBonusInfo("scenario1", bonus);		
+	org->getUMLModel()->setBonusInfo("scenario1", bonus);		
 		
 	/*if (bonus == 2) { 
 		ctx.m_task_success_complete  = ctx.m_task_success_complete && true;
@@ -2978,6 +2980,8 @@
 {
 	double bonus = 0.0; 
 	std::deque<std::string> path1;
+	cOrganism* org = ctx.getOrganism();
+
 	
 	// Check if the tasks are complete so far... 
 	// This provides a basic ordering mechanism for the tasks.
@@ -2986,7 +2990,7 @@
 	}*/	
 	
 	// Check if this model is different than the organism's parent's model
-	if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+	if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
 		
 		// create the scenario
 		path1.push_back("^TempSensor.getTempData()");
@@ -2994,10 +2998,10 @@
 	
 		// check for scneario
 		//bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1)) / path1.size());
-		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
+		bonus = ((org->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
 		
 	} else { 
-		bonus = ctx.organism->getParentBonus("scenario2"); 
+		bonus = org->getParentBonus("scenario2"); 
 	}
 	
 	// Set bonus info for current model
@@ -3009,7 +3013,7 @@
 	}*/
 	
 	// Set bonus info for current model
-	ctx.organism->getUMLModel()->setBonusInfo("scenario2", bonus);	
+	org->getUMLModel()->setBonusInfo("scenario2", bonus);	
 	
 	return bonus;
 }
@@ -3018,7 +3022,8 @@
 {
 	double bonus = 0.0; 
 	std::deque<std::string> path1;
-	
+	cOrganism* org = ctx.getOrganism();
+		
 	// Check if the tasks are complete so far... 
 	// This provides a basic ordering mechanism for the tasks.
 	/*if (!ctx.m_task_success_complete) {
@@ -3026,7 +3031,7 @@
 	}*/	
 	
 	// Check if this model is different than the organism's parent's model
-	if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+	if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
 		
 		// create the scenario
 		path1.push_back("getOpState");
@@ -3036,14 +3041,14 @@
 	
 		// check for scneario
 		//bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1)) / path1.size());
-		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+		bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
 
 	} else { 
-		bonus = ctx.organism->getParentBonus("scenario3"); 
+		bonus = org->getParentBonus("scenario3"); 
 	}
 	
 	// Set bonus info for current model
-	ctx.organism->getUMLModel()->setBonusInfo("scenario3", bonus);		
+	org->getUMLModel()->setBonusInfo("scenario3", bonus);		
 
 	/*int temp = path1.size();	
 		
@@ -3060,7 +3065,9 @@
 {
 	double bonus = 0.0; 
 	std::deque<std::string> path1;
+	cOrganism* org = ctx.getOrganism();
 	
+	
 	// Check if the tasks are complete so far... 
 	// This provides a basic ordering mechanism for the tasks.
 	/*if (!ctx.m_task_success_complete) {
@@ -3068,7 +3075,7 @@
 	}*/	
 	
 	// Check if this model is different than the organism's parent's model
-	if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+	if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
 		
 		// create the scenario
 		path1.push_back("getOpState");
@@ -3078,14 +3085,14 @@
 	
 		// check for scneario
 //		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1)) / path1.size());
-		bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+		bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
 
 	} else { 
-		bonus = ctx.organism->getParentBonus("scenario4"); 
+		bonus = org->getParentBonus("scenario4"); 
 	}
 	
 	// Set bonus info for current model
-	ctx.organism->getUMLModel()->setBonusInfo("scenario4", bonus);		
+	org->getUMLModel()->setBonusInfo("scenario4", bonus);		
 		
 	/*if (bonus == 3) { 
 		ctx.m_task_success_complete = ctx.m_task_success_complete && true;
@@ -3098,7 +3105,7 @@
 
 double cTaskLib::Task_NumStates(cTaskContext& ctx) const
 {
-	double ns = (double) ctx.organism->getStateDiagram()->numStates();
+	double ns = (double) ctx.getOrganism()->getStateDiagram()->numStates();
 	
 	if (ns <= 5 ) {
 		return (ns/5); 
@@ -3110,7 +3117,7 @@
 
 double cTaskLib::Task_NumTrans(cTaskContext& ctx) const
 {
-	double nt = (double) ctx.organism->getStateDiagram()->numTrans();
+	double nt = (double) ctx.getOrganism()->getStateDiagram()->numTrans();
 	
 	if (nt <= 5 ) {
 		return (nt/5); 
@@ -3122,24 +3129,26 @@
 
 double cTaskLib::Task_Hydra(cTaskContext& ctx) const
 {
-	cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 	std::string temp;
 	double bonus = 0.0;
 
 
 	temp = organism->getUMLModel()->getXMI();
 	
-	int temp1, temp2, temp3, temp4; 
-	temp1= ctx.organism->getUMLModel()->getBonusInfo("scenario1");
-	temp2= ctx.organism->getUMLModel()->getBonusInfo("scenario2");
-	temp3= ctx.organism->getUMLModel()->getBonusInfo("scenario3");
-	temp4= ctx.organism->getUMLModel()->getBonusInfo("scenario4");
+	float temp1, temp2, temp3, temp4; 
+	temp1= organism->getUMLModel()->getBonusInfo("scenario1");
+	temp2= organism->getUMLModel()->getBonusInfo("scenario2");
+	temp3= organism->getUMLModel()->getBonusInfo("scenario3");
+	temp4= organism->getUMLModel()->getBonusInfo("scenario4");
 	
-	if (!((ctx.organism->getUMLModel()->getBonusInfo("scenario1") == 2) && 
-		(ctx.organism->getUMLModel()->getBonusInfo("scenario2") == 2) && 
-		(ctx.organism->getUMLModel()->getBonusInfo("scenario3") == 3) && 
-		(ctx.organism->getUMLModel()->getBonusInfo("scenario4") == 3))) {
-		ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);
+	if (!((organism->getUMLModel()->getBonusInfo("scenario1") == 2) ||
+		(organism->getUMLModel()->getBonusInfo("scenario2") == 2) || 
+		(organism->getUMLModel()->getBonusInfo("scenario3") == 3) || 
+		(organism->getUMLModel()->getBonusInfo("scenario4") == 3))) {
+		
+		organism->getUMLModel()->setBonusInfo("hydra", bonus);
+		
 		return 0;
 	}
 	/*if (!ctx.m_task_success_complete) {
@@ -3149,11 +3158,11 @@
 	
 	m_world->GetStats().HydraAttempt();
 
-	if (ctx.organism->getParentXMI() == temp) {
+	if (organism->getParentXMI() == temp) {
 	
-		bonus = ctx.organism->getParentBonus("hydra"); 
+		bonus = organism->getParentBonus("hydra"); 
 		//if (bonus) ctx.m_task_success_complete = true;
-		ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);	
+		organism->getUMLModel()->setBonusInfo("hydra", bonus);	
 		return bonus;
 	}		
 
@@ -3220,31 +3229,31 @@
 	// if there are no errors, return 0 from hydraulic.  otherwise, return non-zero.
 	if(status != 0) {
 //		organism->setBonusInfo("hydra", 0.0); 
-		ctx.m_task_success_complete = false;	
+//		ctx.m_task_success_complete = false;	
 		bonus =  0.0;
 	} else {
 		m_world->GetStats().HydraPassed();
 //		organism->setBonusInfo("hydra", 1.0); 
-		ctx.m_task_success_complete = true;	
+//		ctx.m_task_success_complete = true;	
 		bonus = 1.0;
 	}
 	
-	ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);	
+	organism->getUMLModel()->setBonusInfo("hydra", bonus);	
 	return bonus;
 	
 }
 
 
 double cTaskLib::SpinCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
-	cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 	m_world->GetStats().SpinAttempt();
-	int status=0;
+//	int status=0;
 	
-	// break inserted on 6/24
+/*	// break inserted on 6/24
 	organism->absoluteJumpStateDiagram(1);
 	if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
 		status += 1;
-	}
+	}*/
 
 	
 	std::string cmd = "cat " + neverclaimFile + " >> tmp.pr && ./spin -a tmp.pr &> /dev/null";
@@ -3268,13 +3277,13 @@
 }
  
 double cTaskLib::SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
-	cOrganism* organism = ctx.organism;
+//	cOrganism* organism = ctx.organism;
 //	m_world->GetStats().SpinAttempt();
-	int status=0;
+//	int status=0;
 	int num_witness = 0;
 	const int max_witness = 5;
 	
-	ctx.m_task_success_complete = false;
+//	ctx.m_task_success_complete = false;
 	std::string cmd = "cp tmp.pr tmp-witness.pr" ;
 	if(system(cmd.c_str())!=0) return 0.0;
 	
@@ -3296,26 +3305,27 @@
 			
 //	m_world->GetStats().PanPassed();
 
-	if (num_witness == max_witness) { 
+	/*if (num_witness == max_witness) { 
 		ctx.m_task_success_complete = true;
 	} else { 
 		ctx.m_task_success_complete = false;	
-	}	
+	}*/	
 	return (num_witness/max_witness);
 }
 
 double cTaskLib::Task_SpinN1(cTaskContext& ctx) const {
-	//cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 	double bonus = 0.0;
 	
-	if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) { 
+	if (organism->getUMLModel()->getBonusInfo("w1") == 0)	
+	{ 
 		return bonus;
 	}
 
 	
-	if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
+	if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {
 	
-		bonus = ctx.organism->getParentBonus("spinn1"); 
+		bonus = organism->getParentBonus("spinn1"); 
 //		return bonus;
 	}	else {
 	
@@ -3327,7 +3337,7 @@
 	} else { 
 		ctx.m_task_success_complete = false;
 	}*/
-	ctx.organism->getUMLModel()->setBonusInfo("spinn1", bonus);	
+	organism->getUMLModel()->setBonusInfo("spinn1", bonus);	
 
 	return bonus;
 }
@@ -3335,16 +3345,20 @@
 
 
 double cTaskLib::Task_SpinW1(cTaskContext& ctx) const { 
-//	cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 //	double temp1 = 0.0;
 	double bonus = 0.0;
-	//if (!ctx.m_task_success_complete) return bonus;
-	if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) { 
+	
+	if	((organism->getUMLModel()->getBonusInfo("scenario1") != 2) ||
+		(organism->getUMLModel()->getBonusInfo("scenario3") != 3) || 
+		(organism->getUMLModel()->getBonusInfo("scenario4") != 3) ||
+		(organism->getUMLModel()->getBonusInfo("hydra") == 0))	
+	{ 
 		return bonus;
 	}
 	
-	if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {	
-		bonus = ctx.organism->getParentBonus("spinw1"); 
+	if ((organism->getParentXMI()) == (organism->getUMLModel()->getXMI())) {	
+		bonus = organism->getParentBonus("spinw1"); 
 //		return bonus;
 	}	else {
 	
@@ -3356,24 +3370,24 @@
 	} else { 
 		ctx.m_task_success_complete = false;
 	}*/
-	ctx.organism->getUMLModel()->setBonusInfo("spinw1", bonus);	
+	organism->getUMLModel()->setBonusInfo("spinw1", bonus);	
 
 	return bonus;
 }
 
 
 double cTaskLib::Task_SpinN2(cTaskContext& ctx) const {
-	//cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 	double bonus = 0.0;
 	
-	//if (!ctx.m_task_success_complete) return bonus;
-	if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) { 
+	if (organism->getUMLModel()->getBonusInfo("w2") == 0)	
+	{ 
 		return bonus;
 	}
 	
-	if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
+	if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {
 	
-		bonus = ctx.organism->getParentBonus("spinn2"); 
+		bonus = organism->getParentBonus("spinn2"); 
 //		return bonus;
 	}	else {
 	
@@ -3385,7 +3399,7 @@
 	} else { 
 		ctx.m_task_success_complete = false;
 	}*/
-	ctx.organism->getUMLModel()->setBonusInfo("spinn2", bonus);	
+	organism->getUMLModel()->setBonusInfo("spinn2", bonus);	
 
 	return bonus;
 }
@@ -3393,16 +3407,19 @@
 
 
 double cTaskLib::Task_SpinW2(cTaskContext& ctx) const { 
-//	cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 //	double temp1 = 0.0;
 	double bonus = 0.0;
-	//if (!ctx.m_task_success_complete) return bonus;
-	if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) { 
+
+	if	((organism->getUMLModel()->getBonusInfo("scenario2") != 2) ||
+		(organism->getUMLModel()->getBonusInfo("hydra") == 0))	
+	{ 
 		return bonus;
 	}
+
 		
-	if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {	
-		bonus = ctx.organism->getParentBonus("spinw2"); 
+	if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {	
+		bonus = organism->getParentBonus("spinw2"); 
 //		return bonus;
 	}	else {
 	
@@ -3414,26 +3431,26 @@
 	} else { 
 		ctx.m_task_success_complete = false;
 	}*/
-	ctx.organism->getUMLModel()->setBonusInfo("spinw2", bonus);	
+	organism->getUMLModel()->setBonusInfo("spinw2", bonus);	
 
 	return bonus;
 }
 
 
-double cTaskLib::Task_MultTrans(cTaskContext& ctx) const {
+/*double cTaskLib::Task_MultTrans(cTaskContext& ctx) const {
 	return (2^ctx.m_task_success_complete);
-}
+}*/
 
 
 double cTaskLib::Task_PropTrigger(cTaskContext& ctx) const {
 	// This task checks for the trigger of the property.
-	cOrganism* organism = ctx.organism;
+	cOrganism* organism = ctx.getOrganism();
 	double bonus = 0.0;
 	
 	if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
 		bonus = 1.0;
 	}
 	
-	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
+//	ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;	
 	return bonus;
 }

Modified: branches/uml/source/main/cTaskLib.h
===================================================================
--- branches/uml/source/main/cTaskLib.h	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskLib.h	2007-07-15 01:54:29 UTC (rev 1807)
@@ -301,7 +301,7 @@
   double Task_SpinN2(cTaskContext& ctx) const;
   double Task_SpinW1(cTaskContext& ctx) const;
   double Task_SpinW2(cTaskContext& ctx) const;	
-  double Task_MultTrans(cTaskContext& ctx) const;  
+//  double Task_MultTrans(cTaskContext& ctx) const;  
 };
 
 

Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLModel.cc	2007-07-15 01:54:29 UTC (rev 1807)
@@ -42,7 +42,7 @@
 cUMLModel::~cUMLModel()
 {}
 
-cUMLStateDiagram* cUMLModel::getStateDiagram (int x) 
+cUMLStateDiagram* cUMLModel::getStateDiagram (unsigned int x) 
 {
   assert(x<state_diagrams.size());
   return &state_diagrams[x];
@@ -57,7 +57,7 @@
 	int num_states;
 	int num_sd = 0;
 	int cur_sd = -1;
-	char c;
+//	char c;
 	std::string tr_l, tr_o, gu, act;
 	std::ifstream infile;
 	infile.open("seed-model.cfg");
@@ -150,7 +150,7 @@
 int cUMLModel::numStates() 
 { 
 	int temp_states = 0;
-	for (int i=0; i<state_diagrams.size(); i++) { 
+	for (unsigned int i=0; i<state_diagrams.size(); i++) { 
 		temp_states += getStateDiagram(i)->numStates();
 	}
 	return temp_states;
@@ -159,7 +159,7 @@
 int cUMLModel::numTrans()
 {
 int temp_trans = 0;
-	for (int i=0; i<state_diagrams.size(); i++) { 
+	for (unsigned int i=0; i<state_diagrams.size(); i++) { 
 		temp_trans += getStateDiagram(i)->numTrans();
 	}
 	return temp_trans;
@@ -168,7 +168,7 @@
 int cUMLModel::numTriggers()
 {
 int temp_trigger = 0;
-	for (int i=0; i<state_diagrams.size(); i++) { 
+	for (unsigned int i=0; i<state_diagrams.size(); i++) { 
 		temp_trigger += getStateDiagram(i)->numTriggers();
 	}
 	return temp_trigger;
@@ -177,7 +177,7 @@
 int cUMLModel::numGuards() 
 {
 int temp = 0;
-	for (int i=0; i<state_diagrams.size(); i++) { 
+	for (unsigned int i=0; i<state_diagrams.size(); i++) { 
 		temp += getStateDiagram(i)->numGuards();
 	}
 	return temp;
@@ -186,7 +186,7 @@
 int cUMLModel::numActions()
 {
 int temp = 0;
-	for (int i=0; i<state_diagrams.size(); i++) { 
+	for (unsigned int i=0; i<state_diagrams.size(); i++) { 
 		temp += getStateDiagram(i)->numActions();
 	}
 	return temp;

Modified: branches/uml/source/main/cUMLModel.h
===================================================================
--- branches/uml/source/main/cUMLModel.h	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLModel.h	2007-07-15 01:54:29 UTC (rev 1807)
@@ -25,11 +25,11 @@
 	void printXMI(); // create the XMI version of the model.	
 	
 	// Access the size of the state diagrams and also a specific state diagram
-	int getStateDiagramSize() { return state_diagrams.size(); } 
-	cUMLStateDiagram* getStateDiagram (int); 
+	unsigned int getStateDiagramSize() { return state_diagrams.size(); } 
+	cUMLStateDiagram* getStateDiagram (unsigned int); 
 	
 	// Set and access the bonus info for a model. Should be used by the tasks
-	bool setBonusInfo (std::string s, float f) { bonus_info[s] = f; } 
+	void setBonusInfo (std::string s, float f) { bonus_info[s] = f; } 
 	float getBonusInfo (std::string s) { return bonus_info[s]; }
 	
 	// Get the number of, well, everything

Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc	2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLStateDiagram.cc	2007-07-15 01:54:29 UTC (rev 1807)
@@ -31,10 +31,10 @@
 // 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. 
 int cUMLStateDiagram::findPath(std::deque<std::string> p) { 
-	int path_dist = 0; // the current path distance satisfied is 0. 
+	unsigned int path_dist = 0; // the current path distance satisfied is 0. 
 //	int path_total_length = p.size();
-	int path_longest_length = 0; 
-	int len = 0;
+//	int path_longest_length = 0; 
+	unsigned int len = 0;
 	int num_vert = num_vertices(sd0);
 	std::deque<std::string> p_temp = p;
 
@@ -111,6 +111,7 @@
 {
 
 	bool result = false;
+	int num_vert = (int) num_vertices(sd0); 
 	
 	if (num_edges(sd0) == 0) { 
 		return false;
@@ -135,7 +136,7 @@
 			}	
 		}
 	} else if (origin == -1 && destination != -1) { 
-		if (destination > num_vertices(sd0)) return result;
+		if (destination > num_vert) return result;
 		d_temp = vertex(destination, sd0);
 		for (tie(in_edge_start, in_edge_end) = in_edges(d_temp, sd0);
 			 in_edge_start != in_edge_end; ++in_edge_start) { 
@@ -148,7 +149,7 @@
 			}	
 		}
 	} else if (origin != -1 && destination == -1) { 
-		if (origin > num_vertices(sd0)) return result;
+		if (origin > num_vert) return result;
 		o_temp = vertex(origin, sd0);
 
 		for(tie(out_edge_start, out_edge_end) = out_edges(o_temp, sd0);
@@ -162,8 +163,8 @@
 			}	
 		}
 	} else if (origin != -1 && destination != -1) { 
-		if ((destination > num_vertices(sd0)) || 
-			(origin > num_vertices(sd0))) return result;
+		if ((destination > num_vert) || 
+			(origin > num_vert)) return result;
 		o_temp = vertex(origin, sd0);
 		d_temp = vertex(destination, sd0);
 		for(tie(out_edge_start, out_edge_end) = edge_range (o_temp, d_temp, sd0);
@@ -188,7 +189,8 @@
 bool cUMLStateDiagram::absoluteMoveIndex (T x, int &index, int amount )
 {
 
-	if (x.size() == 0 || amount > x.size()) {
+	int x_size = (int) x.size();
+	if (x_size == 0 || amount > x_size) {
 		return false;
 	}
 	
@@ -199,18 +201,20 @@
 template <typename T>
 bool cUMLStateDiagram::relativeMoveIndex (T x, int &index, int amount )
 {
-	if (x.size() == 0) {
+	int x_size = (int) x.size();
+
+	if (x_size == 0) {
 		return false;
 	}
 	
 	if (amount > 0) { 
-		index += (amount % x.size());
+		index += (amount % x_size);
 
 		// index is greater than vector
-		if (index >= x.size()) { 
-			index -= x.size();
+		if (index >= x_size) { 
+			index -= x_size;
 		} else if(index < 0) { 
-			index += x.size();
+			index += x_size;
 		}
 	}	
 		
@@ -242,9 +246,9 @@
 bool cUMLStateDiagram::absoluteJumpOriginState(int jump_amount) 
 {	
 	bool result = false;
-	int x = num_vertices(sd0);
+	int num_vert = (int) num_vertices(sd0);
 	
-	if (num_vertices(sd0) > jump_amount) {  	
+	if (num_vert > jump_amount) {  	
 		orig = vertex(jump_amount, sd0);
 		result = true;
 	}
@@ -254,7 +258,9 @@
 bool cUMLStateDiagram::absoluteJumpDestinationState(int jump_amount) 
 {	
 	bool result = false;
-	if (num_vertices(sd0) > jump_amount) {  	
+	int num_vert = (int) num_vertices(sd0);
+
+	if (num_vert > jump_amount) {  	
 		dest = vertex(jump_amount, sd0);
 		result = true;
 	}
@@ -359,6 +365,8 @@
 	// currently, not checking for dupes, since we are seeding the labels.
 	
 	transition_labels.push_back(t);
+	
+	return true;
 }
 
 




More information about the Avida-cvs mailing list