[Avida-SVN] r1711 - in branches/uml/source: cpu main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Mon Jun 25 06:25:22 PDT 2007
Author: hjg
Date: 2007-06-25 09:25:21 -0400 (Mon, 25 Jun 2007)
New Revision: 1711
Modified:
branches/uml/source/cpu/cHardwareCPU.cc
branches/uml/source/main/cTaskLib.cc
branches/uml/source/main/cTaskLib.h
branches/uml/source/main/cUMLModel.cc
branches/uml/source/main/cUMLStateDiagram.cc
Log:
Further developed witness trace support.
Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc 2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/cpu/cHardwareCPU.cc 2007-06-25 13:25:21 UTC (rev 1711)
@@ -4269,7 +4269,7 @@
{
if(organism->GetCellID()==-1) return false;
- organism->modelCheck(ctx);
+ //organism->modelCheck(ctx);
return organism->addTransitionTotal();
}
Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc 2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cTaskLib.cc 2007-06-25 13:25:21 UTC (rev 1711)
@@ -407,6 +407,8 @@
NewTask(name, "Successfully created 5 states", &cTaskLib::Task_NumStates);
else if (name == "numTrans") //
NewTask(name, "Successfully created 5 transitions", &cTaskLib::Task_NumTrans);
+ else if (name == "prop-tr") //
+ NewTask(name, "Diagram included trigger", &cTaskLib::Task_PropTrigger);
else if (name == "hydra") //
NewTask(name, "Successfully ran hydra", &cTaskLib::Task_Hydra);
else if (name == "spin1") //
@@ -2964,6 +2966,14 @@
cOrganism* organism = ctx.organism;
m_world->GetStats().SpinAttempt();
int status=0;
+
+ // break inserted on 6/24
+ organism->absoluteJumpStateDiagram(1);
+ if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
+ status += 1;
+ }
+
+
std::string cmd = "cat " + neverclaimFile + " >> tmp.pr && ./spin -a tmp.pr &> /dev/null";
if(system(cmd.c_str())!=0) return 0.0;
m_world->GetStats().SpinPassed();
@@ -2983,14 +2993,18 @@
m_world->GetStats().PanPassed();
return 3.0;
}
-
+
double cTaskLib::SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
cOrganism* organism = ctx.organism;
// m_world->GetStats().SpinAttempt();
int status=0;
int num_witness = 0;
- std::string cmd = "cat " + neverclaimFile + " >> tmp.pr && ./spin -a tmp.pr &> /dev/null";
+
+ std::string cmd = "cp tmp.pr tmp-witness.pr" ;
if(system(cmd.c_str())!=0) return 0.0;
+
+ cmd = "cat " + neverclaimFile + " >> tmp-witness.pr && ./spin -a tmp-witness.pr &> /dev/null";
+ if(system(cmd.c_str())!=0) return 0.0;
// m_world->GetStats().SpinPassed();
// m_world->GetStats().PanAttempt();
@@ -3011,7 +3025,6 @@
double cTaskLib::Task_SpinN1(cTaskContext& ctx) const {
cOrganism* organism = ctx.organism;
- std::string temp = organism->getStateDiagram()->getXMI();
double temp1 = 0.0;
/* if (temp == organism->getParentXMI()) {
@@ -3023,13 +3036,9 @@
// check if the trigger is present
organism->absoluteJumpStateDiagram(1);
- if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
- temp += 1;
-
- // check property
- if (ctx.task_success_complete) {
+ if (ctx.task_success_complete) {
+ // checkproperty
temp1 += SpinCoprocess(ctx, "N1");
- }
}
// organism->setBonusInfo("spinn1", temp1);
@@ -3040,10 +3049,8 @@
double cTaskLib::Task_SpinW1(cTaskContext& ctx) const {
cOrganism* organism = ctx.organism;
- std::string temp = organism->getStateDiagram()->getXMI();
double temp1 = 0.0;
-
// check property
if (ctx.task_success_complete) {
temp1 += SpinWitnessCoprocess(ctx, "W1");
@@ -3066,3 +3073,16 @@
return bonus;
}
+
+double cTaskLib::Task_PropTrigger(cTaskContext& ctx) const {
+ // This task checks for the trigger of the property.
+ cOrganism* organism = ctx.organism;
+ double bonus = 0.0;
+
+ if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
+ bonus = 1.0;
+ }
+
+ ctx.task_success_complete = ctx.task_success_complete && bonus;
+ return bonus;
+}
Modified: branches/uml/source/main/cTaskLib.h
===================================================================
--- branches/uml/source/main/cTaskLib.h 2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cTaskLib.h 2007-06-25 13:25:21 UTC (rev 1711)
@@ -289,6 +289,7 @@
double Task_Trans10(cTaskContext& ctx) const;
double Task_NumStates(cTaskContext& ctx) const;
double Task_NumTrans(cTaskContext& ctx) const;
+ double Task_PropTrigger(cTaskContext& ctx) const;
double Task_Hydra(cTaskContext& ctx) const;
double SpinCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const;
double SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const;
Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc 2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cUMLModel.cc 2007-06-25 13:25:21 UTC (rev 1711)
@@ -158,6 +158,11 @@
// action 2
soft_sense->addAction("^TempSensor.getTempData()");
+ //seeded transitions...
+// soft_sense->addTransitionTotal(0, 1, 0, 0, 0);
+// soft_sense->addTransitionTotal(1, 2, 0, 0, 2);
+// soft_sense->addTransitionTotal(2, 3, 2, 0, 0);
+// soft_sense->addTransitionTotal(3, 1, 0, 0, 0);
// Temperature Sensor
cUMLStateDiagram* temp_sense = getStateDiagram(0);
Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc 2007-06-23 15:54:42 UTC (rev 1710)
+++ branches/uml/source/main/cUMLStateDiagram.cc 2007-06-25 13:25:21 UTC (rev 1711)
@@ -409,10 +409,6 @@
return false;
}
- // increment number of edges for a state
- states[getOrigStateIndex()].num_outgoing += 1;
- states[getDestStateIndex()].num_incoming += 1;
-
transition_label tl;
tl.trigger = getTriggerIndex();
@@ -426,7 +422,11 @@
return false;
}
+ // increment number of edges for a state
+ states[getOrigStateIndex()].num_outgoing += 1;
+ states[getDestStateIndex()].num_incoming += 1;
+
transitions.push_back(trany);
More information about the Avida-cvs
mailing list