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

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Mon Jun 25 06:25:22 PDT 2007


Author: hjg
Date: 2007-06-25 09:25:21 -0400 (Mon, 25 Jun 2007)
New Revision: 1711

Modified:
   branches/uml/source/cpu/cHardwareCPU.cc
   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:
Further developed witness trace support. 



Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2007-06-25 13:25:21 UTC (rev 1711)
@@ -4269,7 +4269,7 @@
 {
 	if(organism->GetCellID()==-1) return false;
 	
-	organism->modelCheck(ctx);
+	//organism->modelCheck(ctx);
 
 	return organism->addTransitionTotal();
 }

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cTaskLib.cc	2007-06-25 13:25:21 UTC (rev 1711)
@@ -407,6 +407,8 @@
 	  NewTask(name, "Successfully created 5 states", &cTaskLib::Task_NumStates);  	  
   else if (name == "numTrans") // 
 	  NewTask(name, "Successfully created 5 transitions", &cTaskLib::Task_NumTrans);
+  else if (name == "prop-tr") // 
+	  NewTask(name, "Diagram included trigger", &cTaskLib::Task_PropTrigger);	
   else if (name == "hydra") // 
 	  NewTask(name, "Successfully ran hydra", &cTaskLib::Task_Hydra);	  	
   else if (name == "spin1") // 
@@ -2964,6 +2966,14 @@
 	cOrganism* organism = ctx.organism;
 	m_world->GetStats().SpinAttempt();
 	int status=0;
+	
+	// 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";
 	if(system(cmd.c_str())!=0) return 0.0;
 	m_world->GetStats().SpinPassed();
@@ -2983,14 +2993,18 @@
 	m_world->GetStats().PanPassed();
 	return 3.0;
 }
-
+ 
 double cTaskLib::SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
 	cOrganism* organism = ctx.organism;
 //	m_world->GetStats().SpinAttempt();
 	int status=0;
 	int num_witness = 0;
-	std::string cmd = "cat " + neverclaimFile + " >> tmp.pr && ./spin -a tmp.pr &> /dev/null";
+	
+	std::string cmd = "cp tmp.pr tmp-witness.pr" ;
 	if(system(cmd.c_str())!=0) return 0.0;
+	
+	cmd = "cat " + neverclaimFile + " >> tmp-witness.pr && ./spin -a tmp-witness.pr &> /dev/null";
+	if(system(cmd.c_str())!=0) return 0.0;
 //	m_world->GetStats().SpinPassed();
 //	m_world->GetStats().PanAttempt();
 	
@@ -3011,7 +3025,6 @@
 
 double cTaskLib::Task_SpinN1(cTaskContext& ctx) const {
 	cOrganism* organism = ctx.organism;
-	std::string temp = organism->getStateDiagram()->getXMI();
 	double temp1 = 0.0;
 	
 /*	if (temp == organism->getParentXMI()) { 
@@ -3023,13 +3036,9 @@
 	
 	// check if the trigger is present
 	organism->absoluteJumpStateDiagram(1);
-	if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
-		temp += 1;
-		
-		// check property
-		if (ctx.task_success_complete) {
+	if (ctx.task_success_complete) {
+			// checkproperty
 			temp1 += SpinCoprocess(ctx, "N1");
-		} 
 	}
 	
 //	organism->setBonusInfo("spinn1", temp1); 
@@ -3040,10 +3049,8 @@
 
 double cTaskLib::Task_SpinW1(cTaskContext& ctx) const { 
 	cOrganism* organism = ctx.organism;
-	std::string temp = organism->getStateDiagram()->getXMI();
 	double temp1 = 0.0;
 	
-	
 	// check property
 	if (ctx.task_success_complete) {
 		temp1 += SpinWitnessCoprocess(ctx, "W1");
@@ -3066,3 +3073,16 @@
 			
 	return bonus;
 } 
+
+double cTaskLib::Task_PropTrigger(cTaskContext& ctx) const {
+	// This task checks for the trigger of the property.
+	cOrganism* organism = ctx.organism;
+	double bonus = 0.0;
+	
+	if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
+		bonus = 1.0;
+	}
+	
+	ctx.task_success_complete = ctx.task_success_complete && bonus;	
+	return bonus;
+}

Modified: branches/uml/source/main/cTaskLib.h
===================================================================
--- branches/uml/source/main/cTaskLib.h	2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cTaskLib.h	2007-06-25 13:25:21 UTC (rev 1711)
@@ -289,6 +289,7 @@
   double Task_Trans10(cTaskContext& ctx) const;
   double Task_NumStates(cTaskContext& ctx) const;
   double Task_NumTrans(cTaskContext& ctx) const;
+  double Task_PropTrigger(cTaskContext& ctx) const;
   double Task_Hydra(cTaskContext& ctx) const;
   double SpinCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const;
   double SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const;

Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc	2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cUMLModel.cc	2007-06-25 13:25:21 UTC (rev 1711)
@@ -158,6 +158,11 @@
   // action 2
   soft_sense->addAction("^TempSensor.getTempData()");
   
+  //seeded transitions...
+//  soft_sense->addTransitionTotal(0, 1, 0, 0, 0);
+//  soft_sense->addTransitionTotal(1, 2, 0, 0, 2);
+//  soft_sense->addTransitionTotal(2, 3, 2, 0, 0);
+//  soft_sense->addTransitionTotal(3, 1, 0, 0, 0);
   
   // Temperature Sensor
   cUMLStateDiagram* temp_sense = getStateDiagram(0);

Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc	2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cUMLStateDiagram.cc	2007-06-25 13:25:21 UTC (rev 1711)
@@ -409,10 +409,6 @@
 		return false;
 	}
 	
-	// increment number of edges for a state
-	states[getOrigStateIndex()].num_outgoing += 1;
-	states[getDestStateIndex()].num_incoming += 1;
-
 	
 	transition_label tl;
 	tl.trigger = getTriggerIndex();
@@ -426,7 +422,11 @@
 		return false;
 	}
 	
+	// increment number of edges for a state
+	states[getOrigStateIndex()].num_outgoing += 1;
+	states[getDestStateIndex()].num_incoming += 1;
 
+
 	transitions.push_back(trany);
 	
 	




More information about the Avida-cvs mailing list