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

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Wed Mar 26 11:24:13 PDT 2008


Author: hjg
Date: 2008-03-26 14:24:12 -0400 (Wed, 26 Mar 2008)
New Revision: 2499

Modified:
   branches/uml/source/cpu/cHardwareCPU.cc
   branches/uml/source/main/cMDEPropertyGenerator.cc
   branches/uml/source/main/cStats.cc
   branches/uml/source/main/cStats.h
   branches/uml/source/main/cUMLModel.cc
Log:
added stats for average organism properties and propositions.

Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2008-03-25 20:25:08 UTC (rev 2498)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2008-03-26 18:24:12 UTC (rev 2499)
@@ -4574,293 +4574,7 @@
 }
 
 //// UML Element Construction ////
-/*
-bool cHardwareCPU::Inst_Next(cAvidaContext& ctx) 
-{
-	if(organism->GetCellID()==-1) return false;
 
-	// by default, this instruction increments the triggers vector index
-	
-	int reg_used = FindModifiedRegister(REG_AX);
-	
-	int jump_amount = 1;
-	
-	switch (reg_used){
-	case 0:
-		// decrement the triggers vector index
-		organism->relativeJumpTrigger(jump_amount);
-		break;
-	case 1:
-		// decrement the guards vector index
-		organism->relativeJumpGuard(jump_amount);
-		break;
-	case 2:
-		// decrement the actions vector index
-		organism->relativeJumpAction(jump_amount);
-		break;
-	case 3:
-		// decrement the transition labels index
-		organism->relativeJumpTransitionLabel(jump_amount);
-		break;	
-	case 4:
-		// decrement the original state index
-		organism->relativeJumpOriginState(jump_amount);
-		break;
-	case 5:
-		// decement the destination state index
-		organism->relativeJumpDestinationState(jump_amount);
-		break;
-	case 6: 
-		// jump the state diagram index
-		organism->relativeJumpStateDiagram(jump_amount);
-		break;		
-	}
-	return true;
-}
- 
-bool cHardwareCPU::Inst_Prev(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-
-	int reg_used = FindModifiedRegister(REG_AX);
-	
-	int jump_amount = -1;
-		
-	switch (reg_used){
-	case 0:
-		// decrement the triggers vector index
-		organism->relativeJumpTrigger(jump_amount);
-		break;
-	case 1:
-		// decrement the guards vector index
-		organism->relativeJumpGuard(jump_amount);
-		break;
-	case 2:
-		// decrement the actions vector index
-		organism->relativeJumpAction(jump_amount);
-		break;
-	case 3:
-		// decrement the transition labels index
-		organism->relativeJumpTransitionLabel(jump_amount);
-		break;	
-	case 4:
-		// decrement the original state index
-		organism->relativeJumpOriginState(jump_amount);
-		break;
-	case 5:
-		// decement the destination state index
-		organism->relativeJumpDestinationState(jump_amount);
-		break;
-	case 6: 
-		// jump the state diagram index
-		organism->relativeJumpStateDiagram(jump_amount);
-		break;	
-	}
-	return true;
-}
-
-bool cHardwareCPU::Inst_JumpIndex(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-
-	const int reg_used = FindModifiedRegister(REG_AX);
-	const int reg_jump = FindModifiedRegister(REG_BX);
-	int jump_amount = GetRegister(reg_jump);
-
-	
-	switch (reg_used){
-	case 0:
-		// decrement the triggers vector index
-		organism->absoluteJumpTrigger(jump_amount);
-		break;
-	case 1:
-		// decrement the guards vector index
-		organism->absoluteJumpGuard(jump_amount);
-		break;
-	case 2:
-		// decrement the actions vector index
-		organism->absoluteJumpAction(jump_amount);
-		break;
-	case 3:
-		// decrement the transition labels index
-		organism->absoluteJumpTransitionLabel(jump_amount);
-		break;	
-	case 4:
-		// decrement the original state index
-		organism->absoluteJumpOriginState(jump_amount);
-		break;
-	case 5:
-		// decement the destination state index
-		organism->absoluteJumpDestinationState(jump_amount);
-		break;
-	case 6: 
-		// jump the state diagram index
-		organism->absoluteJumpStateDiagram(jump_amount);
-		break;	
-	}
-	return true;
-}
-
-bool cHardwareCPU::Inst_JumpDist(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-	
-	const int reg_used = FindModifiedRegister(REG_AX);
-	ReadLabel();
-	int jump_amount = GetLabel().AsInt(NUM_NOPS);
-	//const int reg_jump = FindModifiedRegister(REG_BX);
-	//int jump_amount = GetRegister(reg_jump);
-
-	
-	switch (reg_used){
-	case 0:
-		// jump the triggers vector index
-		organism->absoluteJumpTrigger(jump_amount);
-		break;
-	case 1:
-		// jump the guards vector index
-		organism->absoluteJumpGuard(jump_amount);
-		break;
-	case 2:
-		// jump the actions vector index
-		organism->absoluteJumpAction(jump_amount);
-		break;
-	case 3:
-		// jump the transition labels index
-		organism->absoluteJumpTransitionLabel(jump_amount);
-		break;	
-	case 4:
-		// jump the original state index
-		organism->absoluteJumpOriginState(jump_amount);
-		break;
-	case 5:
-		// jump the destination state index
-		organism->absoluteJumpDestinationState(jump_amount);
-		break;
-	case 6: 
-		// jump the state diagram index
-		organism->absoluteJumpStateDiagram(jump_amount);
-		break;	
-	}
-	return true;
-}
-*/
-
-/*
-
-bool cHardwareCPU::Inst_First(cAvidaContext& ctx) 
-{
-	if(organism->GetCellID()==-1) return false;
-	
-	// by default, this instruction increments the triggers vector index
-	
-	int reg_used = FindModifiedRegister(REG_AX);
-	
-//	int jump_amount = 1;
-	
-	switch (reg_used){
-	case 0:
-		// decrement the triggers vector index
-		organism->getStateDiagram()->firstTrigger();
-		break;
-	case 1:
-		// decrement the guards vector index
-		organism->getStateDiagram()->firstGuard();
-		break;
-	case 2:
-		// decrement the actions vector index
-		organism->getStateDiagram()->firstAction();
-		break;
-	case 3:
-		// decrement the transition labels index
-		organism->getStateDiagram()->firstTransitionLabel();
-		break;	
-	case 4:
-		// decrement the original state index
-		organism->getStateDiagram()->firstOriginState();
-		break;
-	case 5:
-		// decement the destination state index
-		organism->getStateDiagram()->firstDestinationState();
-		break;
-	case 6: 
-		// decrement the state diagram index
-		organism->firstStateDiagram();
-		
-	}
-	return true;
-}
-
-bool cHardwareCPU::Inst_Last(cAvidaContext& ctx) 
-{
-	if(organism->GetCellID()==-1) return false;
-	
-	// by default, this instruction increments the triggers vector index
-	
-	int reg_used = FindModifiedRegister(REG_AX);
-	
-//	int jump_amount = 1;
-	
-	switch (reg_used){
-	case 0:
-		// decrement the triggers vector index
-		organism->getStateDiagram()->lastTrigger();
-		break;
-	case 1:
-		// decrement the guards vector index
-		organism->getStateDiagram()->lastGuard();
-		break;
-	case 2:
-		// decrement the actions vector index
-		organism->getStateDiagram()->lastAction();
-		break;
-	case 3:
-		// decrement the transition labels index
-		organism->getStateDiagram()->lastTransitionLabel();
-		break;	
-	case 4:
-		// decrement the original state index
-		organism->getStateDiagram()->lastOriginState();
-		break;
-	case 5:
-		// decement the destination state index
-		organism->getStateDiagram()->lastDestinationState();
-		break;
-	case 6: 
-		// decrement the state diagram index`
-		organism->lastStateDiagram(); 
-	}
-	return true;
-}
-
-
-bool cHardwareCPU::Inst_AddTransitionLabel(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-
-	return organism->getStateDiagram()->addTransitionLabel();
-//	return true;
-}
-*/
-
-/*
-bool cHardwareCPU::Inst_AddState(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-
-	return organism->getStateDiagram()->addState();
-}
-
-
-
-bool cHardwareCPU::Inst_AddTransition(cAvidaContext& ctx)
-{
-	if(organism->GetCellID()==-1) return false;
-
-	return organism->getStateDiagram()->addTransition();
-}
-*/
-
 bool cHardwareCPU::Inst_AddTransitionFromLabel(cAvidaContext& ctx)
 {
 	if(organism->GetCellID()==-1) return false;
@@ -5120,6 +4834,8 @@
 	
 	val = pop_pg->addAbsenceProperty(pg->getP());
 	pg->addPropertyReward(val);
+	
+	if (val) m_world->GetStats().newProperty();
 
 	return val;
 } 
