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

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Sat Aug 25 10:25:58 PDT 2007


Author: dknoester
Date: 2007-08-25 13:25:58 -0400 (Sat, 25 Aug 2007)
New Revision: 2009

Modified:
   branches/uml/source/main/cTaskLib.cc
Log:
Ratiometric task quality for non-determinism.

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2007-08-25 17:09:06 UTC (rev 2008)
+++ branches/uml/source/main/cTaskLib.cc	2007-08-25 17:25:58 UTC (rev 2009)
@@ -3307,19 +3307,19 @@
 
 double cTaskLib::Task_Nondeterminism(cTaskContext& ctx) const {
 	cOrganism* organism = ctx.getOrganism();
-	unsigned int bonus = 0;
-
+	double nd_penalty=0;
+	double max_bonus=0;
 	
-	for(unsigned int i=0; i<organism->getUMLModel()->getStateDiagramSize(); ++i) {
+	for(unsigned int i=0; i<organism->getUMLModel()->getStateDiagramSize(); ++i, ++max_bonus) {
 		cUMLStateDiagram* sd=organism->getUMLModel()->getStateDiagram(i);
-		if(sd->numTrans() > 0) {
-			bonus += sd->getNumberOfNonDeterministicStates();
+		if(sd->numStates() > 0) {
+			nd_penalty += sd->getNumberOfNonDeterministicStates() / sd->numStates();
 		}
 	}
 	
-	organism->getUMLModel()->setBonusInfo("isDeterministic", !bonus);	
+	organism->getUMLModel()->setBonusInfo("isDeterministic", max_bonus - nd_penalty);	
 
-	return !bonus;
+	return max_bonus - nd_penalty;
 }
 
 // This task will be used to see if an organism meets the criteria for 




More information about the Avida-cvs mailing list