From 3f5fdb3bbfbba54489986f116a65863a7b6d996d Mon Sep 17 00:00:00 2001 From: swaits Date: Fri, 20 Apr 2007 02:08:17 +0000 Subject: [PATCH] tweaked default min/max and output in DE commenting+tweaks to polyapprox.cpp --- de.inl | 8 ++++---- polyapprox.cpp | 26 ++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/de.inl b/de.inl index 72dda58..e60735f 100644 --- a/de.inl +++ b/de.inl @@ -17,7 +17,7 @@ template const double DE::Engine::DEFAULTCROSSOVER = 1.0; template -const double DE::Engine::DEFAULTRANGE= 10.0; +const double DE::Engine::DEFAULTRANGE= 100.0; template const double DE::Engine::BIGDOUBLE = 1.79e308; // close to max double @@ -164,7 +164,7 @@ inline bool DE::Engine::Solve(unsigned int maxgenerations) for (int candidate=0;candidate trial; - MakeTrial_randtobest1bin(candidate,trial); + MakeTrial_randtobest1exp(candidate,trial); double trialfitness = CalculateError(trial,success); @@ -193,10 +193,10 @@ inline bool DE::Engine::Solve(unsigned int maxgenerations) template inline void DE::Engine::Dump(const double& fitness, DE::Vector& individual) const { - printf(" fitness = %60.30f\n",fitness); + printf(" fitness = %24.16f\n",fitness); for (unsigned int i=0;i unsigned int test_count = 0; // accumulate squared error - for ( double i=-1.5;i<=1.5;i+=0.01 ) + for ( double i=-7.9287;i<=7.9287;i+=0.001 ) { // test double test = CalculatePolynomial(i,NUM_COEFFICIENTS,testcase); @@ -78,6 +78,24 @@ class PolySearch: public DE::Engine int main() { PolySearch de; + + // setup, adjust from default range + de.SetRange(-0.1,0.1); + + // create new population with adjusted range + de.Reset(); + + // run the DE de.Solve(1000); + + // output winner in polynomial form + printf("Best Polynomial Found\n=====================\ny ="); + for (int i=0;i