@@ -5143,7 +4859,9 @@
 	
 	val = pop_pg->addUniversalProperty(pg->getP());
 	pg->addPropertyReward(val);
+	if (val) m_world->GetStats().newProperty();
 
+
 	return val;
 } 
 
@@ -5165,6 +4883,8 @@
 	
 	val = pop_pg->addExistenceProperty(pg->getP());
 	pg->addPropertyReward(val);
+	if (val) m_world->GetStats().newProperty();
+
 		
 	return val;
 } 
@@ -5190,6 +4910,7 @@
 	
 	val = pop_pg->addPrecedenceProperty(pg->getP(), pg->getQ());
 	pg->addPropertyReward(val);
+	if (val) m_world->GetStats().newProperty();
 	
 	return val;
 } 
@@ -5214,6 +4935,7 @@
 	*/
 	val = pop_pg->addResponseProperty(pg->getP(), pg->getQ());
 	pg->addPropertyReward(val);
+	if (val) m_world->GetStats().newProperty();
 	
 	return val;
 } 
@@ -5292,12 +5014,16 @@
 
 bool cHardwareCPU::Inst_ANDExpressions(cAvidaContext& ctx)
 {	
-	return (organism->getUMLModel()->getPropertyGenerator()->ANDExpressions());
+	bool val = organism->getUMLModel()->getPropertyGenerator()->ANDExpressions();
+	if (val) m_world->GetStats().newProposition();	
+	return val;
 }
 
 bool cHardwareCPU::Inst_ORExpressions(cAvidaContext& ctx)
 {
-	return (organism->getUMLModel()->getPropertyGenerator()->ORExpressions());
+	bool val = organism->getUMLModel()->getPropertyGenerator()->ORExpressions();
+	if (val) m_world->GetStats().newProposition();	
+	return val;
 }
   
   

