From e0076740f809c0b3e4dd0e43874d05487889d465 Mon Sep 17 00:00:00 2001 From: evomarc Date: Tue, 5 Dec 2000 05:22:55 +0000 Subject: [PATCH] Added virtual and const keywords all around - as I tried to use a derived class for adaptive rates (see eoDynProportionalCombinedOp.h, at the moment in the tutorial) --- eo/src/eoProportionalCombinedOp.h | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/eo/src/eoProportionalCombinedOp.h b/eo/src/eoProportionalCombinedOp.h index 2c40393d..1cb8daa1 100644 --- a/eo/src/eoProportionalCombinedOp.h +++ b/eo/src/eoProportionalCombinedOp.h @@ -53,7 +53,7 @@ class eoPropCombinedMonOp: public eoMonOp { public: /// Ctor - eoPropCombinedMonOp(eoMonOp & _first, double _rate) + eoPropCombinedMonOp(eoMonOp & _first, const double _rate) { ops.push_back(&_first); rates.push_back(_rate); @@ -61,7 +61,7 @@ public: virtual string className() const { return "eoPropCombinedMonOp"; } -void add(eoMonOp & _op, double _rate, bool _verbose=false) +virtual void add(eoMonOp & _op, const double _rate, bool _verbose=false) { ops.push_back(&_op); rates.push_back(_rate); @@ -78,17 +78,18 @@ void add(eoMonOp & _op, double _rate, bool _verbose=false) } } - void operator()(EOT & _indi) + virtual void operator()(EOT & _indi) { unsigned what = rng.roulette_wheel(rates); // choose one op (*ops[what])(_indi); // apply it } -private: +protected: std::vector*> ops; std::vector rates; }; + /** COmbined Binary genetic operator: * operator() has two operands, only the first one can be modified */ @@ -97,7 +98,7 @@ class eoPropCombinedBinOp: public eoBinOp { public: /// Ctor - eoPropCombinedBinOp(eoBinOp & _first, double _rate) + eoPropCombinedBinOp(eoBinOp & _first, const double _rate) { ops.push_back(&_first); rates.push_back(_rate); @@ -105,7 +106,7 @@ public: virtual string className() const { return "eoPropCombinedBinOp"; } -void add(eoBinOp & _op, double _rate, bool _verbose=false) +virtual void add(eoBinOp & _op, const double _rate, bool _verbose=false) { ops.push_back(&_op); rates.push_back(_rate); @@ -122,7 +123,7 @@ void add(eoBinOp & _op, double _rate, bool _verbose=false) } } - void operator()(EOT & _indi1, const EOT & _indi2) + virtual void operator()(EOT & _indi1, const EOT & _indi2) { unsigned what = rng.roulette_wheel(rates); // choose one op index (*ops[what])(_indi1, _indi2); // apply it @@ -144,7 +145,7 @@ class eoPropCombinedQuadOp: public eoQuadraticOp { public: /// Ctor - eoPropCombinedQuadOp(eoQuadraticOp & _first, double _rate) + eoPropCombinedQuadOp(eoQuadraticOp & _first, const double _rate) { ops.push_back(&_first); rates.push_back(_rate); @@ -152,7 +153,7 @@ public: virtual string className() const { return "eoPropCombinedQuadOp"; } -void add(eoQuadraticOp & _op, double _rate, bool _verbose=false) +virtual void add(eoQuadraticOp & _op, const double _rate, bool _verbose=false) { ops.push_back(&_op); rates.push_back(_rate); @@ -169,7 +170,7 @@ void add(eoQuadraticOp & _op, double _rate, bool _verbose=false) } } - void operator()(EOT & _indi1, EOT & _indi2) + virtual void operator()(EOT & _indi1, EOT & _indi2) { unsigned what = rng.roulette_wheel(rates); // choose one op index (*ops[what])(_indi1, _indi2); // apply it