On Wed, Nov 14, 2012 at 04:38:47PM -0800, Phil Steitz wrote:
> On 11/14/12 4:05 PM, Gilles Sadowski wrote:
> > Hi.
> >
> > On Wed, Nov 14, 2012 at 08:09:52PM -0000, t...@apache.org wrote:
> >> Author: tn
> >> Date: Wed Nov 14 20:09:51 2012
> >> New Revision: 1409352
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1409352&view=rev
> >> Log:
> >> Reduce sleep time in unit test to prevent possible race condition.
> >>
> >> Modified:
> >>     
> >> commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/FixedElapsedTimeTest.java
> >>
> >> Modified: 
> >> commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/FixedElapsedTimeTest.java
> >> URL: 
> >> http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/FixedElapsedTimeTest.java?rev=1409352&r1=1409351&r2=1409352&view=diff
> >> ==============================================================================
> >> --- 
> >> commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/FixedElapsedTimeTest.java
> >>  (original)
> >> +++ 
> >> commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/FixedElapsedTimeTest.java
> >>  Wed Nov 14 20:09:51 2012
> >> @@ -59,7 +59,7 @@ public class FixedElapsedTimeTest {
> >>  
> >>          while (!tec.isSatisfied(pop)) {
> >>              try {
> >> -                Thread.sleep(500);
> >> +                Thread.sleep(50);
> >>              } catch (InterruptedException e) {
> >>                  // ignore
> >>              }
> >>
> > I have never read this part of CM yet. But just this makes me think that the
> > "FixedElapsedTime" class should not exist in CM. Indeed, using it makes the
> > algorithm behave differently at each run!
> > I don't deny the usefulness of allotting some amount of time for a
> > computation, but this has absolutely nothing to do with genetic algorithms
> > (nor any others).
> > CM can help in implementing this high-level requirement, by allowing
> > <some search algorithm> to be restarted with the result of a previous run
> > but IMHO it is a bad idea to have the various CM codes directly implement
> > that functionality.
> 
> I disagree.  This looks like a useful feature to me, contributed by
> a user.  GA algorithms are by nature iterative with run-time
> evaluated StoppingConditions.  FixedElapsedTime is a reasonable
> stopping condition supported by other GA frameworks.  The feature is
> well-documented, so users know exactly what it does.  In particular,
> the number of generations is not fixed, so using this
> StoppingCondition does not guarantee the same results on successive
> runs with the same input parameters.  GAs are often
> non-deterministic for other reasons (randomness in mutation), so
> this is not a practical issue for those choosing to use the feature.
> 

This one is really not worth a fight, but something which you have to adapt
depending on the machine on which you run your program can only be qualified
as a toy feature (IMHO): Unless we talk about real-time processing (which GA
are not really suited for...), some fixed amount of time can be too small
(solution not found on a "slow" machine) or too large (solution found long
before the end of the alloted time slot, but the algo keeps the CPU busy).

As for "non-deterministic", we had several discussions on this ML about
being able to control the pseudo-random behaviour of the algorithms, by
using a fixed seed. This is the same here, should you use the same seed,
the search should go through the same steps. But in this case, it is
_impossible_ to reproduce the same result since the number of generations
will depend on how busy the machine is with other processes.


Gilles

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to