On Jul 24, 2005, at 12:32 PM, Steve Butcher (Steve-O) wrote:
> I looked over tutorial4 which is a simple regression on:
> x*x*y + x*y + y
> Now, if I try to use:
> x^4 + x^3 + x^2 + x
tutorial4 uses this value only for example purposes. Try
ec/app/regression/noerc.params to get the Koza function you're hoping
for (with the appropriate function set).
> 1) Is this typical? Using that function set, is the quartic difficult
> to find? If I use just X, +, *, I get results as quickly as tutorial4
> but that seems like stacking the deck. I only have to add - to the
> function set to make the problem so far unsolved.
Quartic may be one in five or one in ten.
> 2) What functions need to be protected in Java that didn't need to be
> protected in LISP or need additional protections? What protections
> are reasonable?
Java's math functions have the same protection requirements as Lisp's
functions. But even so there are certain ways of getting NaN anyway.
For example, if you used an expression which produces infinity, and
then ran that through sin(). So you have to check for NaN anyway.
> Initial investigation suggests that Math.exp() goes to infinity very
> quickly...as soon as Math.exp( 1000). What would be a reasonable
> "protection" on exp? But I'm not sure what would be giving me a NaN
> result. cos and sin should be defined over everything (although my
> trig is a bit rusty).
The simpler solution is to set NaN and infinity to very bad function
sets. They tend to get weeded out rapidly.