[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