Modified: branches/uml/source/main/cMDEPropertyGenerator.cc
===================================================================
--- branches/uml/source/main/cMDEPropertyGenerator.cc	2008-03-25 20:25:08 UTC (rev 2498)
+++ branches/uml/source/main/cMDEPropertyGenerator.cc	2008-03-26 18:24:12 UTC (rev 2499)
@@ -172,7 +172,11 @@
 	}
 	
 	if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
-	if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+	if ((m_related_class_mode == 3) && (related == 0)) { 
+		val =0; 
+		e.setSuppressed(true); 
+		m_suppressed++;
+	}
 	
 	return val;
 }
@@ -264,7 +268,11 @@
 	
 	
 	if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
-	if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+	if ((m_related_class_mode == 3) && (related == 0)) { 
+		val =0; 
+		e.setSuppressed(true); 
+		m_suppressed++;
+	}
 	
 	return val;
 	
@@ -348,7 +356,11 @@
 	}
 	
 	if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
-	if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+	if ((m_related_class_mode == 3) && (related == 0)) { 
+		val =0; 
+		e.setSuppressed(true); 
+		m_suppressed++;
+	}
 	
 	return val;
 	
@@ -397,7 +409,11 @@
 	}
 	
 	if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
-	if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+	if ((m_related_class_mode == 3) && (related == 0)) { 
+		val =0; 
+		e.setSuppressed(true); 
+		m_suppressed++;
+	}
 
 	return val;
 }
