From 2e43f4743ae43ddf096001647c2aeb3f3d1aed10 Mon Sep 17 00:00:00 2001 From: Johann Dreo Date: Wed, 8 Sep 2010 12:14:15 +0200 Subject: [PATCH] bounder on uniform distribution that can handle different bounds on several dimensions --- src/doBounderUniform.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/doBounderUniform.h diff --git a/src/doBounderUniform.h b/src/doBounderUniform.h new file mode 100644 index 000000000..9fac7dac3 --- /dev/null +++ b/src/doBounderUniform.h @@ -0,0 +1,35 @@ +// (c) Thales group, 2010 +/* + Authors: + Johann Dreo +*/ + +#ifndef _doBounderUniform_h +#define _doBounderUniform_h + +#include "doBounder.h" + +template < typename EOT > +class doBounderUniform : public doBounder< EOT > +{ +public: + doBounderUniform( EOT min, EOT max ) + : doBounder< EOT >( min, max ) + {} + + void operator()( EOT& sol ) + { + unsigned int size = sol.size(); + assert(size > 0); + + for (unsigned int d = 0; d < size; ++d) { + + if ( sol[d] < this->min()[d] || sol[d] > this->max()[d]) { + // use EO's global "rng" + sol[d] = rng.uniform( this->min()[d], this->max()[d] ); + } + } // for d in size + } +}; + +#endif // !_doBounderUniform_h