From c2e1e6436dffe1f0ace456bb6eb802ae923b3d39 Mon Sep 17 00:00:00 2001 From: Vincent Liard <vincent.liard@inria.fr> Date: Thu, 26 Feb 2015 10:50:21 +0100 Subject: [PATCH] un-inline ae_population methods And move them to ae_population.cpp. --- src/libaevol/ae_population.cpp | 310 +++++++++++++++++++++++++++ src/libaevol/ae_population.h | 374 +++------------------------------ 2 files changed, 343 insertions(+), 341 deletions(-) diff --git a/src/libaevol/ae_population.cpp b/src/libaevol/ae_population.cpp index a7fe87732..00beaafdf 100644 --- a/src/libaevol/ae_population.cpp +++ b/src/libaevol/ae_population.cpp @@ -69,6 +69,316 @@ namespace aevol { // # //############################################################################## + + +// ===================================================================== +// Getters' definitions +// ===================================================================== +ae_list<ae_individual*>* ae_population::get_indivs( void ) const +{ + return _indivs; +} + +std::list<ae_individual*> ae_population::get_indivs_std() const { + // return std::list<ae_individual*>(_indivs); + return aelist_to_stdlist(_indivs); +} + +int32_t ae_population::get_nb_indivs( void ) const +{ + return _nb_indivs; +} + +ae_individual* ae_population::get_best( void ) const +{ + return _indivs->get_last()->get_obj(); +} + +/*! + Get the indiv corresponding to the given rank (1 for the worst indiv, POP_SIZE for the best) + + Warning, be sure you call sort_individuals() before using get_indiv_by_rank +*/ +ae_individual* ae_population::get_indiv_by_rank( int32_t rank ) const +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + + for ( int32_t i = 1 ; i < rank ; i++ ) + { + indiv_node = indiv_node->get_next(); + } + + assert( indiv_node->get_obj()->get_rank() == rank ); + + return indiv_node->get_obj(); +} + +ae_jumping_mt* ae_population::get_mut_prng( void ) const +{ + return _mut_prng; +} + +ae_jumping_mt* ae_population::get_stoch_prng( void ) const +{ + return _stoch_prng; +} + +// ===================================================================== +// Setters' definitions +// ===================================================================== +/*void ae_population::set_nb_indivs( int32_t nb_indivs ) +{ + _nb_indivs = nb_indivs; +}*/ + +void ae_population::add_indiv( ae_individual* indiv ) +{ + _indivs->add( indiv ); + _nb_indivs++; +} + + +void ae_population::set_mut_prng( ae_jumping_mt* prng ) +{ + if (_mut_prng != NULL) delete _mut_prng; + _mut_prng = prng; + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_mut_prng( _mut_prng ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_stoch_prng( ae_jumping_mt* prng ) +{ + if (_stoch_prng != NULL) delete _stoch_prng; + _stoch_prng = prng; + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_stoch_prng( _stoch_prng ); + indiv_node = indiv_node->get_next(); + } +} + + +// Mutation rates etc... +void ae_population::set_overall_point_mutation_rate( double point_mutation_rate ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_point_mutation_rate( point_mutation_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_small_insertion_rate( double small_insertion_rate ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_small_insertion_rate( small_insertion_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_small_deletion_rate( double small_deletion_rate ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_small_deletion_rate( small_deletion_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_max_indel_size( int16_t max_indel_size ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_max_indel_size( max_indel_size ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_duplication_rate( double duplication_rate ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_duplication_rate( duplication_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_deletion_rate( double deletion_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_deletion_rate( deletion_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_translocation_rate( double translocation_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_translocation_rate( translocation_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_inversion_rate( double inversion_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_inversion_rate( inversion_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_transfer_ins_rate (double transfer_ins_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_HT_ins_rate( transfer_ins_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_transfer_repl_rate (double transfer_repl_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_HT_repl_rate( transfer_repl_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_neighbourhood_rate( double neighbourhood_rate) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_neighbourhood_rate( neighbourhood_rate ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_duplication_proportion( double duplication_proportion) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_duplication_proportion( duplication_proportion ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_deletion_proportion( double deletion_proportion) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_deletion_proportion( deletion_proportion ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_translocation_proportion( double translocation_proportion) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_translocation_proportion( translocation_proportion ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_overall_inversion_proportion( double inversion_proportion) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_inversion_proportion( inversion_proportion ); + indiv_node = indiv_node->get_next(); + } +} + +void ae_population::set_replication_reports( ae_tree* tree, int32_t num_gener) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual* indiv; + for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) + { + indiv = indiv_node->get_obj(); + indiv->set_replication_report( tree->get_report_by_index( num_gener, indiv->get_id())); + indiv_node = indiv_node->get_next(); + } +} + +// ===================================================================== +// Inline functions' definition +// ===================================================================== +void ae_population::evaluate_individuals( Environment* envir ) +{ + ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); + ae_individual * indiv = NULL; + + while ( indiv_node != NULL ) + { + indiv = indiv_node->get_obj(); + indiv->evaluate( envir ); + indiv->compute_statistical_data(); + + indiv_node = indiv_node->get_next(); + } +} + + // ================================================================= // Definition of static attributes // ================================================================= diff --git a/src/libaevol/ae_population.h b/src/libaevol/ae_population.h index f18aaac03..c073bfdd7 100644 --- a/src/libaevol/ae_population.h +++ b/src/libaevol/ae_population.h @@ -79,53 +79,53 @@ class ae_population // ================================================================= // Accessors: Getters // ================================================================= - inline ae_list<ae_individual*>* get_indivs( void ) const; - inline std::list<ae_individual*> get_indivs_std() const; - inline int32_t get_nb_indivs( void ) const; - inline ae_individual* get_best( void ) const; + ae_list<ae_individual*>* get_indivs( void ) const; + std::list<ae_individual*> get_indivs_std() const; + int32_t get_nb_indivs( void ) const; + ae_individual* get_best( void ) const; ae_individual* get_indiv_by_id( int32_t id ) const; - inline ae_individual* get_indiv_by_rank( int32_t rank ) const; + ae_individual* get_indiv_by_rank( int32_t rank ) const; // PRNGs - inline ae_jumping_mt* get_mut_prng( void ) const; - inline ae_jumping_mt* get_stoch_prng( void ) const; + ae_jumping_mt* get_mut_prng( void ) const; + ae_jumping_mt* get_stoch_prng( void ) const; // Spatial structure - //~ inline double** get_secretion_present( void ) const; - //~ inline double** get_secreted_amount( void ) const; - //~ inline double** get_fitness_metabolic( void ) const; - //~ inline double** get_fitness_total( void ) const; + //~ double** get_secretion_present( void ) const; + //~ double** get_secreted_amount( void ) const; + //~ double** get_fitness_metabolic( void ) const; + //~ double** get_fitness_total( void ) const; // ================================================================= // Accessors: Setters // ================================================================= void set_nb_indivs( int32_t nb_indivs ); - inline void add_indiv( ae_individual* indiv ); + void add_indiv( ae_individual* indiv ); // PRNGs - inline void set_mut_prng( ae_jumping_mt* prng ); - inline void set_stoch_prng( ae_jumping_mt* prng ); + void set_mut_prng( ae_jumping_mt* prng ); + void set_stoch_prng( ae_jumping_mt* prng ); // Mutation rates etc... - inline void set_overall_point_mutation_rate( double point_mutation_rate); - inline void set_overall_small_insertion_rate( double small_insertion_rate); - inline void set_overall_small_deletion_rate( double small_deletion_rate); - inline void set_overall_max_indel_size( int16_t max_indel_size); - - inline void set_overall_duplication_rate( double duplication_rate); - inline void set_overall_deletion_rate( double deletion_rate); - inline void set_overall_translocation_rate( double translocation_rate); - inline void set_overall_inversion_rate( double inversion_rate); - inline void set_overall_neighbourhood_rate( double neighbourhood_rate); - inline void set_overall_duplication_proportion( double duplication_proportion); - inline void set_overall_deletion_proportion( double deletion_proportion); - inline void set_overall_translocation_proportion( double translocation_proportion); - inline void set_overall_inversion_proportion( double inversion_proportion); - inline void set_overall_transfer_ins_rate (double transfer_ins_rate); - inline void set_overall_transfer_repl_rate (double transfer_repl_rate); - - inline void set_replication_reports( ae_tree* tree, int32_t num_gener); + void set_overall_point_mutation_rate( double point_mutation_rate); + void set_overall_small_insertion_rate( double small_insertion_rate); + void set_overall_small_deletion_rate( double small_deletion_rate); + void set_overall_max_indel_size( int16_t max_indel_size); + + void set_overall_duplication_rate( double duplication_rate); + void set_overall_deletion_rate( double deletion_rate); + void set_overall_translocation_rate( double translocation_rate); + void set_overall_inversion_rate( double inversion_rate); + void set_overall_neighbourhood_rate( double neighbourhood_rate); + void set_overall_duplication_proportion( double duplication_proportion); + void set_overall_deletion_proportion( double deletion_proportion); + void set_overall_translocation_proportion( double translocation_proportion); + void set_overall_inversion_proportion( double inversion_proportion); + void set_overall_transfer_ins_rate (double transfer_ins_rate); + void set_overall_transfer_repl_rate (double transfer_repl_rate); + + void set_replication_reports( ae_tree* tree, int32_t num_gener); // ================================================================= // Public Methods @@ -139,7 +139,7 @@ class ae_population //~ ae_individual* calculate_local_competition ( int16_t x, int16_t y ); ae_individual* calculate_GU_transfer ( int16_t x, int16_t y ); void do_random_migrations ( void ); - inline void evaluate_individuals( Environment* envir ); + void evaluate_individuals( Environment* envir ); void sort_individuals( void ); void update_best( void ); @@ -203,313 +203,5 @@ class ae_population std::list<ae_individual> std_indivs; }; - -// ===================================================================== -// Getters' definitions -// ===================================================================== -inline ae_list<ae_individual*>* ae_population::get_indivs( void ) const -{ - return _indivs; -} - -inline std::list<ae_individual*> ae_population::get_indivs_std() const { - // return std::list<ae_individual*>(_indivs); - return aelist_to_stdlist(_indivs); -} - -inline int32_t ae_population::get_nb_indivs( void ) const -{ - return _nb_indivs; -} - -inline ae_individual* ae_population::get_best( void ) const -{ - return _indivs->get_last()->get_obj(); -} - -/*! - Get the indiv corresponding to the given rank (1 for the worst indiv, POP_SIZE for the best) - - Warning, be sure you call sort_individuals() before using get_indiv_by_rank -*/ -inline ae_individual* ae_population::get_indiv_by_rank( int32_t rank ) const -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - - for ( int32_t i = 1 ; i < rank ; i++ ) - { - indiv_node = indiv_node->get_next(); - } - - assert( indiv_node->get_obj()->get_rank() == rank ); - - return indiv_node->get_obj(); -} - -inline ae_jumping_mt* ae_population::get_mut_prng( void ) const -{ - return _mut_prng; -} - -inline ae_jumping_mt* ae_population::get_stoch_prng( void ) const -{ - return _stoch_prng; -} - -// ===================================================================== -// Setters' definitions -// ===================================================================== -/*inline void ae_population::set_nb_indivs( int32_t nb_indivs ) -{ - _nb_indivs = nb_indivs; -}*/ - -inline void ae_population::add_indiv( ae_individual* indiv ) -{ - _indivs->add( indiv ); - _nb_indivs++; -} - - -inline void ae_population::set_mut_prng( ae_jumping_mt* prng ) -{ - if (_mut_prng != NULL) delete _mut_prng; - _mut_prng = prng; - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_mut_prng( _mut_prng ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_stoch_prng( ae_jumping_mt* prng ) -{ - if (_stoch_prng != NULL) delete _stoch_prng; - _stoch_prng = prng; - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_stoch_prng( _stoch_prng ); - indiv_node = indiv_node->get_next(); - } -} - - -// Mutation rates etc... -inline void ae_population::set_overall_point_mutation_rate( double point_mutation_rate ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_point_mutation_rate( point_mutation_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_small_insertion_rate( double small_insertion_rate ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_small_insertion_rate( small_insertion_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_small_deletion_rate( double small_deletion_rate ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_small_deletion_rate( small_deletion_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_max_indel_size( int16_t max_indel_size ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_max_indel_size( max_indel_size ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_duplication_rate( double duplication_rate ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_duplication_rate( duplication_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_deletion_rate( double deletion_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_deletion_rate( deletion_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_translocation_rate( double translocation_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_translocation_rate( translocation_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_inversion_rate( double inversion_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_inversion_rate( inversion_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_transfer_ins_rate (double transfer_ins_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_HT_ins_rate( transfer_ins_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_transfer_repl_rate (double transfer_repl_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_HT_repl_rate( transfer_repl_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_neighbourhood_rate( double neighbourhood_rate) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_neighbourhood_rate( neighbourhood_rate ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_duplication_proportion( double duplication_proportion) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_duplication_proportion( duplication_proportion ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_deletion_proportion( double deletion_proportion) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_deletion_proportion( deletion_proportion ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_translocation_proportion( double translocation_proportion) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_translocation_proportion( translocation_proportion ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_overall_inversion_proportion( double inversion_proportion) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_inversion_proportion( inversion_proportion ); - indiv_node = indiv_node->get_next(); - } -} - -inline void ae_population::set_replication_reports( ae_tree* tree, int32_t num_gener) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual* indiv; - for ( int32_t i = 0 ; i < _nb_indivs ; i++ ) - { - indiv = indiv_node->get_obj(); - indiv->set_replication_report( tree->get_report_by_index( num_gener, indiv->get_id())); - indiv_node = indiv_node->get_next(); - } -} - -// ===================================================================== -// Inline functions' definition -// ===================================================================== -inline void ae_population::evaluate_individuals( Environment* envir ) -{ - ae_list_node<ae_individual*>* indiv_node = _indivs->get_first(); - ae_individual * indiv = NULL; - - while ( indiv_node != NULL ) - { - indiv = indiv_node->get_obj(); - indiv->evaluate( envir ); - indiv->compute_statistical_data(); - - indiv_node = indiv_node->get_next(); - } -} } // namespace aevol - #endif // __AE_POPULATION_H__ -- GitLab