From b89d06386d5305db955b91a63f830e8fd4d48b08 Mon Sep 17 00:00:00 2001 From: evomarc Date: Wed, 7 Feb 2001 05:11:37 +0000 Subject: [PATCH] Added the shuffle(vector) method --- eo/src/eoPop.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/eo/src/eoPop.h b/eo/src/eoPop.h index 076921d3..3634c21e 100644 --- a/eo/src/eoPop.h +++ b/eo/src/eoPop.h @@ -133,6 +133,16 @@ class eoPop: public vector, public eoObject, public eoPersistent std::sort(begin(), end(), greater()); } + // creates a vector pointing to the individuals in descending order + void sort(vector& result) const + { + result.resize(size()); + + std::transform(begin(), end(), result.begin(), Ref()); + + std::sort(result.begin(), result.end(), Cmp()); + } + /** shuffle the population. Use this member to put the population in random order @@ -143,14 +153,15 @@ class eoPop: public vector, public eoObject, public eoPersistent std::random_shuffle(begin(), end(), gen); } - // creates a vector pointing to the individuals in descending order - void sort(vector& result) const + // creates a vector pointing to the individuals in random order + void shuffle(vector& result) const { result.resize(size()); std::transform(begin(), end(), result.begin(), Ref()); - std::sort(result.begin(), result.end(), Cmp()); + UF_random_generator gen; + std::random_shuffle(result.begin(), result.end(), gen); } // returns an iterator to the best individual DOES NOT MOVE ANYBODY