Jump to content


Check out our Community Blogs

Register and join over 40,000 other developers!


Recent Status Updates

View All Updates

Photo
* * * * * 4 votes

Goopies - Evolving neural networks (w.i.p.)


  • Please log in to reply
135 replies to this topic

#109 UniBrain

UniBrain

    CC Regular

  • Validating
  • PipPipPip
  • 48 posts
  • Programming Language:C, Java, C++, C#, PHP, Python, JavaScript, PL/SQL, Visual Basic .NET, Pascal, Assembly, Scheme, Prolog, Others
  • Learning:Others

Posted 02 June 2014 - 08:10 AM

Amorphous computation may yield steep behavioural emergences.

 

Generate a type of random soup, and you shall engender truly intelligent life formation.


  • 0

I wish nothing for myself; I wish solely that this consumptive existence is realigned... Such is perhaps attainable with science an technology... If cosmological constants yielded an energy transference bounded universe, by modus ponens, it perhaps follows that such constants are affixable... This universe is but a program whose underlying construct is starkly outdated....


#110 MartinsAbilevs

MartinsAbilevs

    CC Lurker

  • New Member
  • Pip
  • 4 posts

Posted 29 June 2014 - 04:38 AM

Hi is there plan to realase source code to publilc ?? And  lack of save function is realy pain at this moment. 


  • 0

#111 nino

nino

    CC Resident

  • Validating
  • PipPipPipPip
  • 66 posts
  • Programming Language:C, C++, PHP, Python, JavaScript

Posted 30 June 2014 - 09:48 AM

Hi is there plan to realase source code to publilc ?? And  lack of save function is realy pain at this moment. 

 

Almost there, I'm in the middle of hard, slow testing. The first release of the new version WILL have a save/load system implemented. :)


  • 0

#112 MartinsAbilevs

MartinsAbilevs

    CC Lurker

  • New Member
  • Pip
  • 4 posts

Posted 01 July 2014 - 01:37 AM

Great :) i just startet my own neyral network based project (just learning atm )...  and i find you alredy hawe lot of stuf colected in your gopie code.. this wil be nice to take look on this :)

 

I alredy hawe some experience in creating nodal structures ... and next step i think is to use similar aporach to create neyral networks.    old video form one game project 


  • 0

#113 RFpi

RFpi

    CC Lurker

  • New Member
  • Pip
  • 9 posts

Posted 27 July 2014 - 08:24 AM

I really can't wait for your well documented rtES-HyperNEAT implementation  :biggrin:

Other HyperNEAT and similar implementations seems too cryptic,  I never don't know where to start!  :D

For the ANN representation itself, will you use third party libraries or you'll write code also for it?

 

To apply Novelty Search on Guppies experiment, will it be useful to change the objective function periodically from fitness function to novelty metrics? The presentation article suggested that Novelty Search is good to find nice behaviors, and then could be possible using fitness selection to optimize them.


  • 0

#114 nino

nino

    CC Resident

  • Validating
  • PipPipPipPip
  • 66 posts
  • Programming Language:C, C++, PHP, Python, JavaScript

Posted 02 August 2014 - 02:04 PM

I really can't wait for your well documented rtES-HyperNEAT implementation  :biggrin:

Other HyperNEAT and similar implementations seems too cryptic,  I never don't know where to start!  :D

For the ANN representation itself, will you use third party libraries or you'll write code also for it?

 

To apply Novelty Search on Guppies experiment, will it be useful to change the objective function periodically from fitness function to novelty metrics? The presentation article suggested that Novelty Search is good to find nice behaviors, and then could be possible using fitness selection to optimize them.

 

 

The ANN representation is custom made, just as the rest of the library. :)

 

I'm currently (painstakingly and slowly however) experimenting both with Novelty Search and regular HyperNeat in order to discover which is the best for evolving the Guppies. It might turn out that switching between both algorithms periodically, as you suggest, might be a good solution.

 

So far, however, I haven't been able to successfully evolve the critters with either algorithm. I'll have to experiment a bit more in order to find the reasons for this.


  • 0

#115 ConnorMurry

ConnorMurry

    CC Lurker

  • Just Joined
  • Pip
  • 1 posts

