doing things work on VC++

This commit is contained in:
gustavo 1999-02-15 11:55:59 +00:00
commit 1eaeece266

View file

@ -38,6 +38,8 @@ template<class Chrom> class eoBreeder: public eoTransform<Chrom>
*/ */
void operator()(eoPop<Chrom>& pop) void operator()(eoPop<Chrom>& pop)
{ {
unsigned i;
for (Operators::const_iterator op = operators.begin(); for (Operators::const_iterator op = operators.begin();
op != operators.end(); op != operators.end();
op++) op++)
@ -46,16 +48,15 @@ template<class Chrom> class eoBreeder: public eoTransform<Chrom>
case unary: case unary:
{ {
eoMonOp<Chrom>& monop = (eoMonOp<Chrom>&)*(op->second); eoMonOp<Chrom>& monop = (eoMonOp<Chrom>&)*(op->second);
for (unsigned i = 0; i < pop.size(); i++) for (i = 0; i < pop.size(); i++)
if (uniform() < op->first) if (uniform() < op->first)
monop(pop[i]); monop(pop[i]);
break; break;
} }
case binary: case binary:
{ {
vector<unsigned> pos(pop.size(), 1); vector<unsigned> pos(pop.size());
pos[0] = 0; iota(pos.begin(), pos.end(), 0);
partial_sum(pos.begin(), pos.end(), pos.begin());
random_shuffle(pos.begin(), pos.end()); random_shuffle(pos.begin(), pos.end());
cout << "pos = "; cout << "pos = ";
@ -64,7 +65,7 @@ template<class Chrom> class eoBreeder: public eoTransform<Chrom>
cout << endl; cout << endl;
eoBinOp<Chrom>& binop = (eoBinOp<Chrom>&)*(op->second); eoBinOp<Chrom>& binop = (eoBinOp<Chrom>&)*(op->second);
for (unsigned i = 1; i < pop.size(); i += 2) for (i = 1; i < pop.size(); i += 2)
if (uniform() < op->first) if (uniform() < op->first)
binop(pop[pos[i - 1]], pop[pos[i]]); binop(pop[pos[i - 1]], pop[pos[i]]);
break; break;