From 1eaeece266182bbcdca46bb486aeb1eb1e97d350 Mon Sep 17 00:00:00 2001 From: gustavo Date: Mon, 15 Feb 1999 11:55:59 +0000 Subject: [PATCH] doing things work on VC++ --- eo/src/eoBreeder.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/eo/src/eoBreeder.h b/eo/src/eoBreeder.h index b2191685..d457d3c3 100644 --- a/eo/src/eoBreeder.h +++ b/eo/src/eoBreeder.h @@ -38,6 +38,8 @@ template class eoBreeder: public eoTransform */ void operator()(eoPop& pop) { + unsigned i; + for (Operators::const_iterator op = operators.begin(); op != operators.end(); op++) @@ -46,16 +48,15 @@ template class eoBreeder: public eoTransform case unary: { eoMonOp& monop = (eoMonOp&)*(op->second); - for (unsigned i = 0; i < pop.size(); i++) + for (i = 0; i < pop.size(); i++) if (uniform() < op->first) monop(pop[i]); break; } case binary: - { - vector pos(pop.size(), 1); - pos[0] = 0; - partial_sum(pos.begin(), pos.end(), pos.begin()); + { + vector pos(pop.size()); + iota(pos.begin(), pos.end(), 0); random_shuffle(pos.begin(), pos.end()); cout << "pos = "; @@ -64,7 +65,7 @@ template class eoBreeder: public eoTransform cout << endl; eoBinOp& binop = (eoBinOp&)*(op->second); - for (unsigned i = 1; i < pop.size(); i += 2) + for (i = 1; i < pop.size(); i += 2) if (uniform() < op->first) binop(pop[pos[i - 1]], pop[pos[i]]); break;