[Avida-SVN] r1807 - in branches/uml/source: cpu main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Sat Jul 14 18:54:29 PDT 2007
Author: hjg
Date: 2007-07-14 21:54:29 -0400 (Sat, 14 Jul 2007)
New Revision: 1807
Modified:
branches/uml/source/cpu/cHardwareCPU.cc
branches/uml/source/main/cOrganism.cc
branches/uml/source/main/cOrganism.h
branches/uml/source/main/cTaskContext.h
branches/uml/source/main/cTaskLib.cc
branches/uml/source/main/cTaskLib.h
branches/uml/source/main/cUMLModel.cc
branches/uml/source/main/cUMLModel.h
branches/uml/source/main/cUMLStateDiagram.cc
Log:
More merge bug fixes.
Modified: branches/uml/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/uml/source/cpu/cHardwareCPU.cc 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/cpu/cHardwareCPU.cc 2007-07-15 01:54:29 UTC (rev 1807)
@@ -3994,6 +3994,10 @@
bool cHardwareCPU::Inst_HeadDivide(cAvidaContext& ctx)
{
+
+ // modified for UML branch
+ organism->modelCheck(ctx);
+
return Inst_HeadDivideMut(ctx, 1);
}
Modified: branches/uml/source/main/cOrganism.cc
===================================================================
--- branches/uml/source/main/cOrganism.cc 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cOrganism.cc 2007-07-15 01:54:29 UTC (rev 1807)
@@ -647,7 +647,7 @@
// Edited for UML branch
cTaskContext taskctx(m_interface, m_input_buf, m_output_buf, other_input_list,
- other_output_list, 0, 0, 0, received_messages_point);
+ other_output_list, 0, 0, 0, received_messages_point, this);
bool task_completed = m_phenotype.TestOutput(ctx, taskctx, resource_count, res_change, insts_triggered);
if(m_world->GetConfig().ENERGY_ENABLED.Get() && m_world->GetConfig().APPLY_ENERGY_METHOD.Get() == 1 && task_completed) {
Modified: branches/uml/source/main/cOrganism.h
===================================================================
--- branches/uml/source/main/cOrganism.h 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cOrganism.h 2007-07-15 01:54:29 UTC (rev 1807)
@@ -122,20 +122,7 @@
int m_max_executed; // Max number of instruction executed before death.
bool m_is_running; // Does this organism have the CPU?
bool m_is_sleeping; // Is this organisms sleeping?
-
- // UML
- int m_state_diag; // Index of the state diagram that the organism is currently
- // manipulating
- int m_orig_state_index;
- int m_dest_state_index;
-/* int m_trans_label_index;
- int m_trigger_index;
- int m_guard_index;
- int m_action_index;*/
- cUMLModel m_model;
- std::string m_parent_xmi;
- std::map<std::string, float> m_parent_bonus;
-
+
class cNetSupport
{
public:
@@ -150,6 +137,18 @@
};
cNetSupport* m_net;
+ // UML
+ int m_state_diag; // Index of the state diagram that the organism is currently
+ // manipulating
+ int m_orig_state_index;
+ int m_dest_state_index;
+/* int m_trans_label_index;
+ int m_trigger_index;
+ int m_guard_index;
+ int m_action_index;*/
+ cUMLModel m_model;
+ std::string m_parent_xmi;
+ std::map<std::string, float> m_parent_bonus;
cOrganism(); // @not_implemented
cOrganism(const cOrganism&); // @not_implemented
Modified: branches/uml/source/main/cTaskContext.h
===================================================================
--- branches/uml/source/main/cTaskContext.h 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskContext.h 2007-07-15 01:54:29 UTC (rev 1807)
@@ -58,24 +58,20 @@
tBuffer<int>* m_received_messages;
int m_logic_id;
bool m_on_divide;
-
-
-
+
// for optimize tasks actual value of function org is outputting, for all others nothing
// implemented for now...
double m_task_value;
cTaskEntry* m_task_entry;
tHashTable<void*, cTaskState*>* m_task_states;
+
+ // For UML branch
+ cOrganism* organism;
public:
- // For UML branch - Note: should eventually be made private.
- bool m_task_success_complete;
- cOrganism* organism;
-
-
cTaskContext(cOrgInterface* interface, const tBuffer<int>& inputs, const tBuffer<int>& outputs,
const tList<tBuffer<int> >& other_inputs, const tList<tBuffer<int> >& other_outputs,
bool in_net_valid, int in_net_completed, bool in_on_divide = false,
@@ -93,7 +89,7 @@
, m_task_entry(NULL)
, m_task_states(NULL)
, organism(in_org)
- , m_task_success_complete(true)
+// , m_task_success_complete(true)
{
m_task_value = 0;
}
@@ -112,6 +108,11 @@
inline void SetTaskValue(double v) { m_task_value = v; }
inline double GetTaskValue() { return m_task_value; }
+ // for UML branch
+ cOrganism* getOrganism() { return organism; }
+// bool getTaskSuccessComplete() { return m_task_success_complete; }
+// void setTaskSuccessComplete( bool x ) { m_task_success_complete = x; }
+
inline void SetTaskEntry(cTaskEntry* in_entry) { m_task_entry = in_entry; }
inline cTaskEntry* GetTaskEntry() { return m_task_entry; }
Modified: branches/uml/source/main/cTaskLib.cc
===================================================================
--- branches/uml/source/main/cTaskLib.cc 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskLib.cc 2007-07-15 01:54:29 UTC (rev 1807)
@@ -430,8 +430,8 @@
NewTask(name, "Successfully ran Spin", &cTaskLib::Task_SpinN2);
else if (name == "spin-w2") //
NewTask(name, "Successfully ran Spin witness trace", &cTaskLib::Task_SpinW2);
- else if (name == "mult_trans") //
- NewTask(name, "Successfully completed multiple transitions", &cTaskLib::Task_MultTrans);
+/* else if (name == "mult_trans") //
+ NewTask(name, "Successfully completed multiple transitions", &cTaskLib::Task_MultTrans);*/
@@ -2764,7 +2764,7 @@
double bonus = 0.0;
//Init
- ctx.m_task_success_complete = true;
+// ctx.m_task_success_complete = true;
// if (ctx.organism->currTrans(1, -1, -1, -1, -1, "^TempSensor.getOpState()")) {
// if (ctx.organism->currTrans(1, -1, -1, -1, -1, 1)) {
@@ -2772,13 +2772,13 @@
// tagaaa
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(0, 1, 1, 2, 3))
// temp sensor
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(0, 1, 0, 0, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(0, 1, 0, 0, 0))
{
// ctx.m_task_success_complete += 1;
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2791,12 +2791,12 @@
// tagaaa
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(1, 2, 0, 0, 0))
// temp sensor
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(1, 2, 0, 0, 2))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(1, 2, 0, 0, 2))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2810,12 +2810,12 @@
// tagaaa
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(2, 3, 0, 3, 1))
// temp sensor
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(2, 3, 2, 0, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(2, 3, 2, 0, 0))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2829,12 +2829,12 @@
// tagaaa
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(3, 4, 2, 1, 2))
// temp sensor
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(3, 1, 0, 0, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(3, 1, 0, 0, 0))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2845,12 +2845,12 @@
// if (ctx.organism->currTrans(0, -1, -1, -1, -1, "^SoftwareSensor.setTempOpState(op_state)")) {
//if (ctx.organism->currTrans(0, -1, -1, -1, -1, 1))
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 1))
- if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(4, 0, 3, 0, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(0)->findTrans(4, 0, 3, 0, 0))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+ //ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2862,12 +2862,12 @@
// if (ctx.organism->currTrans(1, -1, -1, -1, -1, "^TempSensor.getOpState()")) {
// if (ctx.organism->currTrans(1, -1, -1, -1, -1, 1)) {
// if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(-1, -1, -1, -1, 1))
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(0, 4, 2, 1, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(0, 4, 2, 1, 0))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2877,12 +2877,12 @@
// if (ctx.organism->currTrans(0, -1, -1, "setTempOpState", -1, -1)) {
// if (ctx.organism->currTrans(1, -1, -1, 1, -1, -1)) {
// if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(-1, -1, 1, -1, -1))
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(4, 1, 0, 1, 0))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(4, 1, 0, 1, 0))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2893,12 +2893,12 @@
// if (ctx.organism->currTrans(0, -1, -1, "getOpState", -1, -1)) {
// if (ctx.organism->currTrans(0, -1, -1, 1, -1, -1)) {
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, 1, -1, -1))
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(1, 3, 1, 1, 1))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(1, 3, 1, 1, 1))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2909,12 +2909,12 @@
// if (ctx.organism->currTrans(0, -1, -1, -1, -1, "op_state:=1")) {
// if (ctx.organism->currTrans(0, -1, -1, -1, -1, 3)) {
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 3))
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(3, 2, 2, 0, 3))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(3, 2, 2, 0, 3))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2925,12 +2925,12 @@
// if (ctx.organism->currTrans(0, -1, -1, -1, -1, "^SoftwareSensor.setTempOpState(op_state)")) {
//if (ctx.organism->currTrans(0, -1, -1, -1, -1, 1))
// if (ctx.organism->getUMLModel()->getStateDiagram(0)->findTrans(-1, -1, -1, -1, 1))
- if (ctx.organism->getUMLModel()->getStateDiagram(1)->findTrans(2, 4, 3, 2, 1))
+ if (ctx.getOrganism()->getUMLModel()->getStateDiagram(1)->findTrans(2, 4, 3, 2, 1))
{
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
@@ -2939,6 +2939,8 @@
{
double bonus = 0.0;
std::deque<std::string> path1;
+ cOrganism* org = ctx.getOrganism();
+ assert(org!=0);
// Check if the tasks are complete so far...
// This provides a basic ordering mechanism for the tasks.
@@ -2947,7 +2949,7 @@
}*/
// Check if this model is different than the organism's parent's model
- if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
// create the scenario
path1.push_back("^TempSensor.getOpState()");
@@ -2955,14 +2957,14 @@
// check for scneario
// bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1)) / path1.size());
- bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
+ bonus = ((org->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
} else {
- bonus = ctx.organism->getParentBonus("scenario1");
+ bonus = org->getParentBonus("scenario1");
}
// Set bonus info for current model
- ctx.organism->getUMLModel()->setBonusInfo("scenario1", bonus);
+ org->getUMLModel()->setBonusInfo("scenario1", bonus);
/*if (bonus == 2) {
ctx.m_task_success_complete = ctx.m_task_success_complete && true;
@@ -2978,6 +2980,8 @@
{
double bonus = 0.0;
std::deque<std::string> path1;
+ cOrganism* org = ctx.getOrganism();
+
// Check if the tasks are complete so far...
// This provides a basic ordering mechanism for the tasks.
@@ -2986,7 +2990,7 @@
}*/
// Check if this model is different than the organism's parent's model
- if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
// create the scenario
path1.push_back("^TempSensor.getTempData()");
@@ -2994,10 +2998,10 @@
// check for scneario
//bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1)) / path1.size());
- bonus = ((ctx.organism->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
+ bonus = ((org->getUMLModel()->getStateDiagram(1)->findPath(path1))); // / path1.size());
} else {
- bonus = ctx.organism->getParentBonus("scenario2");
+ bonus = org->getParentBonus("scenario2");
}
// Set bonus info for current model
@@ -3009,7 +3013,7 @@
}*/
// Set bonus info for current model
- ctx.organism->getUMLModel()->setBonusInfo("scenario2", bonus);
+ org->getUMLModel()->setBonusInfo("scenario2", bonus);
return bonus;
}
@@ -3018,7 +3022,8 @@
{
double bonus = 0.0;
std::deque<std::string> path1;
-
+ cOrganism* org = ctx.getOrganism();
+
// Check if the tasks are complete so far...
// This provides a basic ordering mechanism for the tasks.
/*if (!ctx.m_task_success_complete) {
@@ -3026,7 +3031,7 @@
}*/
// Check if this model is different than the organism's parent's model
- if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
// create the scenario
path1.push_back("getOpState");
@@ -3036,14 +3041,14 @@
// check for scneario
//bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1)) / path1.size());
- bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+ bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
} else {
- bonus = ctx.organism->getParentBonus("scenario3");
+ bonus = org->getParentBonus("scenario3");
}
// Set bonus info for current model
- ctx.organism->getUMLModel()->setBonusInfo("scenario3", bonus);
+ org->getUMLModel()->setBonusInfo("scenario3", bonus);
/*int temp = path1.size();
@@ -3060,7 +3065,9 @@
{
double bonus = 0.0;
std::deque<std::string> path1;
+ cOrganism* org = ctx.getOrganism();
+
// Check if the tasks are complete so far...
// This provides a basic ordering mechanism for the tasks.
/*if (!ctx.m_task_success_complete) {
@@ -3068,7 +3075,7 @@
}*/
// Check if this model is different than the organism's parent's model
- if (ctx.organism->getParentXMI() != ctx.organism->getUMLModel()->getXMI()) {
+ if (org->getParentXMI() != org->getUMLModel()->getXMI()) {
// create the scenario
path1.push_back("getOpState");
@@ -3078,14 +3085,14 @@
// check for scneario
// bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1)) / path1.size());
- bonus = ((ctx.organism->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
+ bonus = ((org->getUMLModel()->getStateDiagram(0)->findPath(path1))); // / path1.size());
} else {
- bonus = ctx.organism->getParentBonus("scenario4");
+ bonus = org->getParentBonus("scenario4");
}
// Set bonus info for current model
- ctx.organism->getUMLModel()->setBonusInfo("scenario4", bonus);
+ org->getUMLModel()->setBonusInfo("scenario4", bonus);
/*if (bonus == 3) {
ctx.m_task_success_complete = ctx.m_task_success_complete && true;
@@ -3098,7 +3105,7 @@
double cTaskLib::Task_NumStates(cTaskContext& ctx) const
{
- double ns = (double) ctx.organism->getStateDiagram()->numStates();
+ double ns = (double) ctx.getOrganism()->getStateDiagram()->numStates();
if (ns <= 5 ) {
return (ns/5);
@@ -3110,7 +3117,7 @@
double cTaskLib::Task_NumTrans(cTaskContext& ctx) const
{
- double nt = (double) ctx.organism->getStateDiagram()->numTrans();
+ double nt = (double) ctx.getOrganism()->getStateDiagram()->numTrans();
if (nt <= 5 ) {
return (nt/5);
@@ -3122,24 +3129,26 @@
double cTaskLib::Task_Hydra(cTaskContext& ctx) const
{
- cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
std::string temp;
double bonus = 0.0;
temp = organism->getUMLModel()->getXMI();
- int temp1, temp2, temp3, temp4;
- temp1= ctx.organism->getUMLModel()->getBonusInfo("scenario1");
- temp2= ctx.organism->getUMLModel()->getBonusInfo("scenario2");
- temp3= ctx.organism->getUMLModel()->getBonusInfo("scenario3");
- temp4= ctx.organism->getUMLModel()->getBonusInfo("scenario4");
+ float temp1, temp2, temp3, temp4;
+ temp1= organism->getUMLModel()->getBonusInfo("scenario1");
+ temp2= organism->getUMLModel()->getBonusInfo("scenario2");
+ temp3= organism->getUMLModel()->getBonusInfo("scenario3");
+ temp4= organism->getUMLModel()->getBonusInfo("scenario4");
- if (!((ctx.organism->getUMLModel()->getBonusInfo("scenario1") == 2) &&
- (ctx.organism->getUMLModel()->getBonusInfo("scenario2") == 2) &&
- (ctx.organism->getUMLModel()->getBonusInfo("scenario3") == 3) &&
- (ctx.organism->getUMLModel()->getBonusInfo("scenario4") == 3))) {
- ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);
+ if (!((organism->getUMLModel()->getBonusInfo("scenario1") == 2) ||
+ (organism->getUMLModel()->getBonusInfo("scenario2") == 2) ||
+ (organism->getUMLModel()->getBonusInfo("scenario3") == 3) ||
+ (organism->getUMLModel()->getBonusInfo("scenario4") == 3))) {
+
+ organism->getUMLModel()->setBonusInfo("hydra", bonus);
+
return 0;
}
/*if (!ctx.m_task_success_complete) {
@@ -3149,11 +3158,11 @@
m_world->GetStats().HydraAttempt();
- if (ctx.organism->getParentXMI() == temp) {
+ if (organism->getParentXMI() == temp) {
- bonus = ctx.organism->getParentBonus("hydra");
+ bonus = organism->getParentBonus("hydra");
//if (bonus) ctx.m_task_success_complete = true;
- ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);
+ organism->getUMLModel()->setBonusInfo("hydra", bonus);
return bonus;
}
@@ -3220,31 +3229,31 @@
// if there are no errors, return 0 from hydraulic. otherwise, return non-zero.
if(status != 0) {
// organism->setBonusInfo("hydra", 0.0);
- ctx.m_task_success_complete = false;
+// ctx.m_task_success_complete = false;
bonus = 0.0;
} else {
m_world->GetStats().HydraPassed();
// organism->setBonusInfo("hydra", 1.0);
- ctx.m_task_success_complete = true;
+// ctx.m_task_success_complete = true;
bonus = 1.0;
}
- ctx.organism->getUMLModel()->setBonusInfo("hydra", bonus);
+ organism->getUMLModel()->setBonusInfo("hydra", bonus);
return bonus;
}
double cTaskLib::SpinCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
- cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
m_world->GetStats().SpinAttempt();
- int status=0;
+// int status=0;
- // break inserted on 6/24
+/* // 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";
@@ -3268,13 +3277,13 @@
}
double cTaskLib::SpinWitnessCoprocess(cTaskContext& ctx, const std::string& neverclaimFile) const {
- cOrganism* organism = ctx.organism;
+// cOrganism* organism = ctx.organism;
// m_world->GetStats().SpinAttempt();
- int status=0;
+// int status=0;
int num_witness = 0;
const int max_witness = 5;
- ctx.m_task_success_complete = false;
+// ctx.m_task_success_complete = false;
std::string cmd = "cp tmp.pr tmp-witness.pr" ;
if(system(cmd.c_str())!=0) return 0.0;
@@ -3296,26 +3305,27 @@
// m_world->GetStats().PanPassed();
- if (num_witness == max_witness) {
+ /*if (num_witness == max_witness) {
ctx.m_task_success_complete = true;
} else {
ctx.m_task_success_complete = false;
- }
+ }*/
return (num_witness/max_witness);
}
double cTaskLib::Task_SpinN1(cTaskContext& ctx) const {
- //cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
double bonus = 0.0;
- if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) {
+ if (organism->getUMLModel()->getBonusInfo("w1") == 0)
+ {
return bonus;
}
- if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
+ if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {
- bonus = ctx.organism->getParentBonus("spinn1");
+ bonus = organism->getParentBonus("spinn1");
// return bonus;
} else {
@@ -3327,7 +3337,7 @@
} else {
ctx.m_task_success_complete = false;
}*/
- ctx.organism->getUMLModel()->setBonusInfo("spinn1", bonus);
+ organism->getUMLModel()->setBonusInfo("spinn1", bonus);
return bonus;
}
@@ -3335,16 +3345,20 @@
double cTaskLib::Task_SpinW1(cTaskContext& ctx) const {
-// cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
// double temp1 = 0.0;
double bonus = 0.0;
- //if (!ctx.m_task_success_complete) return bonus;
- if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) {
+
+ if ((organism->getUMLModel()->getBonusInfo("scenario1") != 2) ||
+ (organism->getUMLModel()->getBonusInfo("scenario3") != 3) ||
+ (organism->getUMLModel()->getBonusInfo("scenario4") != 3) ||
+ (organism->getUMLModel()->getBonusInfo("hydra") == 0))
+ {
return bonus;
}
- if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
- bonus = ctx.organism->getParentBonus("spinw1");
+ if ((organism->getParentXMI()) == (organism->getUMLModel()->getXMI())) {
+ bonus = organism->getParentBonus("spinw1");
// return bonus;
} else {
@@ -3356,24 +3370,24 @@
} else {
ctx.m_task_success_complete = false;
}*/
- ctx.organism->getUMLModel()->setBonusInfo("spinw1", bonus);
+ organism->getUMLModel()->setBonusInfo("spinw1", bonus);
return bonus;
}
double cTaskLib::Task_SpinN2(cTaskContext& ctx) const {
- //cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
double bonus = 0.0;
- //if (!ctx.m_task_success_complete) return bonus;
- if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) {
+ if (organism->getUMLModel()->getBonusInfo("w2") == 0)
+ {
return bonus;
}
- if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
+ if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {
- bonus = ctx.organism->getParentBonus("spinn2");
+ bonus = organism->getParentBonus("spinn2");
// return bonus;
} else {
@@ -3385,7 +3399,7 @@
} else {
ctx.m_task_success_complete = false;
}*/
- ctx.organism->getUMLModel()->setBonusInfo("spinn2", bonus);
+ organism->getUMLModel()->setBonusInfo("spinn2", bonus);
return bonus;
}
@@ -3393,16 +3407,19 @@
double cTaskLib::Task_SpinW2(cTaskContext& ctx) const {
-// cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
// double temp1 = 0.0;
double bonus = 0.0;
- //if (!ctx.m_task_success_complete) return bonus;
- if (ctx.organism->getUMLModel()->getBonusInfo("hydra") == 0) {
+
+ if ((organism->getUMLModel()->getBonusInfo("scenario2") != 2) ||
+ (organism->getUMLModel()->getBonusInfo("hydra") == 0))
+ {
return bonus;
}
+
- if (ctx.organism->getParentXMI() == ctx.organism->getUMLModel()->getXMI()) {
- bonus = ctx.organism->getParentBonus("spinw2");
+ if (organism->getParentXMI() == organism->getUMLModel()->getXMI()) {
+ bonus = organism->getParentBonus("spinw2");
// return bonus;
} else {
@@ -3414,26 +3431,26 @@
} else {
ctx.m_task_success_complete = false;
}*/
- ctx.organism->getUMLModel()->setBonusInfo("spinw2", bonus);
+ organism->getUMLModel()->setBonusInfo("spinw2", bonus);
return bonus;
}
-double cTaskLib::Task_MultTrans(cTaskContext& ctx) const {
+/*double cTaskLib::Task_MultTrans(cTaskContext& ctx) const {
return (2^ctx.m_task_success_complete);
-}
+}*/
double cTaskLib::Task_PropTrigger(cTaskContext& ctx) const {
// This task checks for the trigger of the property.
- cOrganism* organism = ctx.organism;
+ cOrganism* organism = ctx.getOrganism();
double bonus = 0.0;
if (organism->getStateDiagram()->findTrans(-1,-1,-1,-1,1)){
bonus = 1.0;
}
- ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
+// ctx.m_task_success_complete = ctx.m_task_success_complete && bonus;
return bonus;
}
Modified: branches/uml/source/main/cTaskLib.h
===================================================================
--- branches/uml/source/main/cTaskLib.h 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cTaskLib.h 2007-07-15 01:54:29 UTC (rev 1807)
@@ -301,7 +301,7 @@
double Task_SpinN2(cTaskContext& ctx) const;
double Task_SpinW1(cTaskContext& ctx) const;
double Task_SpinW2(cTaskContext& ctx) const;
- double Task_MultTrans(cTaskContext& ctx) const;
+// double Task_MultTrans(cTaskContext& ctx) const;
};
Modified: branches/uml/source/main/cUMLModel.cc
===================================================================
--- branches/uml/source/main/cUMLModel.cc 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLModel.cc 2007-07-15 01:54:29 UTC (rev 1807)
@@ -42,7 +42,7 @@
cUMLModel::~cUMLModel()
{}
-cUMLStateDiagram* cUMLModel::getStateDiagram (int x)
+cUMLStateDiagram* cUMLModel::getStateDiagram (unsigned int x)
{
assert(x<state_diagrams.size());
return &state_diagrams[x];
@@ -57,7 +57,7 @@
int num_states;
int num_sd = 0;
int cur_sd = -1;
- char c;
+// char c;
std::string tr_l, tr_o, gu, act;
std::ifstream infile;
infile.open("seed-model.cfg");
@@ -150,7 +150,7 @@
int cUMLModel::numStates()
{
int temp_states = 0;
- for (int i=0; i<state_diagrams.size(); i++) {
+ for (unsigned int i=0; i<state_diagrams.size(); i++) {
temp_states += getStateDiagram(i)->numStates();
}
return temp_states;
@@ -159,7 +159,7 @@
int cUMLModel::numTrans()
{
int temp_trans = 0;
- for (int i=0; i<state_diagrams.size(); i++) {
+ for (unsigned int i=0; i<state_diagrams.size(); i++) {
temp_trans += getStateDiagram(i)->numTrans();
}
return temp_trans;
@@ -168,7 +168,7 @@
int cUMLModel::numTriggers()
{
int temp_trigger = 0;
- for (int i=0; i<state_diagrams.size(); i++) {
+ for (unsigned int i=0; i<state_diagrams.size(); i++) {
temp_trigger += getStateDiagram(i)->numTriggers();
}
return temp_trigger;
@@ -177,7 +177,7 @@
int cUMLModel::numGuards()
{
int temp = 0;
- for (int i=0; i<state_diagrams.size(); i++) {
+ for (unsigned int i=0; i<state_diagrams.size(); i++) {
temp += getStateDiagram(i)->numGuards();
}
return temp;
@@ -186,7 +186,7 @@
int cUMLModel::numActions()
{
int temp = 0;
- for (int i=0; i<state_diagrams.size(); i++) {
+ for (unsigned int i=0; i<state_diagrams.size(); i++) {
temp += getStateDiagram(i)->numActions();
}
return temp;
Modified: branches/uml/source/main/cUMLModel.h
===================================================================
--- branches/uml/source/main/cUMLModel.h 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLModel.h 2007-07-15 01:54:29 UTC (rev 1807)
@@ -25,11 +25,11 @@
void printXMI(); // create the XMI version of the model.
// Access the size of the state diagrams and also a specific state diagram
- int getStateDiagramSize() { return state_diagrams.size(); }
- cUMLStateDiagram* getStateDiagram (int);
+ unsigned int getStateDiagramSize() { return state_diagrams.size(); }
+ cUMLStateDiagram* getStateDiagram (unsigned int);
// Set and access the bonus info for a model. Should be used by the tasks
- bool setBonusInfo (std::string s, float f) { bonus_info[s] = f; }
+ void setBonusInfo (std::string s, float f) { bonus_info[s] = f; }
float getBonusInfo (std::string s) { return bonus_info[s]; }
// Get the number of, well, everything
Modified: branches/uml/source/main/cUMLStateDiagram.cc
===================================================================
--- branches/uml/source/main/cUMLStateDiagram.cc 2007-07-14 19:33:11 UTC (rev 1806)
+++ branches/uml/source/main/cUMLStateDiagram.cc 2007-07-15 01:54:29 UTC (rev 1807)
@@ -31,10 +31,10 @@
// The function is complicated by the fact that the longest path segment could start at the
// beginning, middle, or end of the path itself AND the path could begin at any reachable vertex.
int cUMLStateDiagram::findPath(std::deque<std::string> p) {
- int path_dist = 0; // the current path distance satisfied is 0.
+ unsigned int path_dist = 0; // the current path distance satisfied is 0.
// int path_total_length = p.size();
- int path_longest_length = 0;
- int len = 0;
+// int path_longest_length = 0;
+ unsigned int len = 0;
int num_vert = num_vertices(sd0);
std::deque<std::string> p_temp = p;
@@ -111,6 +111,7 @@
{
bool result = false;
+ int num_vert = (int) num_vertices(sd0);
if (num_edges(sd0) == 0) {
return false;
@@ -135,7 +136,7 @@
}
}
} else if (origin == -1 && destination != -1) {
- if (destination > num_vertices(sd0)) return result;
+ if (destination > num_vert) return result;
d_temp = vertex(destination, sd0);
for (tie(in_edge_start, in_edge_end) = in_edges(d_temp, sd0);
in_edge_start != in_edge_end; ++in_edge_start) {
@@ -148,7 +149,7 @@
}
}
} else if (origin != -1 && destination == -1) {
- if (origin > num_vertices(sd0)) return result;
+ if (origin > num_vert) return result;
o_temp = vertex(origin, sd0);
for(tie(out_edge_start, out_edge_end) = out_edges(o_temp, sd0);
@@ -162,8 +163,8 @@
}
}
} else if (origin != -1 && destination != -1) {
- if ((destination > num_vertices(sd0)) ||
- (origin > num_vertices(sd0))) return result;
+ if ((destination > num_vert) ||
+ (origin > num_vert)) return result;
o_temp = vertex(origin, sd0);
d_temp = vertex(destination, sd0);
for(tie(out_edge_start, out_edge_end) = edge_range (o_temp, d_temp, sd0);
@@ -188,7 +189,8 @@
bool cUMLStateDiagram::absoluteMoveIndex (T x, int &index, int amount )
{
- if (x.size() == 0 || amount > x.size()) {
+ int x_size = (int) x.size();
+ if (x_size == 0 || amount > x_size) {
return false;
}
@@ -199,18 +201,20 @@
template <typename T>
bool cUMLStateDiagram::relativeMoveIndex (T x, int &index, int amount )
{
- if (x.size() == 0) {
+ int x_size = (int) x.size();
+
+ if (x_size == 0) {
return false;
}
if (amount > 0) {
- index += (amount % x.size());
+ index += (amount % x_size);
// index is greater than vector
- if (index >= x.size()) {
- index -= x.size();
+ if (index >= x_size) {
+ index -= x_size;
} else if(index < 0) {
- index += x.size();
+ index += x_size;
}
}
@@ -242,9 +246,9 @@
bool cUMLStateDiagram::absoluteJumpOriginState(int jump_amount)
{
bool result = false;
- int x = num_vertices(sd0);
+ int num_vert = (int) num_vertices(sd0);
- if (num_vertices(sd0) > jump_amount) {
+ if (num_vert > jump_amount) {
orig = vertex(jump_amount, sd0);
result = true;
}
@@ -254,7 +258,9 @@
bool cUMLStateDiagram::absoluteJumpDestinationState(int jump_amount)
{
bool result = false;
- if (num_vertices(sd0) > jump_amount) {
+ int num_vert = (int) num_vertices(sd0);
+
+ if (num_vert > jump_amount) {
dest = vertex(jump_amount, sd0);
result = true;
}
@@ -359,6 +365,8 @@
// currently, not checking for dupes, since we are seeding the labels.
transition_labels.push_back(t);
+
+ return true;
}
More information about the Avida-cvs
mailing list