[Avida-SVN] r1360 - in branches/energy/source: cpu main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Wed Feb 21 07:18:37 PST 2007
Author: beckma24
Date: 2007-02-21 10:18:36 -0500 (Wed, 21 Feb 2007)
New Revision: 1360
Modified:
branches/energy/source/cpu/cHardwareCPU.cc
branches/energy/source/main/cEnvironment.cc
branches/energy/source/main/cPhenotype.cc
branches/energy/source/main/cPhenotype.h
Log:
Missed some files. Energy is adjusted when required. Still don't know how to adjust the merit.
Modified: branches/energy/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/energy/source/cpu/cHardwareCPU.cc 2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/cpu/cHardwareCPU.cc 2007-02-21 15:18:36 UTC (rev 1360)
@@ -518,13 +518,16 @@
#if INSTRUCTION_COSTS
assert(cur_inst.GetOp() < inst_cost.GetSize());
- // check energy first
- if(m_inst_set->GetEnergyCost(cur_inst) > 0) {
- //TODO:
- if(enough energy) {
- subtract energy used from current energy.
- } else
- return false; // not enough energy
+ // check avaliable energy first
+ int energy_req = m_inst_set->GetEnergyCost(cur_inst);
+ if(energy_req > 0) {
+ if(organism->GetPhenotype().GetStoredEnergy() >= energy_req) {
+ //subtract energy used from current energy.
+ organism->GetPhenotype().ReduceEnergy(energy_req);
+ } else {
+ // not enough energy
+ return false;
+ }
}
Modified: branches/energy/source/main/cEnvironment.cc
===================================================================
--- branches/energy/source/main/cEnvironment.cc 2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cEnvironment.cc 2007-02-21 15:18:36 UTC (rev 1360)
@@ -974,7 +974,7 @@
result.AddBonus( bonus * task_count);
break;
case nReaction::PROCTYPE_ENERGY:
- result.AddEnergy( bonus * task_count);
+ result.AddEnergy(bonus);
break;
default:
Modified: branches/energy/source/main/cPhenotype.cc
===================================================================
--- branches/energy/source/main/cPhenotype.cc 2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cPhenotype.cc 2007-02-21 15:18:36 UTC (rev 1360)
@@ -289,11 +289,12 @@
merit = cur_merit_base * cur_bonus;
}
- double init_energy_give = m_world->GetConfig().INITITAL_ENERGY_GIVEN.Get()
+/* double init_energy_give = m_world->GetConfig().INITITAL_ENERGY_GIVEN.Get()
if(init_energy_give >= 0.0) {
- // adjust energy and merit
- energy_store = cur_energy + init_energy_give;
- }
+ // adjust energy
+ TODO : offspring energy depends on config file.
+ energy_store = cur_energy_bonus + init_energy_give;
+ }*/
genome_length = _length;
(void) copied_size; // Unchanged
@@ -305,7 +306,7 @@
// Lock in cur values as last values.
last_merit_base = cur_merit_base;
last_bonus = cur_bonus;
- last_energy = cur_energy;
+ last_energy = cur_energy_bonus;
last_num_errors = cur_num_errors;
last_num_donates = cur_num_donates;
last_task_count = cur_task_count;
@@ -316,7 +317,7 @@
// Reset cur values.
cur_bonus = m_world->GetConfig().DEFAULT_BONUS.Get();
- cur_energy = 0.0;
+ cur_energy_bonus = 0.0;
cur_num_errors = 0;
cur_num_donates = 0;
cur_task_count.SetAll(0);
@@ -599,7 +600,7 @@
cur_bonus += result.GetAddBonus();
// Update the energy bonus
- cur_energy += result.GetAddEnergy()
+ cur_energy_bonus += result.GetAddEnergy()
// Denote consumed resources...
for (int i = 0; i < res_in.GetSize(); i++) {
Modified: branches/energy/source/main/cPhenotype.h
===================================================================
--- branches/energy/source/main/cPhenotype.h 2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cPhenotype.h 2007-02-21 15:18:36 UTC (rev 1360)
@@ -99,7 +99,7 @@
// 2. These are "in progress" variables, updated as the organism operates
double cur_bonus; // Current Bonus
- double cur_energy; // Current energy bonus
+ double cur_energy_bonus; // Current energy bonus
int cur_num_errors; // Total instructions executed illeagally.
int cur_num_donates; // Number of donations so far
tArray<int> cur_task_count; // Total times each task was performed
@@ -114,7 +114,7 @@
// 3. These mark the status of "in progess" variables at the last divide.
double last_merit_base; // Either constant or based on genome length.
double last_bonus;
- double last_energy;
+ double last_energy_bonus;
int last_num_errors;
int last_num_donates;
tArray<int> last_task_count;
@@ -219,6 +219,8 @@
double GetCurBonus() const { assert(initialized == true); return cur_bonus; }
double GetCurMeritBase() const { assert(initialized == true); return CalcSizeMerit(); }
+ double GetStoredEnergy() const { assert(initialized == true); return energy_store; }
+
bool GetToDie() const { assert(initialized == true); return to_die; }
bool GetToDelete() const { assert(initialized == true); return to_delete; }
int GetCurNumErrors() const { assert(initialized == true); return cur_num_errors; }
@@ -276,6 +278,7 @@
//////////////////// Accessors -- Modifying ///////////////////
void SetMerit(const cMerit& in_merit) { merit = in_merit; }
+ void ReduceEnergy(const int cost) { energy_store -= cost; }
void SetGestationTime(int in_time) { gestation_time = in_time; }
void SetTimeUsed(int in_time) { time_used = in_time; }
void SetFault(const cString& in_fault) { fault_desc = in_fault; }
More information about the Avida-cvs
mailing list