[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