[Avida-SVN] r2692 - in branches/interrupt/source: actions main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Mon Jun 30 13:30:47 PDT 2008
Author: beckma24
Date: 2008-06-30 16:30:47 -0400 (Mon, 30 Jun 2008)
New Revision: 2692
Modified:
branches/interrupt/source/actions/PopulationActions.cc
branches/interrupt/source/main/cDeme.cc
branches/interrupt/source/main/cDeme.h
Log:
Added another compete deme fitness function
Modified: branches/interrupt/source/actions/PopulationActions.cc
===================================================================
--- branches/interrupt/source/actions/PopulationActions.cc 2008-06-26 19:51:35 UTC (rev 2691)
+++ branches/interrupt/source/actions/PopulationActions.cc 2008-06-30 20:30:47 UTC (rev 2692)
@@ -1281,6 +1281,25 @@
}
};
+class cAbstractCompeteDemes__AttackKill_EnergyConserve_QuickKill : public cAbstractCompeteDemes {
+
+ public:
+ cAbstractCompeteDemes__AttackKill_EnergyConserve_QuickKill(cWorld* world, const cString& args) : cAbstractCompeteDemes(world, args) { }
+
+ static const cString GetDescription() { return "No Arguments"; }
+
+ double Fitness(const cDeme& deme) {
+ double eventsKilled = static_cast<double>(deme.GetEventsKilled());
+ double totalEvents = static_cast<double>(deme.GetEventsTotal());
+ double energyRemaining = deme.CalculateTotalEnergy();
+ double initialEnergy = deme.CalculateTotalInitialEnergyResources();
+ double avgEventLifeTime = deme.GetAverageEventLifeTime();
+ double maxEventLifetime = deme.GetMaxEventLifetime();
+ double fitnessOfDeme = ((eventsKilled / totalEvents) + (energyRemaining / initialEnergy) - (avgEventLifeTime / maxEventLifetime) ) / 2.0;
+ return fitnessOfDeme;
+ }
+};
+
/* This Action will check if any demes have met the critera to be replicated
and do so. There are several bases this can be checked on:
@@ -1972,6 +1991,7 @@
/****AbstractCompeteDemes sub-classes****/
action_lib->Register<cAbstractCompeteDemes_AttackKillAndEnergyConserve>("CompeteDemes_AttackKillAndEnergyConserve");
+ action_lib->Register<cAbstractCompeteDemes__AttackKill_EnergyConserve_QuickKill>("CompeteDemes__AttackKill_EnergyConserve_QuickKill");
action_lib->Register<cActionNewTrial>("NewTrial");
action_lib->Register<cActionCompeteOrganisms>("CompeteOrganisms");
Modified: branches/interrupt/source/main/cDeme.cc
===================================================================
--- branches/interrupt/source/main/cDeme.cc 2008-06-26 19:51:35 UTC (rev 2691)
+++ branches/interrupt/source/main/cDeme.cc 2008-06-30 20:30:47 UTC (rev 2692)
@@ -185,6 +185,7 @@
eventCell = event.GetNextEventCellID();
}
event.DeactivateEvent(); //event over
+ averageEventLifetime.Add(event.GetDuration());
}
}
@@ -508,6 +509,8 @@
assert(cell_events.Size() == 0); // not designed to be used with other cell events
assert(m_world->GetConfig().DEMES_MAX_AGE.Get() >= m_total_slots);
+ maxEventLifetime = m_total_events_per_slot_max;
+
int flow_level_increment = (m_total_events_per_slot_max - m_total_events_per_slot_min) / (m_tolal_event_flow_levels-1);
int slot_length = m_world->GetConfig().DEMES_MAX_AGE.Get() / m_total_slots;
Modified: branches/interrupt/source/main/cDeme.h
===================================================================
--- branches/interrupt/source/main/cDeme.h 2008-06-26 19:51:35 UTC (rev 2691)
+++ branches/interrupt/source/main/cDeme.h 2008-06-30 20:30:47 UTC (rev 2692)
@@ -80,6 +80,7 @@
unsigned int eventKillAttempts;
unsigned int eventKillAttemptsThisSlot;
cIntSum averageEventLifetime;
+ int maxEventLifetime;
unsigned int consecutiveSuccessfulEventPeriods;
int sleeping_count; //!< Number of organisms currently sleeping
cDoubleSum energyUsage;
@@ -126,7 +127,7 @@
cDeme() : _id(0), width(0), cur_birth_count(0), last_birth_count(0), cur_org_count(0), last_org_count(0), injected_count(0), birth_count_perslot(0),
_age(0), generation(0), total_org_energy(0.0),
time_used(0), gestation_time(0), cur_normalized_time_used(0.0), last_normalized_time_used(0.0), total_energy_testament(0.0),
- eventsTotal(0), eventsKilled(0), eventsKilledThisSlot(0), eventKillAttempts(0), eventKillAttemptsThisSlot(0),
+ eventsTotal(0), eventsKilled(0), eventsKilledThisSlot(0), eventKillAttempts(0), eventKillAttemptsThisSlot(0), maxEventLifetime(0),
consecutiveSuccessfulEventPeriods(0), sleeping_count(0),
avg_founder_generation(0.0), generations_per_lifetime(0.0),
deme_resource_count(0), m_germline_genotype_id(0) { ; }
@@ -183,6 +184,8 @@
int GetEventKillAttempts() const { return eventKillAttempts; }
int GetEventKillAttemptsThisSlot() const { return eventKillAttemptsThisSlot; }
int GetConsecutiveSuccessfulEventPeriods() const { return consecutiveSuccessfulEventPeriods;}
+ double GetAverageEventLifeTime() const { return averageEventLifetime.Average(); }
+ int GetMaxEventLifetime() const { return maxEventLifetime; }
// -= Germline =-
//! Returns this deme's germline.
More information about the Avida-cvs
mailing list