Posted 19 August 2014 - 11:26 AM

i surely hope this project isnt dead. becuase i want to see a new version so BAD!

 

plus i have a computer that im offering to test the program on it's VERY high end

 

and if you ask yes i have well over 2000 CUDA cores

 

here are the specs:

 

CPU: i7-3820 4.36Ghz 3.6Ghz Standard 4-Core with 4-Logical Cores to a total of 8-Cores

GPU 1: nvidia Geforce GTX 770 EVGA ACX DUAL SUPERCLOCKED

GPU 2: nvidia Geforce GTX 660TI EVGA superclocked

SSD: kingston hyperx 240GB SSD

Hard Drive: (1) 2TB OS SolidStateHardDrive | (1) 2TB Extra Hard-Drive | (1) 4TB recording Hard-Drive | (1) 640GB storage drive

MotherBoard: GigaByte X79-UP4

RAM: 16GB kingston hyperx RAM cards

microphone: Audio Technica ATR2500-USB

headphones: creative soundblaster EVO z

monitor: philips 40' smart TV

liquid cooling: yes

screen recorder: Nvidia ShadowPlay

keyboard: Levetron Mech5 gaming keyboard

mouse: ThermalTake Tt esports gaming mouse

webcam: logitech skype 720p TV webcam


  • 0

#116 nino

nino

    CC Resident

  • Validating
  • PipPipPipPip
  • 66 posts
  • Programming Language:C, C++, PHP, Python, JavaScript

Posted 20 August 2014 - 07:30 AM

i surely hope this project isnt dead. becuase i want to see a new version so BAD!

 

plus i have a computer that im offering to test the program on it's VERY high end

 

and if you ask yes i have well over 2000 CUDA cores

 

here are the specs:

 

CPU: i7-3820 4.36Ghz 3.6Ghz Standard 4-Core with 4-Logical Cores to a total of 8-Cores

GPU 1: nvidia Geforce GTX 770 EVGA ACX DUAL SUPERCLOCKED

GPU 2: nvidia Geforce GTX 660TI EVGA superclocked

SSD: kingston hyperx 240GB SSD

Hard Drive: (1) 2TB OS SolidStateHardDrive | (1) 2TB Extra Hard-Drive | (1) 4TB recording Hard-Drive | (1) 640GB storage drive

MotherBoard: GigaByte X79-UP4

RAM: 16GB kingston hyperx RAM cards

microphone: Audio Technica ATR2500-USB

headphones: creative soundblaster EVO z

monitor: philips 40' smart TV

liquid cooling: yes

screen recorder: Nvidia ShadowPlay

keyboard: Levetron Mech5 gaming keyboard

mouse: ThermalTake Tt esports gaming mouse

webcam: logitech skype 720p TV webcam

 

The project ain't dead! :)

 

However, I've come up to a major road-block, as I figured out that my rtES-HyperNeat implementation does not work too well to evolve the Guppies. The reason??? I can only speculate so far. I know the algorithm works excellently well with the NeuroRacers I made before. So my best bet is that HypeNeat is better suited to "static" worlds, that are perceived equally among all agents.

 

