[Avida-SVN] r2415 - in branches/uml/source: cpu main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Mon Mar 3 08:04:12 PST 2008
Author: hjg
Date: 2008-03-03 11:04:12 -0500 (Mon, 03 Mar 2008)
New Revision: 2415
Modified:
branches/uml/source/cpu/cHardwareCPU.cc
branches/uml/source/cpu/cHardwareCPU.h
branches/uml/source/main/cMDEAbsenceProperty.cc
branches/uml/source/main/cMDEExistenceProperty.cc
branches/uml/source/main/cMDEExpression.h
branches/uml/source/main/cMDEPrecedenceProperty.cc
branches/uml/source/main/cMDEProperty.h
branches/uml/source/main/cMDEPropertyGenerator.cc
branches/uml/source/main/cMDEPropertyGenerator.h
branches/uml/source/main/cMDEResponseProperty.cc
branches/uml/source/main/cMDEUniversalProperty.cc
branches/uml/source/main/cUMLModel.cc
branches/uml/source/main/cUMLModel.h
Log:
Added checking for related classes.
Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/cpu/cHardwareCPU.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -5107,17 +5107,18 @@
float val = 0;
// Call a function on the model to create this property.
// Currently it just uses p
- std::string s = organism->getUMLModel()->getPropertyGenerator()->getPstring();
- float intp = organism->getUMLModel()->getPropertyGenerator()->getPInterest();
+ cMDEPropertyGenerator* pg = organism->getUMLModel()->getPropertyGenerator();
+ cMDEPropertyGenerator* pop_pg = m_world->GetPopulation().getUMLModel()->getPropertyGenerator();
+ std::string s = pg->getPstring();
+ float intp = pg->getPInterest();
+ bool related = pg->getP()->getUsesRelatedClasses();
+
if (s != "<null>" ) {
-// std::string n = organism->getStateDiagram()->getName();
-// s = n + "." + s;
-// val = organism->getUMLModel()->addAbsenceProperty(s);
- val = m_world->GetPopulation().getUMLModel()->getPropertyGenerator()->addAbsenceProperty(s, intp);
+ val = pop_pg->addAbsenceProperty(s, intp, related);
}
- organism->getUMLModel()->getPropertyGenerator()->addPropertyReward(val);
+ pg->addPropertyReward(val);
return val;
}
@@ -5126,17 +5127,20 @@
{
float val = 0;
// Call a function on the model to create this property.
- std::string s = organism->getUMLModel()->getPropertyGenerator()->getPstring();
- float intp = organism->getUMLModel()->getPropertyGenerator()->getPInterest();
+ // Currently it just uses p
+ cMDEPropertyGenerator* pg = organism->getUMLModel()->getPropertyGenerator();
+ cMDEPropertyGenerator* pop_pg = m_world->GetPopulation().getUMLModel()->getPropertyGenerator();
+ std::string s = pg->getPstring();
+ float intp = pg->getPInterest();
+ bool related = pg->getP()->getUsesRelatedClasses();
+
if (s != "<null>" ) {
-// std::string n = organism->getStateDiagram()->getName();
-// s = n + "." + s;
-// val = organism->getUMLModel()->addUniversalProperty(s);
- val = m_world->GetPopulation().getUMLModel()->getPropertyGenerator()->addUniversalProperty(s, intp);
+
+ val = pop_pg->addUniversalProperty(s, intp, related);
}
- organism->getUMLModel()->getPropertyGenerator()->addPropertyReward(val);
+ pg->addPropertyReward(val);
return val;
}
@@ -5145,17 +5149,19 @@
{
float val = 0;
// Call a function on the model to create this property.
- std::string s = organism->getUMLModel()->getPropertyGenerator()->getPstring();
- float intp = organism->getUMLModel()->getPropertyGenerator()->getPInterest();
+ // Currently it just uses p
+ cMDEPropertyGenerator* pg = organism->getUMLModel()->getPropertyGenerator();
+ cMDEPropertyGenerator* pop_pg = m_world->GetPopulation().getUMLModel()->getPropertyGenerator();
+ std::string s = pg->getPstring();
+ float intp = pg->getPInterest();
+ bool related = pg->getP()->getUsesRelatedClasses();
+
if (s != "<null>" ) {
-// std::string n = organism->getStateDiagram()->getName();
-// s = n + "." + s;
-// val = organism->getUMLModel()->addExistenceProperty(s);
- val = m_world->GetPopulation().getUMLModel()->getPropertyGenerator()->addExistenceProperty(s, intp);
+ val = pop_pg->addExistenceProperty(s, intp, related);
}
- organism->getUMLModel()->getPropertyGenerator()->addPropertyReward(val);
+ pg->addPropertyReward(val);
return val;
}
@@ -5163,18 +5169,21 @@
bool cHardwareCPU::Inst_PrecedenceProperty(cAvidaContext& ctx)
{
float val = 0;
- // Call a function on the model to create this property.
- std::string p = organism->getUMLModel()->getPropertyGenerator()->getPstring();
- std::string q = organism->getUMLModel()->getPropertyGenerator()->getQstring();
- float intp = organism->getUMLModel()->getPropertyGenerator()->getPInterest();
- float intq = organism->getUMLModel()->getPropertyGenerator()->getQInterest();
+ cMDEPropertyGenerator* pg = organism->getUMLModel()->getPropertyGenerator();
+ cMDEPropertyGenerator* pop_pg = m_world->GetPopulation().getUMLModel()->getPropertyGenerator();
+
+ std::string p = pg->getPstring();
+ std::string q = pg->getQstring();
+ float intp = pg->getPInterest();
+ float intq = pg->getQInterest();
float inttotal = intp + intq;
+ bool related = pg->areExpressionsRelated(pg->getP(), pg->getQ());
if (p != q) {
- val = m_world->GetPopulation().getUMLModel()->getPropertyGenerator()->addPrecedenceProperty(p, q, inttotal);
+ val = pop_pg->addPrecedenceProperty(p, q, inttotal, related);
}
- organism->getUMLModel()->getPropertyGenerator()->addPropertyReward(val);
+ pg->addPropertyReward(val);
return val;
}
@@ -5182,18 +5191,22 @@
bool cHardwareCPU::Inst_ResponseProperty(cAvidaContext& ctx)
{
float val = 0;
- // Call a function on the model to create this property.
- std::string p = organism->getUMLModel()->getPropertyGenerator()->getPstring();
- std::string q = organism->getUMLModel()->getPropertyGenerator()->getQstring();
- float intp = organism->getUMLModel()->getPropertyGenerator()->getPInterest();
- float intq = organism->getUMLModel()->getPropertyGenerator()->getQInterest();
+ cMDEPropertyGenerator* pg = organism->getUMLModel()->getPropertyGenerator();
+ cMDEPropertyGenerator* pop_pg = m_world->GetPopulation().getUMLModel()->getPropertyGenerator();
+
+ std::string p = pg->getPstring();
+ std::string q = pg->getQstring();
+ float intp = pg->getPInterest();
+ float intq = pg->getQInterest();
float inttotal = intp + intq;
+ bool related = pg->areExpressionsRelated(pg->getP(), pg->getQ());
+
if (p != q) {
- val = m_world->GetPopulation().getUMLModel()->getPropertyGenerator()->addResponseProperty(p, q, inttotal);
+ val = pop_pg->addResponseProperty(p, q, inttotal, related);
}
- organism->getUMLModel()->getPropertyGenerator()->addPropertyReward(val);
+ pg->addPropertyReward(val);
return val;
}
Modified: branches/uml/source/cpu/cHardwareCPU.h
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.h 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/cpu/cHardwareCPU.h 2008-03-03 16:04:12 UTC (rev 2415)
@@ -59,6 +59,9 @@
#ifndef cPopulation_h
#include "cPopulation.h"
#endif
+#ifndef CMDEPROPERTYGENERATOR_H
+#include "cMDEPropertyGenerator.h"
+#endif
#ifndef defs_h
#include "defs.h"
Modified: branches/uml/source/main/cMDEAbsenceProperty.cc
===================================================================
--- branches/uml/source/main/cMDEAbsenceProperty.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEAbsenceProperty.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -85,7 +85,8 @@
outfile.open (file_name.c_str());
assert(outfile.is_open());
- outfile << "Globally, it is never the case that " << _expr_p << " holds. " << _interesting << std::endl << std::endl;
+ outfile << "Globally, it is never the case that " << _expr_p << " holds. ";
+ outfile << _interesting << " " << _uses_related_classes << std::endl << std::endl;
outfile.close();
Modified: branches/uml/source/main/cMDEExistenceProperty.cc
===================================================================
--- branches/uml/source/main/cMDEExistenceProperty.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEExistenceProperty.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -57,7 +57,8 @@
outfile.open (file_name.c_str());
assert(outfile.is_open());
- outfile << "Globally, " << _expr_p << " eventually holds. " << _interesting << std::endl<< std::endl;
+ outfile << "Globally, " << _expr_p << " eventually holds. ";
+ outfile << _interesting << " " << _uses_related_classes << std::endl << std::endl;
outfile.close();
Modified: branches/uml/source/main/cMDEExpression.h
===================================================================
--- branches/uml/source/main/cMDEExpression.h 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEExpression.h 2008-03-03 16:04:12 UTC (rev 2415)
@@ -58,7 +58,7 @@
void setUsedClassNames(std::set<std::string> s) { _used_class_names = s; }
std::set<std::string> getUsedClassNames() { return _used_class_names; }
- bool isUsesRelatedClasses() { return _uses_related_classes; }
+ bool getUsesRelatedClasses() { return _uses_related_classes; }
void setUsesRelatedClasses(bool t) { _uses_related_classes = t; }
protected:
Modified: branches/uml/source/main/cMDEPrecedenceProperty.cc
===================================================================
--- branches/uml/source/main/cMDEPrecedenceProperty.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEPrecedenceProperty.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -85,7 +85,9 @@
assert(outfile.is_open());
outfile << "Globally, it is always the case that if " << _expr_p << " holds, ";
- outfile << "then "<< _expr_q << " previously held. " << _interesting << std::endl << std::endl;
+ outfile << "then "<< _expr_q << " previously held. ";
+ outfile << _interesting << " " << _uses_related_classes << std::endl << std::endl;
+
outfile.close();
Modified: branches/uml/source/main/cMDEProperty.h
===================================================================
--- branches/uml/source/main/cMDEProperty.h 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEProperty.h 2008-03-03 16:04:12 UTC (rev 2415)
@@ -41,11 +41,18 @@
void setInterestingProperty(float inter) {_interesting = inter; }
float getInteresting() { return _interesting; }
+ // These functions get and set whether the expressions used by the property
+ // involve classes that are (or are not) related to one another.
+ // This information is calculated and set by the property generator class.
+ void setUsesRelatedClasses( bool r) { _uses_related_classes = r; }
+ bool getUsesRelatedClasses() { return _uses_related_classes; }
+
protected:
std::string _scope;
float _reward;
float _interesting;
+ bool _uses_related_classes;
};
Modified: branches/uml/source/main/cMDEPropertyGenerator.cc
===================================================================
--- branches/uml/source/main/cMDEPropertyGenerator.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEPropertyGenerator.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -9,7 +9,7 @@
using namespace std;
-cMDEPropertyGenerator::cMDEPropertyGenerator() {
+cMDEPropertyGenerator::cMDEPropertyGenerator(bool rcm) {
//init property data
expression_p = 0;
expression_q = 0;
@@ -27,6 +27,7 @@
m_precedence_property_failure =0;
m_response_property_success =0;
m_response_property_failure =0;
+ m_related_class_mode = rcm;
}
@@ -49,7 +50,7 @@
}
-float cMDEPropertyGenerator::addExistenceProperty(std::string s, float i)
+float cMDEPropertyGenerator::addExistenceProperty(std::string s, float i, bool related)
{
// a pointer to the existence property
float val = 0;
@@ -57,6 +58,7 @@
cMDEExistenceProperty e(s);
+
// first, try to find the property
std::set<cMDEProperty*, ltcMDEProperty>::iterator mdepropiter = mdeprops.find(&e);
if (mdepropiter != mdeprops.end()) {
@@ -64,6 +66,7 @@
val += (*mdepropiter)->getInteresting();
} else {
e.setInterestingProperty(interesting);
+ e.setUsesRelatedClasses(related);
e.evaluate();
val = e.getEvaluationInformation();
mdeprops.insert(new cMDEExistenceProperty(e));
@@ -77,10 +80,13 @@
}
}
+ if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
+ if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+
return val;
}
-float cMDEPropertyGenerator::addAbsenceProperty(std::string s, float i)
+float cMDEPropertyGenerator::addAbsenceProperty(std::string s, float i, bool related)
{
// a pointer to the absence property
float val = 0;
@@ -107,11 +113,14 @@
}
}
+ if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
+ if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+
return val;
}
-float cMDEPropertyGenerator::addUniversalProperty(std::string s, float i)
+float cMDEPropertyGenerator::addUniversalProperty(std::string s, float i, bool related)
{
// a pointer to the universal property
float val = 0;
@@ -138,12 +147,18 @@
}
}
+ if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
+ if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+
return val;
}
-float cMDEPropertyGenerator::addResponseProperty(std::string s1, std::string s2, float i)
+float cMDEPropertyGenerator::addResponseProperty(std::string s1,
+ std::string s2,
+ float i,
+ bool related)
{
// a pointer to the universal property
float val = 0;
@@ -169,10 +184,17 @@
e.setInterestingProperty(0);
}
}
+
+ if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
+ if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+
return val;
}
-float cMDEPropertyGenerator::addPrecedenceProperty(std::string s1, std::string s2, float i)
+float cMDEPropertyGenerator::addPrecedenceProperty(std::string s1,
+ std::string s2,
+ float i,
+ bool related)
{
// a pointer to the universal property
float val = 0;
@@ -200,6 +222,10 @@
}
}
+
+ if ((m_related_class_mode == 2) && (related == 1)) { val += .5; }
+ if ((m_related_class_mode == 3) && (related == 0)) { val =0; }
+
return val;
}
@@ -214,6 +240,7 @@
// set related class names
e->setRelatedClassNames(rcs);
e->addUsedClassName(c);
+ e->addRelatedClassName(c);
e->setUsesRelatedClasses(true);
std::vector<cMDEExpression*>::iterator exprit;
@@ -238,6 +265,7 @@
// set related class names
e->setRelatedClassNames(rcs);
e->addUsedClassName(a1->getClassName());
+ e->addRelatedClassName(a1->getClassName());
e->setUsesRelatedClasses(true);
std::vector<cMDEExpression*>::iterator exprit;
@@ -261,6 +289,7 @@
// set related class names
e->setRelatedClassNames(rcs);
e->addUsedClassName(a1->getClassName());
+ e->addRelatedClassName(a1->getClassName());
e->setUsesRelatedClasses(true);
std::vector<cMDEExpression*>::iterator exprit;
@@ -281,26 +310,20 @@
{
bool val = false;
cMDECompoundExpression* e = new cMDECompoundExpression(e1, e2, op);
-
- // Get the related class names of expression 1
- // Get the used class names of expression 2
- std::set<std::string> rcns = e1->getRelatedClassNames();
- std::set<std::string> ucns = e2->getUsedClassNames();
-
+
// determine if it uses related classes
- bool test = includes(rcns.begin(), rcns.end(), ucns.begin(), ucns.end());
- e->setUsesRelatedClasses(test);
+ e->setUsesRelatedClasses(areExpressionsRelated(e1, e2));
// set related class names
e->setRelatedClassNames(e1->getRelatedClassNames());
- rcns = e2->getRelatedClassNames();
+ std::set<std::string> rcns = e2->getRelatedClassNames();
for (std::set<std::string>::iterator it = rcns.begin(); it!=rcns.end(); it++) {
e->addRelatedClassName(*it);
}
// set used class names
e->setUsedClassNames(e1->getUsedClassNames());
- ucns = e2->getUsedClassNames();
+ std::set<std::string> ucns = e2->getUsedClassNames();
for (std::set<std::string>::iterator it = ucns.begin(); it!=ucns.end(); it++) {
e->addUsedClassName(*it);
}
@@ -353,13 +376,41 @@
void cMDEPropertyGenerator::printExpressions()
{
std::vector<cMDEExpression*>::iterator exprit;
+ std::set<std::string> used_class_names;
+ std::set<std::string> related_class_names;
+ std::set<std::string>::iterator it;
+
int count =0;
for (exprit = expressions.begin(); exprit < expressions.end(); exprit++){
+ used_class_names = (*exprit)->getUsedClassNames();
+ related_class_names = (*exprit)->getRelatedClassNames();
std::cout << count << " " << (*exprit)->getExpr() << std::endl;
+ std::cout << " uses related classes: " << (*exprit)->getUsesRelatedClasses() << std::endl;
+ std::cout << " used class names: " << std::endl;
+ for (it = used_class_names.begin(); it!=used_class_names.end(); it++) {
+ std::cout << " " << (*it) << std::endl;
+ }
+ std::cout << " related class names: " << std::endl;
+ for (it = related_class_names.begin(); it!=related_class_names.end(); it++) {
+ std::cout << " " << (*it) << std::endl;
+ }
+
count++;
}
}
+bool cMDEPropertyGenerator::areExpressionsRelated(cMDEExpression* e1, cMDEExpression* e2)
+{
+ // Get the related class names of expression 1
+ // Get the used class names of expression 2
+ std::set<std::string> rcns = e1->getRelatedClassNames();
+ std::set<std::string> ucns = e2->getUsedClassNames();
+
+ // determine if it uses related classes
+ bool test = includes(rcns.begin(), rcns.end(), ucns.begin(), ucns.end());
+
+ return test;
+}
Modified: branches/uml/source/main/cMDEPropertyGenerator.h
===================================================================
--- branches/uml/source/main/cMDEPropertyGenerator.h 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEPropertyGenerator.h 2008-03-03 16:04:12 UTC (rev 2415)
@@ -26,7 +26,7 @@
class cMDEPropertyGenerator {
public:
- cMDEPropertyGenerator();
+ cMDEPropertyGenerator(bool);
~cMDEPropertyGenerator();
// Get info about the properties satisfied by the model.
@@ -67,11 +67,11 @@
// Properties
- float addExistenceProperty(std::string, float);
- float addAbsenceProperty(std::string, float);
- float addUniversalProperty(std::string, float);
- float addResponseProperty(std::string, std::string, float);
- float addPrecedenceProperty(std::string, std::string, float);
+ float addExistenceProperty(std::string, float, bool);
+ float addAbsenceProperty(std::string, float, bool);
+ float addUniversalProperty(std::string, float, bool);
+ float addResponseProperty(std::string, std::string, float, bool);
+ float addPrecedenceProperty(std::string, std::string, float, bool);
// bool addExpression(std::string, std::set<std::string>);
// bool relatedExpressions(cMDEExpression*, cMDEExpression*);
@@ -99,6 +99,7 @@
bool absoluteMoveExpressionQ(int x) { return absoluteMoveIndex(expressions, expression_q, x); }
bool relativeMoveExpressionR(int x) { return relativeMoveIndex(expressions, expression_r, x); }
bool absoluteMoveExpressionR(int x) { return absoluteMoveIndex(expressions, expression_r, x); }
+ bool areExpressionsRelated(cMDEExpression*, cMDEExpression*);
bool ANDExpressions();
bool ORExpressions();
@@ -159,6 +160,7 @@
int m_response_property_success;
int m_response_property_failure;
float m_property_reward;
+ int m_related_class_mode;
// vector of expressions
Modified: branches/uml/source/main/cMDEResponseProperty.cc
===================================================================
--- branches/uml/source/main/cMDEResponseProperty.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEResponseProperty.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -72,7 +72,8 @@
assert(outfile.is_open());
outfile << "Globally, it is always the case that if " << _expr_p << " holds, ";
- outfile << "then "<< _expr_q << " eventually holds. " << _interesting << std::endl << std::endl;
+ outfile << "then "<< _expr_q << " eventually holds. ";
+ outfile << _interesting << " " << _uses_related_classes << std::endl << std::endl;
outfile.close();
Modified: branches/uml/source/main/cMDEUniversalProperty.cc
===================================================================
--- branches/uml/source/main/cMDEUniversalProperty.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cMDEUniversalProperty.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -85,8 +85,8 @@
outfile.open (file_name.c_str());
assert(outfile.is_open());
- outfile << "Globally, it is always the case that " << _expr_p << " holds. " << _interesting << std::endl << std::endl;
+ outfile << "Globally, it is always the case that " << _expr_p << " holds. ";
+ outfile << _interesting << " " << _uses_related_classes << std::endl << std::endl;
- outfile.close();
-
-}
\ No newline at end of file
+ outfile.close();
+}
Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cUMLModel.cc 2008-03-03 16:04:12 UTC (rev 2415)
@@ -70,7 +70,8 @@
std::vector<scenario_info>& scenarios,
int& hydra_mode,
bool& witness_mode,
- int& gen_mode) {
+ int& gen_mode,
+ int& related_class_mode) {
std::string data, line;
int cur_class = -1;
int num_classes;
@@ -95,6 +96,7 @@
infile >> temp1 >> hydra_mode;
infile >> temp1 >> witness_mode;
infile >> temp1 >> gen_mode;
+ infile >> temp1 >> related_class_mode;
// resize state diagrams & classes to correspond to the number of classes.
classes.resize(num_classes);
state_diagrams.resize(classes.size());
@@ -257,11 +259,12 @@
int cUMLModel::_cfg_hydra_mode;
bool cUMLModel::_cfg_witness_mode;
int cUMLModel::_cfg_gen_mode;
+int cUMLModel::_cfg_related_class_mode;
cUMLModel::cUMLModel(const char* seed_model) {
if(!_cfgLoaded) {
- seed_diagrams(seed_model, _cfg_classes, _cfg_state_diagrams, _cfg_scenarios, _cfg_hydra_mode, _cfg_witness_mode, _cfg_gen_mode);
+ seed_diagrams(seed_model, _cfg_classes, _cfg_state_diagrams, _cfg_scenarios, _cfg_hydra_mode, _cfg_witness_mode, _cfg_gen_mode, _cfg_related_class_mode);
_cfgLoaded = true;
}
@@ -271,9 +274,10 @@
hydraMode = _cfg_hydra_mode;
witnessMode = _cfg_witness_mode;
genMode = _cfg_gen_mode;
+ relatedClassMode = _cfg_related_class_mode;
// Initialize the property generator.
- gen = new cMDEPropertyGenerator();
+ gen = new cMDEPropertyGenerator(_cfg_related_class_mode);
createExpressionsFromClasses();
}
Modified: branches/uml/source/main/cUMLModel.h
===================================================================
--- branches/uml/source/main/cUMLModel.h 2008-03-03 14:37:02 UTC (rev 2414)
+++ branches/uml/source/main/cUMLModel.h 2008-03-03 16:04:12 UTC (rev 2415)
@@ -109,6 +109,7 @@
bool readyForHydra();
bool getWitnessMode() {return witnessMode; }
int getGenMode() { return genMode; }
+ int getRelatedClassMode() { return relatedClassMode; }
// float checkProperties();
@@ -125,6 +126,10 @@
bool witnessMode;
// Mode 0 = model generation; mode 1 = property generation
int genMode;
+ // Mode 0 = print
+ // Mode 1 = contribute to interest + print
+ // Mode 2 = forbid unrelated + print
+ int relatedClassMode;
// The following are set once per Avida experiment, when the first cUMLModel is constructed:
static bool _cfgLoaded; //!< Whether or not we've already loaded seed-model.cfg.
@@ -135,6 +140,8 @@
static int _cfg_hydra_mode; //!< Execution mode for hydra, as read from seed-model.cfg.
static bool _cfg_witness_mode; //!< Execution mode for hydra, as read from seed-model.cfg.
static int _cfg_gen_mode; //!< Generation mode, as read from seed-model.cfg.
+ static int _cfg_related_class_mode; //!< Related class mode, as read from seed-model.cfg
+ // where 0 = print, 1 = interest + print, 2 = forbid + print
cMDEPropertyGenerator* gen;
More information about the Avida-cvs
mailing list