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

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Mon Jan 21 13:09:09 PST 2008


Author: hjg
Date: 2008-01-21 16:09:09 -0500 (Mon, 21 Jan 2008)
New Revision: 2265

Modified:
   branches/uml/source/cpu/cHardwareCPU.cc
   branches/uml/source/main/cMDEAbsenceProperty.cc
   branches/uml/source/main/cMDEExistenceProperty.cc
   branches/uml/source/main/cMDEProperty.cc
   branches/uml/source/main/cMDEUniversalProperty.cc
   branches/uml/source/main/cOrganism.cc
   branches/uml/source/main/cStats.cc
   branches/uml/source/main/cStats.h
   branches/uml/source/main/cTaskLib.cc
   branches/uml/source/main/cUMLModel.cc
   branches/uml/source/main/cUMLModel.h
Log:
added property stats tracking.

Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/cpu/cHardwareCPU.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -5078,7 +5078,7 @@
 
 bool cHardwareCPU::Inst_AbsenceProperty(cAvidaContext& ctx)
 { 
-	bool val = 0;
+	float val = 0;
 	// Call a function on the model to create this property.
 	// Currently it just uses p
 	std::string s = organism->getUMLModel()->getP();
@@ -5089,12 +5089,15 @@
 //		val = organism->getUMLModel()->addAbsenceProperty(s);
 		val = m_world->GetPopulation().getUMLModel()->addAbsenceProperty(s);
 	}
+	
+	organism->getUMLModel()->addPropertyReward(val);
+
 	return val;
 } 
 
 bool cHardwareCPU::Inst_UniversialityProperty(cAvidaContext& ctx) 
 { 
-	bool val = 0;
+	float val = 0;
 	// Call a function on the model to create this property.
 	std::string s = organism->getUMLModel()->getP();
 	
@@ -5104,12 +5107,15 @@
 //		val = organism->getUMLModel()->addUniversalProperty(s);
 		val = m_world->GetPopulation().getUMLModel()->addUniversalProperty(s);
 	}
+	
+	organism->getUMLModel()->addPropertyReward(val);
+
 	return val;
 } 
 
 bool cHardwareCPU::Inst_ExistenceProperty(cAvidaContext& ctx)
 {
-	bool val = 0;
+	float val = 0;
 	// Call a function on the model to create this property.
 	std::string s = organism->getUMLModel()->getP();
 	
@@ -5119,6 +5125,9 @@
 //		val = organism->getUMLModel()->addExistenceProperty(s);
 		val = m_world->GetPopulation().getUMLModel()->addExistenceProperty(s);
 	}
+	
+	organism->getUMLModel()->addPropertyReward(val);
+		
 	return val;
 } 
 
@@ -5126,22 +5135,22 @@
 {
 	ReadLabel();
 	int jump_amount = GetLabel().AsInt(NUM_NOPS);
-	return (m_world->GetPopulation().getUMLModel()->relativeMoveExpressionP(jump_amount));
+	return (organism->getUMLModel()->relativeMoveExpressionP(jump_amount));
 }
 
 bool cHardwareCPU::Inst_NextExpressionP(cAvidaContext& ctx)
 {
-	return (m_world->GetPopulation().getUMLModel()->relativeMoveExpressionP(1));
+	return (organism->getUMLModel()->relativeMoveExpressionP(1));
 }
 
 bool cHardwareCPU::Inst_PrevExpressionP(cAvidaContext& ctx)
 {
-	return (m_world->GetPopulation().getUMLModel()->relativeMoveExpressionP(-1));
+	return (organism->getUMLModel()->relativeMoveExpressionP(-1));
 }
 
 bool cHardwareCPU::Inst_AbsoluteMoveExpressionP(cAvidaContext& ctx)
 {
 	ReadLabel();
 	int jump_amount = GetLabel().AsInt(NUM_NOPS);
-	return (m_world->GetPopulation().getUMLModel()->absoluteMoveExpressionP(jump_amount));
+	return (organism->getUMLModel()->absoluteMoveExpressionP(jump_amount));
 }

