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

Re: [neat] Hello & a few questions on implementation

Expand Messages
  • Wesley Tansey
    Colin-- Is the acyclic network supposed to be ready? I m working on a project and initially we were going to use acyclic networks to make things simpler, but
    Message 1 of 7 , Dec 1, 2011
    • 0 Attachment
      Colin-- Is the acyclic network supposed to be ready? I'm working on a project and initially we were going to use acyclic networks to make things simpler, but when we tried activating it, it crashed. Switching to fast cyclic fixed the issue, so we have gone with that since. I just assumed that acyclic was still a work in progress.

      Ben-- I'd be really interested in an Objective-C version of NEAT. It'd be great to get some iPhone/iPad games based on neuroevolution.

      Wesley

      On Tue, Nov 29, 2011 at 4:50 PM, Opposable <ben@...> wrote:
       

      Thanks Colin / Wesley,


      I was just getting the hang of the depth and cyclic networks on paper - I can see SharpNEAT is very well implemented, I'm going to start with the simple albeit expensive solution of running through until changes are minor and in time develop more intelligent algorithms.

      I'm having a lot of fun with this - look forward to having any mac / iOS users play with it!

      Cheers

      Ben Trewhella
      07595 053 017
      @bentrewhella



      On 29 Nov 2011, at 21:29, Wesley Tansey wrote:

       

      Hi Ben,

      Regarding your last question, SharpNEAT implements network activation using a fixed number of iterations, and it's actually quite fast. There is a precision trade off to consider, however, since you will need to guess the depth of what a good network may look like. I'm sure Colin could speak more to this design decision as well as your other questions.

      Wesley

      Sent from my iPhone

      On Nov 29, 2011, at 12:01 PM, "Ben" <ben@...> wrote:

       

      Hi everybody,

      I'm putting together an Objective C implementation of NEATS and am currently working my way through a few conundrums - maybe someone could help.

      I've decided to separate out the genotypes and phenotypes as much as possible, and I have one question on each side:

      Genotypes & innovation numbers - Looking at various implementations I can see that a new innovation number is created for every new node as well as every new link. What has slightly thrown me is that most of the whitepapers I have read indicate the innovation numbers are only assigned to and incremented by new links.

      Working an example through, I start with a simple 2 input, 1 bias, 1 output genome/network that contains 3 links from each sensor to output. I would expect to have an innovation database holding 7 entries, 0 - 3 relating to new nodes, and 4 - 6 relating to the new links.

      If a mutation occurs which adds a new node (likely first as there is no room for another link) my innovation database will hold an eighth entry for the new node (with a node ID of 7) and 2 new link innovations linking say node 1->7 and 7->3. If another genome tried to make the mutation on the same link, the innovation database would be consulted and the new node (7) would be returned along with the new links.

      This implementation makes sense however if anyone can spot a mistake or explain the mismatch with the whitepapers please let me know.

      My second question on the network side is probably elementary to neural net programming. In the example given above I have ended up with a net looking like:

      (3)
      / | \
      / (7) \
      / | \
      (0) (1) (2)

      If I run through the nodes in node ID / innovation number I'll have to make a number of passes before I can get the correct value of the output. At this stage this is only 2 but could get worse. The following ideas occur:

      - Renumber the nodes when generating the genotype (however this in itself requires a number of loops and other headaches)
      - Record a y position, as I believe Mat Buckland (and maybe others) do to use as an helper
      - Traverse the network a number of times when evaluating (the simplest method but feels expensive).

      I can see the latter is the only way around recursive links, although I've not yet seen a need to implement these yet.

      Any help very much appreciated!

      Ben




    • Colin Green
      ... Yes it s all completed, checked into SVN and is also part of the 2.1 release zip. As such it would be be interesting to see what the error was you were
      Message 2 of 7 , Dec 1, 2011
      • 0 Attachment
        On 1 December 2011 16:32, Wesley Tansey <tansey@...> wrote:
        > Colin-- Is the acyclic network supposed to be ready? I'm working on a project and initially we were going to use acyclic networks to make things simpler, but when we tried activating it, it
        > crashed. Switching to fast cyclic fixed the issue, so we have gone with that since. I just assumed that acyclic was still a work in progress.

        Yes it's all completed, checked into SVN and is also part of the 2.1
        release zip. As such it would be be interesting to see what the error
        was you were seeing.

        Colin.
      • Wesley Tansey
        I think it may be too late for that now. We have made a few changes to the SharpNEAT framework (which I hope to contribute back to the main code base soon), so
        Message 3 of 7 , Dec 1, 2011
        • 0 Attachment
          I think it may be too late for that now. We have made a few changes to the SharpNEAT framework (which I hope to contribute back to the main code base soon), so we can't just swap the acyclic network back in. I'll drop you a line in a few weeks when we're done and maybe we can recreate it.

          On Thu, Dec 1, 2011 at 11:32 AM, Colin Green <colin.green1@...> wrote:
           

          On 1 December 2011 16:32, Wesley Tansey <tansey@...> wrote:
          > Colin-- Is the acyclic network supposed to be ready? I'm working on a project and initially we were going to use acyclic networks to make things simpler, but when we tried activating it, it
          > crashed. Switching to fast cyclic fixed the issue, so we have gone with that since. I just assumed that acyclic was still a work in progress.

          Yes it's all completed, checked into SVN and is also part of the 2.1
          release zip. As such it would be be interesting to see what the error
          was you were seeing.

          Colin.


        Your message has been successfully submitted and would be delivered to recipients shortly.