Loading ...
Sorry, an error occurred while loading the content.

RE: [neat] Re: Updated experiment status page

Expand Messages
  • John Arrowwood
    ... Thanks! :) ... I ve added code that will track when an improvement is made. I ll have to manually reduce the current (bogus) maximum in order to make use
    Message 1 of 3 , Jul 1, 2004
    • 0 Attachment
      In one e-mail, Ken wrote:

      >Hey John, this is a really cool experiment and setup.

      Thanks! :)

      >I wonder, can you also give the # of generations since last improvement?
      >That would be interesting.

      I've added code that will track when an improvement is made. I'll have to
      manually reduce the current (bogus) maximum in order to make use of it,
      though. The current maximum was before I fixed a bug in the fitness
      evaluator that was converting errors to integers when it wasn't supposed to.
      Oops...

      >Also, a fitness over generations graph would be great though it would take
      >extra effort.

      I've added code to track the fitness from generation to generation so I can
      generate the graph. And I've downloaded a perl module for generating the
      graph itself. Once I have enough data to actually graph something, I'll
      build that.

      And in another e-mail, Ken wrote:

      >Can you explain a little about the graph...

      Sure. Each gray vertical bar is one fitness value. Height represents
      relative fitness. The shortest bar (1 pixel) represents the worst fitness
      of any network in the population, and the top (200) represents the best
      fitness in the population. The networks are grouped by topology, in the
      order in which they were created (older topologies first). The wider,
      darker bar represents the average for all the members of the topology
      (species).

      Note how the graph is mostly flat near the top except for a few scattered
      exceptions? That is an indicator that something isn't quite right...most of
      the networks have nearly the same fitness, but a few are WILDLY bad. Those
      exceptions artificially increase the dynamic range of the graph, hiding the
      real dynamic range of the results. My guess as to where those bad networks
      come from is the min/max weight values used when creating all-new weights,
      as opposed to minor tweaks. It would create a new weight between min and
      max. But min/max might be way off from what is actually appropriate,
      because once min/max goes up, it never goes back down. So I changed that...
      I re-calculate the min/max weight values with each generation based on
      actual min/max connection weights. And I only look at the connections of
      those networks that scored better than average for their topology.

      And that's the other thing I added: Before, there was a chance that a
      really unfit network might breed. No longer. I now only include networks
      that are higher than the average for consideration for breeding.

      The hope is that between those two changes, the dynamic range might actually
      scale back a bit so we can actually see the variance between the specimens.
      If not, then I'll probably choose a different graph layout.

      >I think it would be great to have a
      >graph of generational average fitnesses, or better max fitnesses.

      I figured I'd do a combination of the two. Typical non-peak fitnesses in
      one color, new max values in another color that makes them stand out, so you
      can see whenever it makes a forward motion. But at this point, it's not
      making much progress. It's still in the 'not much better than random'
      stage. It'll take some time for the random fluctuations in fitness to keep
      from making it look like it is improving, so that current topologies die
      out.
    Your message has been successfully submitted and would be delivered to recipients shortly.