@@ -21,6 +21,7 @@ gomeaIMS::gomeaIMS(Config *config_)
2121 problemInstance = config->fitness ;
2222 problemInstance->maximum_number_of_evaluations = config->maximumNumberOfEvaluations ;
2323 problemInstance->maximum_number_of_seconds = config->maximumNumberOfSeconds ;
24+ problemInstance->output_frequency = config->output_frequency ;
2425 if ( config->fix_seed )
2526 utils::initializeRandomNumberGenerator (config->randomSeed );
2627 else
@@ -132,7 +133,8 @@ void gomeaIMS::runGeneration( int GOMEAIndex )
132133
133134 GOMEAs[GOMEAIndex]->numberOfGenerations ++;
134135
135- writeStatistics ( GOMEAIndex );
136+ if ( config->output_frequency == GEN )
137+ writeStatistics ( GOMEAIndex );
136138}
137139
138140bool gomeaIMS::checkTermination ()
@@ -216,12 +218,13 @@ void gomeaIMS::initializeNewGOMEA()
216218 Population *newPopulation = NULL ;
217219
218220 if (numberOfGOMEAs == 0 )
219- newPopulation = new Population (config, problemInstance, sharedInformationInstance, numberOfGOMEAs, basePopulationSize);
221+ newPopulation = new Population (config, &output, problemInstance, sharedInformationInstance, numberOfGOMEAs, basePopulationSize);
220222 else
221- newPopulation = new Population (config, problemInstance, sharedInformationInstance, numberOfGOMEAs, 2 * GOMEAs[numberOfGOMEAs-1 ]->populationSize , GOMEAs[0 ]->FOSInstance );
222-
223+ newPopulation = new Population (config, &output, problemInstance, sharedInformationInstance, numberOfGOMEAs, 2 * GOMEAs[numberOfGOMEAs-1 ]->populationSize , GOMEAs[0 ]->FOSInstance );
223224 GOMEAs.push_back (newPopulation);
224225 numberOfGOMEAs++;
226+
227+ writeStatistics ( numberOfGOMEAs-1 );
225228}
226229
227230void gomeaIMS::generationalStepAllGOMEAs ()
@@ -261,6 +264,9 @@ void gomeaIMS::GOMEAGenerationalStepAllGOMEAsRecursiveFold(int GOMEAIndexSmalles
261264 for (GOMEAIndex = GOMEAIndexSmallest; GOMEAIndex < GOMEAIndexBiggest; GOMEAIndex++)
262265 GOMEAGenerationalStepAllGOMEAsRecursiveFold (GOMEAIndexSmallest, GOMEAIndex);
263266 }
267+
268+ if ( config->output_frequency == IMS_GEN )
269+ writeStatistics ( GOMEAIndex );
264270}
265271
266272bool gomeaIMS::checkTerminationGOMEA (int GOMEAIndex)
@@ -308,39 +314,7 @@ void gomeaIMS::writeStatistics( int population_index, bool is_final )
308314 // GOMEA in question has terminated already - no statistics available to save.
309315 return ;
310316 }
311-
312- assert ( sharedInformationInstance != NULL );
313- int key = numberOfStatisticsWrites;
314- double evals = problemInstance->number_of_evaluations ;
315- double elapsed_time = utils::getElapsedTimeSinceStartSeconds ();
316- double eval_time = utils::getTimer (" eval_time" );
317- // double elitist_evals = sharedInformationInstance->elitistSolutionHittingTimeEvaluations;
318- // double time_s = sharedInformationInstance->elitistSolutionHittingTimeMilliseconds/1000.0;
319- double best_fitness = sharedInformationInstance->elitistFitness ;
320- output.addGenerationalMetricValue (" generation" ,key,(int )GOMEAs[population_index]->numberOfGenerations );
321- output.addGenerationalMetricValue (" evaluations" ,key,evals);
322- // output.addMetricValue("elitist_hitting_evaluations",key,elitist_evals);
323- output.addGenerationalMetricValue (" time" ,key,elapsed_time);
324- output.addGenerationalMetricValue (" eval_time" ,key,eval_time);
325- output.addGenerationalMetricValue (" population_index" ,key,population_index);
326- output.addGenerationalMetricValue (" population_size" ,key,(int )GOMEAs[population_index]->populationSize );
327- output.addGenerationalMetricValue (" best_obj_val" ,key,sharedInformationInstance->elitistFitness );
328- output.addGenerationalMetricValue (" best_cons_val" ,key,sharedInformationInstance->elitistConstraintValue );
329- if ( config->generational_solution )
330- output.addGenerationalMetricValue (" best_solution" ,key,sharedInformationInstance->elitist .variablesToString ());
331- // output.addMetricValue("obj_val_avg",key,population_objective_avg);
332- // output.addMetricValue("obj_val_var",key,population_objective_var);
333-
334- if ( is_final ){
335- output.addFinalMetricValue (" evaluations" ,evals);
336- output.addFinalMetricValue (" time" ,elapsed_time);
337- output.addFinalMetricValue (" eval_time" ,eval_time);
338- output.addFinalMetricValue (" best_solution" ,sharedInformationInstance->elitist .variablesToString ());
339- output.addFinalMetricValue (" best_obj_val" ,sharedInformationInstance->elitistFitness );
340- output.addFinalMetricValue (" best_cons_val" ,sharedInformationInstance->elitistConstraintValue );
341- }
342-
343- numberOfStatisticsWrites++;
317+ GOMEAs[population_index]->writeStatistics (is_final);
344318}
345319
346320
0 commit comments