MCPcopy Create free account
hub / github.com/devosoft/avida / ProcessInitialize

Method ProcessInitialize

avida-core/source/analyze/cMutationalNeighborhood.cc:163–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

161
162
163void cMutationalNeighborhood::ProcessInitialize(cAvidaContext& ctx)
164{
165 // Generate base information
166 cTestCPU* testcpu = m_world->GetHardwareManager().CreateTestCPU(ctx);
167 cCPUTestInfo test_info;
168 testcpu->TestGenome(ctx, test_info, m_base_genome);
169
170 cPhenotype& phenotype = test_info.GetColonyOrganism()->GetPhenotype();
171 m_base_fitness = test_info.GetColonyFitness();
172 m_base_merit = phenotype.GetMerit().GetDouble();
173 m_base_gestation = phenotype.GetGestationTime();
174 m_base_tasks = phenotype.GetLastTaskCount();
175
176 m_neut_min = m_base_fitness * nHardware::FITNESS_NEUTRAL_MIN;
177 m_neut_max = m_base_fitness * nHardware::FITNESS_NEUTRAL_MAX;
178
179 // If invalid target supplied, set to the last task
180 if (m_target >= m_base_tasks.GetSize() || m_target < 0) m_target = m_base_tasks.GetSize() - 1;
181
182 delete testcpu;
183
184 // Setup state to begin processing
185 m_onestep_point.ResizeClear(m_base_genome_size);
186 m_onestep_insert.ResizeClear(m_base_genome_size + 1);
187 m_onestep_delete.ResizeClear(m_base_genome_size);
188
189 m_twostep_point.ResizeClear(m_base_genome_size);
190 m_twostep_insert.ResizeClear(m_base_genome_size + 1);
191 m_twostep_delete.ResizeClear(m_base_genome_size);
192
193 m_insert_point.ResizeClear(m_base_genome_size + 1);
194 m_insert_delete.ResizeClear(m_base_genome_size + 1);
195 m_delete_point.ResizeClear(m_base_genome_size);
196
197 m_fitness_point.ResizeClear(m_base_genome_size, m_inst_set.GetSize());
198 m_fitness_insert.ResizeClear(m_base_genome_size + 1, m_inst_set.GetSize());
199 m_fitness_delete.ResizeClear(m_base_genome_size, 1);
200
201 m_cur_site = 0;
202 m_completed = 0;
203 m_initialized = true;
204
205 // Unlock internal mutex (was locked on Process() entrance)
206 // - will allow workers to begin processing if job queue already active
207 m_mutex.Unlock();
208
209 // Load enough jobs to process all sites
210 cAnalyzeJobQueue& jobqueue = m_world->GetAnalyze().GetJobQueue();
211 for (int i = 0; i < m_base_genome_size; i++)
212 jobqueue.AddJob(new tAnalyzeJob<cMutationalNeighborhood>(this, &cMutationalNeighborhood::Process));
213
214 jobqueue.Start();
215}
216
217
218void cMutationalNeighborhood::ProcessOneStepPoint(cAvidaContext& ctx, cTestCPU* testcpu, cCPUTestInfo& test_info, int cur_site)

Callers

nothing calls this directly

Calls 12

CreateTestCPUMethod · 0.80
TestGenomeMethod · 0.80
GetColonyOrganismMethod · 0.80
UnlockMethod · 0.80
StartMethod · 0.80
GetColonyFitnessMethod · 0.45
GetDoubleMethod · 0.45
GetMeritMethod · 0.45
GetGestationTimeMethod · 0.45
GetSizeMethod · 0.45
ResizeClearMethod · 0.45
AddJobMethod · 0.45

Tested by

no test coverage detected