For example, the NeuroRacers all begin their life at the starting line, they have to follow exactly the same path and (perhaps most importantly) they do not interact with other agents. The virtual world on which the Guppies live on, however, is dynamic and complex, so each Guppy may have totally different experiences (depending on where they're born) and may even interact with each other. It seems HyperNeat has trouble handling such dynamisms, on which the fitness measurements can be greatly influenced by chace and random events.

 

So I'm working now on my own algorithm (this would be the 3rd one I implement!) which takes HyperNeat's indirect encoding principles (CPPNs) and mixes them with a more classical Genetic Algorithm. It may still take some time before we see the Guppies taking over the world.


  • 0

#117 RobTheeuwes

RobTheeuwes

    CC Lurker

  • New Member
  • Pip
  • 6 posts

Posted 31 August 2014 - 09:26 PM

Hi Nino, 

 

I tried to make something similar (but waaay less advanced) in the past but was a bit stumped by how a Guppy / creature reacts (or should react) to the outputs of the NN. 

 

For example, how do you handle the propulsion ? is a single output of the network linked to the left thruster giving it the amount of thrust or is it a binary thing that tells the thruster if it should fire or not ? In my case two of the outputs were used to give the creature a left and right velocity from which a rotation was calculated, somewhat similar to the movement of a tank. This made the little fellows always on the move and draining energy too fast. 

 

One more thing eluded me was when to update the NN, if it should only be updated when changes have been detected, on a regular interval or basically on every loop ? 

 

 


  • 0

#118 nino

nino

    CC Resident

  • Validating
  • PipPipPipPip
  • 66 posts
  • Programming Language:C, C++, PHP, Python, JavaScript

Posted 01 September 2014 - 01:15 PM

For example, how do you handle the propulsion ? is a single output of the network linked to the left thruster giving it the amount of thrust or is it a binary thing that tells the thruster if it should fire or not ?

 

Guppies have 4 thrusters for movement: left fwd., right fwd., left back and right back. Each of these can be independently activated by their Neural Nets, thus they can cancel out (for example, by firing all four thrusters, no movement will result). Same as in your experiment, rotation on the Guppies is calculated depending on thruster activation.

 

One more thing eluded me was when to update the NN, if it should only be updated when changes have been detected, on a regular interval or basically on every loop ?

 

On Guppies, the Neural Nets are updated on every loop. Because I'm using Box2D for implementing their world, this means that the Neural Nets are updated each time after calling the b2World::step() function.

 

Updating each loop regardless of input is important because it allows the Guppies to perform tasks even if they are not receiving any input. For example, Guppies might just search for food when they feel there's nothing closeby. :)


  • 0

#119 Sundance

Sundance

    CC Devotee

  • Validating
  • PipPipPipPipPipPip
  • 572 posts
  • Programming Language:C, Java, PHP, Python, JavaScript, Perl, PL/SQL, Transact-SQL, Bash, Others

Posted 01 September 2014 - 05:43 PM

Nino I think I love you, goopies is such an awesome project. :P


  • 0

Please read the

FaQ & Guidelines


#120 RobTheeuwes

RobTheeuwes

    CC Lurker

  • New Member
  • Pip
  • 6 posts

Posted 02 September 2014 - 03:23 AM

Guppies have 4 thrusters for movement: left fwd., right fwd., left back and right back. Each of these can be independently activated by their Neural Nets, thus they can cancel out (for example, by firing all four thrusters, no movement will result). Same as in your experiment, rotation on the Guppies is calculated depending on thruster activation.

 

 

On Guppies, the Neural Nets are updated on every loop. Because I'm using Box2D for implementing their world, this means that the Neural Nets are updated each time after calling the b2World::step() function.

 

Updating each loop regardless of input is important because it allows the Guppies to perform tasks even if they are not receiving any input. For example, Guppies might just search for food when they feel there's nothing closeby. :)

 

Thanks for your input, I revived my project last night and managed to get it sort of working again ... I wrote it in Actionscript 3 a while back so I did a dirty port to javascript / html5 canvas ... the speed sucks in a browser and JS isn't the best language for this kind of things ... so maybe I'll start working on my CPP skills.

 

Do the Guppy's thrusters always fire with the same intensity or is the force calculated from the NN output ? couldn't quite figure that from your answer. In my project the output is directly linked to the amount of thust so the canceling out part you described will be quite hard to accomplish since the outputs would have to be almost the same for every thuster and a big difference in thrust will get the little fellows in quite a dizzying spin  :biggrin:

 

I found out the sight sensors in my project were a bit crude too, just letting a 'Critter' (as I called them) know the distance vector of the nearest other Critter and the nearest food. This works but I really dig your idea of giving them a virtual eye that mimics nature. How do you calculate the amount of light hitting one of the photo-cells ? I just figured I divide the RGB values by the length of the ray that hits the object ... but that seems a bit simplistic, although it works quite well. 

 

Thanks for re-sparking my interest in neural networks, AI etc etc etc  ... last night was the first time in months that I completely lost track of time developing and was shocked to see it was around 4 AM before deciding it wise to hit the sack.  :thumbup1:


  • 0




Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download