def get_stats(individuals, end=False): """ Generate the statistics for an evolutionary run. Save statistics to utilities.trackers.stats_list. Print statistics. Save fitness plot information. :param individuals: A population of individuals for which to generate statistics. :param end: Boolean flag for indicating the end of an evolutionary run. :return: Nothing. """ if hasattr(params['FITNESS_FUNCTION'], 'multi_objective'): # Multiple objective optimisation is being used. # Remove fitness stats from the stats dictionary. stats.pop('best_fitness', None) stats.pop('ave_fitness', None) # Update stats. get_moo_stats(individuals, end) else: # Single objective optimisation is being used. get_soo_stats(individuals, end) if params['SAVE_STATE'] and not params['DEBUG'] and \ stats['gen'] % params['SAVE_STATE_STEP'] == 0: # Save the state of the current evolutionary run. create_state(individuals)
def get_stats(individuals, end=False): """ Generate the statistics for an evolutionary run. Save statistics to utilities.trackers.stats_list. Print statistics. Save fitness plot information. :param individuals: A population of individuals for which to generate statistics. :param end: Boolean flag for indicating the end of an evolutionary run. :return: Nothing. """ # Find the Pareto front from the population and convert in a # *pareto_front* object non_dominated, dominated = first_pareto_front(individuals) pf_pop = ParetoFront(non_dominated) # if not trackers.best_ever or pf_pop > trackers.best_ever: # Save best individual in trackers.best_ever. trackers.best_ever = pf_pop if end or params['VERBOSE'] or not params['DEBUG']: # Update all stats. update_stats(individuals, end) # Print statistics if params['VERBOSE'] and not end: print_generation_stats() elif not params['SILENT']: # Print simple display output. perc = stats['gen'] / (params['GENERATIONS'] + 1) * 100 stdout.write("Evolution: %d%% complete\r" % perc) stdout.flush() # Generate test fitness on regression problems if hasattr(params['FITNESS_FUNCTION'], "training_test") and end: trackers.best_ever.training_fitness = copy(trackers.best_ever.fitness) test_pf = [] for ind in trackers.best_ever.pf_solutions: test_pf.append(params['FITNESS_FUNCTION'](ind, dist='test')) trackers.best_ever.test_fitness = TestFitness(test_pf) # params['FITNESS_FUNCTION'](trackers.best_ever, dist='test') trackers.best_ever.fitness = trackers.best_ever.training_fitness # Save stats to list. if params['VERBOSE'] or (not params['DEBUG'] and not end): trackers.stats_list.append(copy(stats)) # Save stats to file. if not params['DEBUG']: if stats['gen'] == 0: save_stats_headers(stats) save_stats_to_file(stats, end) if params['SAVE_ALL']: save_best_ind_to_file(stats, end, stats['gen']) elif params['VERBOSE'] or end: save_best_ind_to_file(stats, end, "best") if end and not params['SILENT']: print_final_stats() if params['SAVE_STATE'] and not params['DEBUG'] and \ stats['gen'] % params['SAVE_STATE_STEP'] == 0: # Save the state of the current evolutionary run. create_state(individuals)