Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Re: JAPH-ing Genetically

by andye (Curate)
on May 23, 2001 at 15:57 UTC ( #82520=note: print w/replies, xml ) Need Help??

in reply to Re: JAPH-ing Genetically
in thread JAPH-ing Genetically

I'd see the problem with that as being the fitness function. One character could make the difference between complete success and complete failure - so how do you evaluate fitness?

If anyone knows an accepted method for this, I'd find it v.interesting.


Replies are listed 'Best First'.
Re: Re: Re: JAPH-ing Genetically
by Anonymous Monk on May 23, 2001 at 17:25 UTC
    You could evaluate $@ for instance if it contains "syntax error" that means DWIM gives up it is a very low fitness, if it contains "operator expected" it is better and if it contains "not defined" better yet. You get the picture?
      Problem is, an individual that generates a syntax error might only be one character different to an individual that prints the required string. Or it might be total rubbish.

      The first should (for this method to work) be fitter than the second, but I don't know a way to quantify that.

      Also, p(syntax error) is very high for constructing a valid Perl string randomly. The chances are that all members of a population would generate syntax errors - at which point they'd all have the same fitness.

      A better approach would be to create a baby language safe (or safer) from syntax errors and eval that. Like maybe just arithmetic operators and numbers.

      Although - it's just occured to me - you'd be on fairly safe ground with a subset of a highly structured language like Logo. And you could evaluate fitness by checking how similar the figure drawn was to your target figure.


        p is not a syntax error (test it) . Or do you mean a string which is a valid program and contains the chars "syntax error"? Then you have misunderstood. I meant "syntax error" in $@ after eval

        In Re (Obfu generator for): Ode for getprotobyname, I randomly generate tr/// patterns, and check if the "just another perl hacker" message can be generated as a result of that transliteration. Perhaps you could try generating such patterns genetically, with the goal function being the number of different characters you cannot generate.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://82520]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2021-10-26 14:02 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (90 votes). Check out past polls.