@@ -446,7 +462,11 @@
 	}
 	
 	if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
-	if ((m_related_class_mode == 3) && (related == 0)) { val = 0; }
+	if ((m_related_class_mode == 3) && (related == 0)) { 
+		val = 0; 
+		e.setSuppressed(true); 
+		m_suppressed++;
+	}
 
 	return val;	
 	
@@ -675,12 +695,12 @@
 {
 	float total =0;
 	// check if the expression uses the relevant attributes or operations
-	for (int i=0; i<relevant_attributes.size(); i++) {
+	for (unsigned int i=0; i<relevant_attributes.size(); i++) {
 		total += e->usesAttribute(relevant_attributes[i]);
 //		std::cout << "relevant at " << relevant_attributes[i] << " " << total << std::endl;
 	}
 	
-	for (int i=0; i<relevant_operations.size(); i++) {
+	for (unsigned int i=0; i<relevant_operations.size(); i++) {
 		total += e->usesOperation(relevant_operations[i]);
 //		std::cout << "relevant op " << relevant_operations[i] << " " << total << std::endl;
 

Modified: branches/uml/source/main/cStats.cc
===================================================================
--- branches/uml/source/main/cStats.cc	2008-03-25 20:25:08 UTC (rev 2498)
+++ branches/uml/source/main/cStats.cc	2008-03-26 18:24:12 UTC (rev 2499)
@@ -1036,6 +1036,8 @@
 	df.WriteTimeStamp();
 	df.Write( GetUpdate(), "update" );
 	df.Write(sum_merit.Average(), "Merit");	
+	df.Write( m_new_propositions.Average(), "average number of propositions created per organism");
+	df.Write( m_properties.Average(), "average number of successful properties per organism");
 	df.Write( m_propertySuccess, "total number of properties that passed" );
 	df.Write( m_propertyFailure, "total number of properties that failed" );
 	df.Write( m_suppressed, "total number of suppressed properties" );

Modified: branches/uml/source/main/cStats.h
===================================================================
--- branches/uml/source/main/cStats.h	2008-03-25 20:25:08 UTC (rev 2498)
+++ branches/uml/source/main/cStats.h	2008-03-26 18:24:12 UTC (rev 2499)
@@ -290,6 +290,8 @@
   int m_respPropertyFailure; 
   int m_respPropertyTotal; 
   int m_suppressed;
+  cDoubleSum m_new_propositions; 
+  cDoubleSum m_properties;
     
 
   
@@ -687,6 +689,8 @@
   void N1andN2Passed() { m_N1andN2Passed.Add(1); } 
   double getN2Passed() { return m_N2Passed.Count(); }
   double getN1Passed() { return m_N1Passed.Count(); }
+  void newProposition() { m_new_propositions.Add(1); }
+  void newProperty() { m_properties.Add(1); }
 
   
   void propSuccess(int x) {m_propertySuccess = x; }

Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc	2008-03-25 20:25:08 UTC (rev 2498)
+++ branches/uml/source/main/cUMLModel.cc	2008-03-26 18:24:12 UTC (rev 2499)
@@ -616,7 +616,7 @@
 			a1 = new cMDEExpressionAttribute(a.attribute_name, at_type, class_name);
 			
 
-			if ((at_type == "int") || (at_type == "integer")) {
+			if ((at_type == "int") || (at_type == "integer") || (at_type == "short") ) {
 				
 				// For each attribute value
 				for (unsigned int k=0; k<a.attribute_values.size(); k++){




More information about the Avida-cvs mailing list