summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/explicitsimulation.cpp8
-rw-r--r--src/explicitsimulation.h3
2 files changed, 8 insertions, 3 deletions
diff --git a/src/explicitsimulation.cpp b/src/explicitsimulation.cpp
index 98df0b0..95b721b 100644
--- a/src/explicitsimulation.cpp
+++ b/src/explicitsimulation.cpp
@@ -13,12 +13,13 @@ using namespace Bu;
13 13
14Genetic::ExplicitSimulation::ExplicitSimulation( Genetic::Operator *pOper, 14Genetic::ExplicitSimulation::ExplicitSimulation( Genetic::Operator *pOper,
15 Genetic::FitnessFunction *pFunc, int iThreads, int iPopSize, 15 Genetic::FitnessFunction *pFunc, int iThreads, int iPopSize,
16 float fKeep, float fRandom, bool bKeepBest ) : 16 float fKeep, float fRandom, bool bKeepBest, bool bRecalcSurvivors ) :
17 pOper( pOper ), 17 pOper( pOper ),
18 iPopSize( iPopSize ), 18 iPopSize( iPopSize ),
19 fKeep( fKeep ), 19 fKeep( fKeep ),
20 fRandom( fRandom ), 20 fRandom( fRandom ),
21 bKeepBest( bKeepBest ), 21 bKeepBest( bKeepBest ),
22 bRecalcSurvivors( bRecalcSurvivors ),
22 bRunning( true ) 23 bRunning( true )
23{ 24{
24 for( int j = 0; j < iPopSize; j++ ) 25 for( int j = 0; j < iPopSize; j++ )
@@ -102,7 +103,10 @@ void Genetic::ExplicitSimulation::timestep()
102 103
103 // Refill the population 104 // Refill the population
104 mFitness.lock(); 105 mFitness.lock();
105 hFitness = hTempFitness; 106 if( bRecalcSurvivors )
107 hFitness.clear();
108 else
109 hFitness = hTempFitness;
106 mFitness.unlock(); 110 mFitness.unlock();
107 xPop.clear(); 111 xPop.clear();
108 xPop.timestep(); 112 xPop.timestep();
diff --git a/src/explicitsimulation.h b/src/explicitsimulation.h
index e71b489..78cb904 100644
--- a/src/explicitsimulation.h
+++ b/src/explicitsimulation.h
@@ -18,7 +18,7 @@ namespace Genetic
18 public: 18 public:
19 ExplicitSimulation( Operator *pOper, FitnessFunction *pFunc, 19 ExplicitSimulation( Operator *pOper, FitnessFunction *pFunc,
20 int iThreads, int iPopSize, float fKeep, float fRandom, 20 int iThreads, int iPopSize, float fKeep, float fRandom,
21 bool bKeepBest=true ); 21 bool bKeepBest=true, bool bRecalcSurvivors=false );
22 virtual ~ExplicitSimulation(); 22 virtual ~ExplicitSimulation();
23 23
24 void timestep(); 24 void timestep();
@@ -47,6 +47,7 @@ namespace Genetic
47 float fKeep; 47 float fKeep;
48 float fRandom; 48 float fRandom;
49 bool bKeepBest; 49 bool bKeepBest;
50 bool bRecalcSurvivors;
50 typedef Bu::Hash<Genetic::PhenotypeId, double> FitnessHash; 51 typedef Bu::Hash<Genetic::PhenotypeId, double> FitnessHash;
51 FitnessHash hFitness; 52 FitnessHash hFitness;
52 double dMinFitness; 53 double dMinFitness;