Modified: branches/uml/source/main/cMDEAbsenceProperty.cc
===================================================================
--- branches/uml/source/main/cMDEAbsenceProperty.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cMDEAbsenceProperty.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -12,7 +12,8 @@
 void cMDEAbsenceProperty::print() {
 	
 	std::ofstream outfile;
-	outfile.open (_name.c_str());
+//	outfile.open (_name.c_str());
+	outfile.open ("property");
 	assert(outfile.is_open());
 	
 	outfile << "#define p (" << _expr_p << ")" << std::endl;
@@ -32,10 +33,9 @@
 
 void cMDEAbsenceProperty::printWitness() {
 	
-	
-	
 	std::ofstream outfile;
-	std::string file_name= "w" + _name;
+//	std::string file_name= "w" + _name;
+	std::string file_name = "witness-property";
 	outfile.open (file_name.c_str());
 	assert(outfile.is_open());
 	
@@ -72,8 +72,8 @@
 	
 		// if this property passed, then save it to a file
 	if (verify_reward) { 
-	//	cmd = "cat " + _name + " >> " + work_prop;
-	//	system(cmd.c_str());
+		cmd = "cat property >> " + work_prop;
+		system(cmd.c_str());
 	}
 	
 	_reward = verify_reward;

Modified: branches/uml/source/main/cMDEExistenceProperty.cc
===================================================================
--- branches/uml/source/main/cMDEExistenceProperty.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cMDEExistenceProperty.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -12,7 +12,8 @@
 void cMDEExistenceProperty::print() {
 	
 	std::ofstream outfile;
-	outfile.open (_name.c_str());
+//	outfile.open (_name.c_str());
+	outfile.open ("property");
 	assert(outfile.is_open());
 	
 	outfile << "/* Existence property " << _expr_p << "*/" << std::endl;
@@ -30,7 +31,7 @@
 void cMDEExistenceProperty::printWitness() {
 	
 	std::ofstream outfile;
-	std::string file_name = "w" + _name;
+	std::string file_name = "witness-property";
 	outfile.open (file_name.c_str());
 	assert(outfile.is_open());
 	

Modified: branches/uml/source/main/cMDEProperty.cc
===================================================================
--- branches/uml/source/main/cMDEProperty.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cMDEProperty.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -20,13 +20,15 @@
 
 float cMDEProperty::numWitnesses() {
 	
-	std::string file_name = "tmp-witness" + _name + ".pr";
+//	std::string file_name = "tmp-witness" + _name + ".pr";
+	std::string file_name = "tmp-witness.pr";
 	std::string cmd = "cp tmp.pr "+ file_name;
 	int num_witness = 0;
 	
 	if(system(cmd.c_str())!=0) return 0.0;
 	
-	cmd = "cat w" + _name + " >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
+//	cmd = "cat w" + _name + " >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
+	cmd = "cat witness-property >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
 	if(system(cmd.c_str())!=0) return 0.0;
 	
 	if(system("/usr/bin/gcc -DMEMLIM=512 pan.c -o pan &> /dev/null")!=0) return 0.0;
@@ -41,12 +43,14 @@
 
 
 float cMDEProperty::verify() { 
-	std::string file_name = "tmp-" + _name + ".pr";
+//	std::string file_name = "tmp-" + _name + ".pr";
+	std::string file_name = "tmp-property.pr";
 	std::string cmd = "cp tmp.pr "+ file_name;
 	if(system(cmd.c_str())!=0) return 0.0;
 	
 	
-	cmd = "cat " + _name + " >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
+//	cmd = "cat " + _name + " >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
+	cmd = "cat property >> " + file_name + " && ./spin -a " +  file_name + " &> /dev/null";
 	if(system(cmd.c_str())!=0) return 0.0;
 	
 	if(system("/usr/bin/gcc -DMEMLIM=512 pan.c -o pan &> /dev/null")!=0) return 0.0;
@@ -78,7 +82,8 @@
 	
 	// if this property passed, then save it to a file
 	if (verify_reward) { 
-		cmd = "cat " + _name + " >> " + work_prop;
+//		cmd = "cat " + _name + " >> " + work_prop;
+		cmd = "cat property >> " + work_prop;
 		system(cmd.c_str());
 	}
 	

Modified: branches/uml/source/main/cMDEUniversalProperty.cc
===================================================================
--- branches/uml/source/main/cMDEUniversalProperty.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cMDEUniversalProperty.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -12,7 +12,8 @@
 void cMDEUniversalProperty::print() {
 	
 	std::ofstream outfile;
-	outfile.open (_name.c_str());
+//	outfile.open (_name.c_str());
+	outfile.open ("property");
 	assert(outfile.is_open());
 	
 	outfile << "/* Universal property " << _expr_p << "*/" << std::endl;
@@ -34,7 +35,8 @@
 void cMDEUniversalProperty::printWitness() {
 	
 	std::ofstream outfile;
-	std::string file_name = "w" + _name;
+//	std::string file_name = "w" + _name;
+	std::string file_name = "witness-property";
 	outfile.open (file_name.c_str());
 	assert(outfile.is_open());
 	
@@ -67,7 +69,8 @@
 	// if this property passed, then save it to a file
 	if (verify_reward) { 
 //		cmd = "cat " + _name + " >> " + work_prop;
-//		system(cmd.c_str());
+		cmd = "cat property >> " + work_prop;
+		system(cmd.c_str());
 	}
 	
 	_reward = verify_reward;

Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cOrganism.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -672,12 +672,27 @@
 	m_world->GetStats().addActions(m_model.numActions());
 	m_world->GetStats().addStateDiagrams(m_model.numSDs());
 	
-	
 	if ((m_model.getBonusInfo("spinn1") > 0) && 
 		(m_model.getBonusInfo("spinn2") > 0)) { 
 		m_world->GetStats().N1andN2Passed();
 	}
 	
+	cUMLModel* pop_model = m_world->GetPopulation().getUMLModel();
+	m_world->GetStats().propSuccess(pop_model->numSuccess());
+	m_world->GetStats().propFailure(pop_model->numFailure());
+	m_world->GetStats().propTotal(pop_model->numTotalProperty());
+	m_world->GetStats().absPropSuccess(pop_model->numAbsencePropertySuccess());
+	m_world->GetStats().absPropFailure(pop_model->numAbsencePropertyFailure());
+	m_world->GetStats().absPropTotal(pop_model->numAbsencePropertyTotal());
+	m_world->GetStats().uniPropSuccess(pop_model->numUniversalPropertySuccess());
+	m_world->GetStats().uniPropFailure(pop_model->numUniversalPropertyFailure());
+	m_world->GetStats().uniPropTotal(pop_model->numUniversalPropertyTotal());
+	m_world->GetStats().existPropSuccess(pop_model->numExistencePropertySuccess());
+	m_world->GetStats().existPropFailure(pop_model->numExistencePropertyFailure());
+	m_world->GetStats().existPropTotal(pop_model->numExistencePropertyTotal());
+		
+	m_model.resetPropertyReward();
+	
 
 	
 //	m_world->GetStats().addTransLabel(transition_labels.size());

Modified: branches/uml/source/main/cStats.cc
===================================================================
--- branches/uml/source/main/cStats.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cStats.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -1010,9 +1010,22 @@
 
 void cStats::PrintPropertyData(const cString& filename)
 {
+	
 	cDataFile& df = m_world->GetDataFile(filename);
-	df.Write( m_propertySuccess.Sum(), "total number of properties that passed" );
-	df.Write( m_propertyFailure.Sum(), "total number of properties that failed" );
+	df.Write( m_propertySuccess, "total number of properties that passed" );
+	df.Write( m_propertyFailure, "total number of properties that failed" );
+	df.Write( m_propertyTotal, "total number of properties" );
+	df.Write( m_absPropertySuccess, "absence properties that passed" );
+	df.Write( m_absPropertyFailure, "absence properties that failed" );
+	df.Write( m_absPropertyTotal, "total number of absence properties" );
+    df.Write( m_uniPropertySuccess, "universal properties that passed" );
+	df.Write( m_uniPropertyFailure, "universal properties that failed" );
+	df.Write( m_uniPropertyTotal, "total number of universal properties" );
+	df.Write( m_existPropertySuccess, "existence properties that passed" );
+	df.Write( m_existPropertyFailure, "existence properties that failed" );
+	df.Write( m_existPropertyTotal, "total number of existence properties" ); 
+	
+
 	df.Endl();
 
 }

Modified: branches/uml/source/main/cStats.h
===================================================================
--- branches/uml/source/main/cStats.h	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cStats.h	2008-01-21 21:09:09 UTC (rev 2265)
@@ -271,8 +271,18 @@
   cDoubleSum m_W2Attempt;
   cDoubleSum m_W2Passed;
   cDoubleSum m_N1andN2Passed;
-  cDoubleSum m_propertySuccess;
-  cDoubleSum m_propertyFailure;
+  int m_propertySuccess;
+  int m_propertyFailure;
+  int m_propertyTotal;
+  int m_absPropertySuccess; 
+  int m_absPropertyFailure;
+  int m_absPropertyTotal;
+  int m_uniPropertySuccess; 
+  int m_uniPropertyFailure;
+  int m_uniPropertyTotal;
+  int m_existPropertySuccess; 
+  int m_existPropertyFailure; 
+  int m_existPropertyTotal; 
     
 
   
@@ -668,8 +678,23 @@
   void W2Attempt() { m_W2Attempt.Add(1); }
   void W2Passed() { m_W2Passed.Add(1); }
   void N1andN2Passed() { m_N1andN2Passed.Add(1); } 
-  void propSuccess(int x) {m_propertySuccess.Add(x); }
-  void propFailure(int x) {m_propertyFailure.Add(x); }
+  
+  void propSuccess(int x) {m_propertySuccess = x; }
+  void propFailure(int x) {m_propertyFailure = x; }
+  void propTotal(int x)  {m_propertyTotal= x; }
+  void absPropSuccess(int x) {m_absPropertySuccess =x; }
+  void absPropFailure(int x) {m_absPropertyFailure =x;}
+  void absPropTotal(int x)  {m_absPropertyTotal =x;}
+  void uniPropSuccess(int x) {m_uniPropertySuccess =x; }
+  void uniPropFailure(int x) {m_uniPropertyFailure =x; }
+  void uniPropTotal(int x)  { m_uniPropertyTotal =x;}
+  void existPropSuccess(int x) {m_existPropertySuccess =x; }
+  void existPropFailure(int x) {m_existPropertyFailure =x;}
+  void existPropTotal(int x)  {m_existPropertyTotal =x;}
+      
+
+  
+  
 /*  void scenario5Complete() { m_scenario5.Add(1); } 
   void scenario6Complete() { m_scenario6.Add(1); } 
   void scenario7Complete() { m_scenario7.Add(1); } 

Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cTaskLib.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -2963,13 +2963,14 @@
 double cTaskLib::Task_Properties(cTaskContext& ctx) const
 {
 	double bonus = 0.0; 
-	//cOrganism* org = ctx.getOrganism();
-	cPopulation* pop = (&m_world->GetPopulation());
+	cOrganism* org = ctx.getOrganism();
+	//cPopulation* pop = (&m_world->GetPopulation());
 	
 	// call some sort of check properties function for the model.
-	bonus = pop->getUMLModel()->checkProperties();
-	m_world->GetStats().propSuccess(pop->getUMLModel()->numSuccess());
-	m_world->GetStats().propFailure(pop->getUMLModel()->numFailure());
+	bonus =  org->getUMLModel()->getPropertyReward();
+	//pop->getUMLModel()->checkProperties();
+	//m_world->GetStats().propSuccess(pop->getUMLModel()->numSuccess());
+	//m_world->GetStats().propFailure(pop->getUMLModel()->numFailure());
 	
 	return bonus;
 	

Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cUMLModel.cc	2008-01-21 21:09:09 UTC (rev 2265)
@@ -1,3 +1,4 @@
+
 #include "cUMLModel.h"
 
 #include <sys/types.h>
@@ -180,8 +181,7 @@
   expression_q = 0;
   expression_r = 0;
   createExpressionsFromClasses();
-  int t = expressions.size();
-
+  m_property_reward = 0;
 }
 
 
@@ -246,7 +246,7 @@
 int cUMLModel::numStates() 
 { 
 	int temp_states = 0;
-	for (unsigned int i=0; i<numSDs(); i++) { 
+	for (int i=0; i<numSDs(); i++) { 
 		temp_states += getStateDiagram(i)->numStates();
 	}
 	return temp_states;
@@ -255,7 +255,7 @@
 int cUMLModel::numTrans()
 {
 int temp_trans = 0;
-	for (unsigned int i=0;  i<numSDs(); i++) { 
+	for (int i=0;  i<numSDs(); i++) { 
 		temp_trans += getStateDiagram(i)->numTrans();
 	}
 	return temp_trans;
@@ -264,7 +264,7 @@
 int cUMLModel::numTriggers()
 {
 int temp_trigger = 0;
-	for (unsigned int i=0;  i<numSDs(); i++) { 
+	for (int i=0;  i<numSDs(); i++) { 
 		temp_trigger += getStateDiagram(i)->numTriggers();
 	}
 	return temp_trigger;
@@ -273,7 +273,7 @@
 int cUMLModel::numGuards() 
 {
 int temp = 0;
-	for (unsigned int i=0;  i<numSDs(); i++) { 
+	for (int i=0;  i<numSDs(); i++) { 
 		temp += getStateDiagram(i)->numGuards();
 	}
 	return temp;
@@ -282,7 +282,7 @@
 int cUMLModel::numActions()
 {
 int temp = 0;
-	for (unsigned int i=0;  i<numSDs(); i++) { 
+	for (int i=0;  i<numSDs(); i++) { 
 		temp += getStateDiagram(i)->numActions();
 	}
 	return temp;
@@ -393,7 +393,7 @@
 	return;	
 }
 
-float cUMLModel::checkProperties() 
+/*float cUMLModel::checkProperties() 
 {
 	// for all properties:
 	std::set<cMDEProperty*>::iterator prop_ptr;
@@ -402,6 +402,7 @@
 	m_property_success = 0;
 	m_property_failure = 0;
 
+
 	for (prop_ptr=mdeprops.begin(); prop_ptr!=mdeprops.end(); prop_ptr++)  
 	{
 		temp_val = (*prop_ptr)->getEvaluationInformation();
@@ -420,45 +421,98 @@
 		total += temp_val;
 	}
 	
-	
+//		int size = mdeprops.size();
 	// return the reward.
 	return total;
-}
+}*/
 
 
-bool cUMLModel::addExistenceProperty(std::string s)
+float cUMLModel::addExistenceProperty(std::string s)
 {
 	// a pointer to the existence property
 	std::string temp = StringifyAnInt(mdeprops.size());
+	float val = 0;
 	cMDEExistenceProperty* e = new cMDEExistenceProperty(s, temp);
-	mdeprops.insert (e);
-	//int q = mdeprops.size();
-	return true;
+	// first, try to find the property
+	//
+	std::set<cMDEProperty*, ltcMDEProperty>::iterator mdepropiter = mdeprops.find(e);
+	if (mdepropiter != mdeprops.end()) {
+		val = (*mdepropiter)->getEvaluationInformation();
+	} else {
+		e->evaluate();
+		val = e->getEvaluationInformation();
+		mdeprops.insert (e);
+		if (val >0) {
+				m_property_success++;
+				m_existence_property_success++;
+			} else { 
+				m_property_failure++;
+				m_existence_property_failure++;
+			}
+	}
+	
+	return val;
 }
 
-bool cUMLModel::addAbsenceProperty(std::string s)
+float cUMLModel::addAbsenceProperty(std::string s)
 {
 	// a pointer to the absence property
 	std::string temp = StringifyAnInt(mdeprops.size());
+	float val = 0;
 	cMDEAbsenceProperty* e = new cMDEAbsenceProperty(s, temp);
-	mdeprops.insert (e);
+//	mdeprops.insert (e);
 	//int q = mdeprops.size();
-	return true;
+	std::set<cMDEProperty*, ltcMDEProperty>::iterator mdepropiter = mdeprops.find(e);
+	if (mdepropiter != mdeprops.end()) {
+		val = (*mdepropiter)->getEvaluationInformation();
+	} else {
+		e->evaluate();
+		val = e->getEvaluationInformation();
+		mdeprops.insert (e);
+		if (val >0) {
+				m_property_success++;
+				m_absence_property_success++;
+			} else { 
+				m_property_failure++;
+				m_absence_property_failure++;
+			}
+	}
+
+	return val;
 	
 }
 
-bool cUMLModel::addUniversalProperty(std::string s)
+float cUMLModel::addUniversalProperty(std::string s)
 {
 	// a pointer to the universal property
 	std::string temp = StringifyAnInt(mdeprops.size());
+	float val = 0;	
 	cMDEUniversalProperty* e = new cMDEUniversalProperty(s, temp);
-	mdeprops.insert (e);
+//	mdeprops.insert (e);
 	//int q = mdeprops.size();
-	return true;
+	std::set<cMDEProperty*, ltcMDEProperty>::iterator mdepropiter = mdeprops.find(e);
+	if (mdepropiter != mdeprops.end()) {
+		val = (*mdepropiter)->getEvaluationInformation();
+	} else {
+		e->evaluate();
+		val = e->getEvaluationInformation();
+		mdeprops.insert (e);
+		if (val >0) {
+				m_property_success++;
+				m_universal_property_success++;
+			} else { 
+				m_property_failure++;
+				m_universal_property_failure++;
+			}
+	}
+
+	return val;
 	
 }
 
 
+
+
 // Create expressions for each class. Expressions are: 
 //   Equality of an attribute and each of its values
 //   Inequality of an attribute and each of its values
@@ -479,7 +533,7 @@
 		temp_size = c.numAttributes();
 		
 		// For each attribute...
-		for (unsigned int j=0; j<temp_size; j++) {
+		for (int j=0; j<temp_size; j++) {
 			a = c.getAttribute(j);
 			temp1 = class_name + "_V." + a.attribute_name;
 			
@@ -498,7 +552,7 @@
 		
 		// For each method
 		temp_size = c.numOperations();
-		for (unsigned int m=0; m<temp_size; m++) {
+		for (int m=0; m<temp_size; m++) {
 			o = c.getOperation(m);
 			temp1 = class_name + "_q??[" + o.op_name + "]";
 			addExpression(temp1);
@@ -545,7 +599,6 @@
 
 
 std::string cUMLModel::getP() {
-	int t = expressions.size();
 	return expressions[expression_p]; 
 } 
 
@@ -563,3 +616,4 @@
 	o << x;
 	return o.str();
 }
+

Modified: branches/uml/source/main/cUMLModel.h
===================================================================
--- branches/uml/source/main/cUMLModel.h	2008-01-21 13:15:31 UTC (rev 2264)
+++ branches/uml/source/main/cUMLModel.h	2008-01-21 21:09:09 UTC (rev 2265)
@@ -69,11 +69,27 @@
 	int numSCs();
 	int numSuccess() { return m_property_success; } 
 	int numFailure() { return m_property_failure; }
+	int numTotalProperty() { return m_property_success + m_property_failure; }
+	int numAbsencePropertySuccess() { return m_absence_property_success; }
+	int numAbsencePropertyFailure() { return m_absence_property_failure; }
+	int numAbsencePropertyTotal() { return m_absence_property_success + m_absence_property_failure; }
+	int numExistencePropertySuccess() { return m_existence_property_success; }
+	int numExistencePropertyFailure() { return m_existence_property_failure; }
+	int numExistencePropertyTotal() { return m_existence_property_success + m_existence_property_failure; }
+	int numUniversalPropertySuccess() { return m_universal_property_success; }
+	int numUniversalPropertyFailure() { return m_universal_property_failure; }
+	int numUniversalPropertyTotal() { return m_universal_property_success + m_universal_property_failure; }	
 	
+	void resetPropertyReward() { m_property_reward = 0; }
+	void addPropertyReward(float x) { m_property_reward += x; }
+	float getPropertyReward() { return m_property_reward; }
+	
+	
+	
 	// Properties
-	bool addExistenceProperty(std::string);
-	bool addAbsenceProperty(std::string);
-	bool addUniversalProperty(std::string);
+	float addExistenceProperty(std::string);
+	float addAbsenceProperty(std::string);
+	float addUniversalProperty(std::string);
 	void addExpression(std::string s) { expressions.push_back(s); }
 	void createExpressionsFromClasses();
 	std::string StringifyAnInt(int);
@@ -121,7 +137,7 @@
 	// check if the model is ready for hydra
 	bool readyForHydra(); 
 	bool getWitnessMode() {return witnessMode; }
-	float checkProperties();
+//	float checkProperties();
 	
 
 protected: 
@@ -143,6 +159,14 @@
 	std::set<cMDEProperty*, ltcMDEProperty> mdeprops;
 	int m_property_success;
 	int m_property_failure;
+	int m_absence_property_success;
+	int m_absence_property_failure;
+	int m_existence_property_success;
+	int m_existence_property_failure;
+	int m_universal_property_success;
+	int m_universal_property_failure;
+	float m_property_reward;
+	
 
 	// vector of expressions
 	std::vector<std::string> expressions;




More information about the Avida-cvs mailing list