Full evolution mode with HyperNEAT

23 views
Skip to first unread message

Christina

unread,
Aug 18, 2020, 10:39:24 AM8/18/20
to RoboGen™ User Group
Good afternoon,

I'm a student at the University of Cape Town, South Africa and I'm doing an ER project investigating the evolution of complexity. I had hoped to use Robogen for full brain-body evolution where the controllers are evolved using HyperNEAT but I see that this feature is currently not available. My project partner and I are considering adapting the code to enabled full bodied evolution with HyperNEAT but we wanted to ask what challenges prevented this feature from being implemented and if you think it is possible to implement ourselves.

Kind regards,
Christina Spanellis

Josh Auerbach

unread,
Aug 22, 2020, 8:21:20 AM8/22/20
to Christina, roboge...@googlegroups.com, Brooke Stewart
Hi Christina,

Brain-body evolution with HyperNEAT was never implemented in RoboGen, but a form of it was implemented in Jelisavcic, Milan, et al. "Lamarckian Evolution of Simulated Modular Robots." Frontiers in Robotics and AI 6 (2019): 9.

I would start by looking at their techniques to see if it fits your needs, otherwise it will take some additional software engineering to get working.  It should be possible (in various ways), but there definitely are some challenges to this.  It has been some years since I have thought about this, but here is what currently comes to mind:

First, the question is do you want to use HyperNEAT (or more appropriately CPPN-NEAT) for evolving the body plans?  Or will you continue to use the current direct encoding of body plans, which basically does Genetic Programming on the body tree?  Sticking with the direct encoding for the body plans is potentially simpler as it avoids some of the complexities of how body plans should be encoded with CPPNs.  However, if you do try to pursue evolving the morphologies with CPPN-NEAT I would suggest looking at some of my earlier work that does this with other types of morphologies:
  • Auerbach, Joshua E., and Josh C. Bongard. "Dynamic resolution in the co-evolution of morphology and control." Artificial Life XII: Proceedings of the Twelfth International Conference on the Synthesis and Simulation of Living Systems. No. CONF. MIT Press, 2010.
  • Auerbach, Joshua E., and Josh C. Bongard. "Evolving complete robots with CPPN-NEAT: the utility of recurrent connections." Proceedings of the 13th annual conference on Genetic and evolutionary computation. 2011.
The techniques used in those works should be transferable to RoboGen with some tweaks, and I think are much closer to something that would be straightforward to get working in RoboGen than the Trimesh/Marching Cubes approach I took in later work or the Voxel based robots used by Cheney et al.  The growing procedure from a root node would be a natural fit for RoboGen, but I will say, as a warning, that this sort of technique has been shown to produce outputs that may not be the best at capturing the patterns present in the underlying CPPNs.

If you evolve the brains and bodies with HyperNEAT, you would either have a single population of CPPNs that encoded both, or you could have separate populations encoding brains and bodies (real co-evolution).  If you are evolving the body plans directly you may also find a co-evolutionary approach might work well, otherwise you face the complexities of how replication and selection should happen when you have part of the genome encoded by a CPPN and part directly.  Since RoboGen just allows MultiNEAT to handle the population when using HyperNEAT, avoiding these complexities was the main reason this was not included in RoboGen to begin with.  Another alternative that may be worth pursuing is to use a form of HyperNEAT - light.  Basically using a CPPN encoding for the brains, but omitting crossover and NEAT's speciation mechanism and just managing mutating CPPNs yourself.

I hope this is somewhat helpful.  There may be other alternatives in the recent literature that I am unaware of, so I would recommend doing some more background research there (looking for papers that cite the ones I mention might be helpful for finding these).  I'd be interested to see what you come up with, and feel free to write back with any more specific questions.

Best,
Josh


--
You received this message because you are subscribed to the Google Groups "RoboGen™ User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robogen-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/robogen-users/7c462ea7-d887-4504-987f-332dc6819f06n%40googlegroups.com.


--

Christina

unread,
Aug 24, 2020, 12:27:34 PM8/24/20
to Josh Auerbach, roboge...@googlegroups.com, Brooke Stewart
Hi Josh,

Thank you so much for the detailed response, your response is very helpful. I think the approach that would make the most sense for us is HyperNEAT - light. Unfortunately our time frame is quite constrained so we may just use the basic body-brain evolution method currently available in Robogen if we are not able to get a working implementation of the HyperNEAT approach in time. We will definitely keep you updated if we manage to get something working.

Thanks again, 
Christina (& Brooke)
Reply all
Reply to author
Forward
0 new messages