2
$\begingroup$

I want to develop an artificial life simulator to simulate cells living in water.

I want to see how they search for food, how they life and die and how they reproduce and evolve.

My problem is that I don't know where to start, I have no idea about if there are books or tutorial about how to program this kind of simulator. And also I don't know if I can use here machine learning.

By the way, I'm a programmer and I want to do it using C++ and Unreal Engine.

Where can I find more info about how to do it?

$\endgroup$
  • $\begingroup$ Do you want to use an AI framework for your project? How many hours are you willing to work on it? Have you ever worked on AI projects? $\endgroup$ – Lovecraft Jan 20 '17 at 9:25
  • $\begingroup$ @Lovecraft This is like a job interview. I don't know what AI framework can I use if any. I will do it on my free time. I'm working with Tensorflow. $\endgroup$ – VansFannel Jan 20 '17 at 9:45
  • $\begingroup$ I'm sorry for the interview but these are key factors when starting a new project. I think the best approach would be starting with smaller projects involving neural networks and genetic algorithms to gain experience in order to speedup the coding of the project you have proposed. $\endgroup$ – Lovecraft Jan 20 '17 at 10:01
  • $\begingroup$ Hint: each cell have to have some kind of sensors in order to get information from the environment. Such informations should be passed through the neural network to determine the response of the cell. The evolution of the brain of the cell is determined by a genetic algorithm that promotes cells with particular properties i.e. health level. I recommend you a nature-inspired method, the NEAT model that explains how neural networks can be evolved. Evolving Neural Networks through Augmenting Topologies. $\endgroup$ – Lovecraft Jan 20 '17 at 10:16
  • $\begingroup$ @Lovecraft Sorry about the joke for the interview. Thanks for your comments. You can move them into an answer and I will accept it. $\endgroup$ – VansFannel Jan 20 '17 at 10:28
2
$\begingroup$

The best approach would be starting with smaller projects involving neural networks and genetic algorithms to gain experience in order to speedup the coding of the project you have proposed; playing around with TensorFlow and Unreal Engine it is not a bad idea.

Hint: when implementing your idea of artificial life, you should consider that each cell/organism have to have some kind of sensors in order to capture informations from the environment; such informations i.e. the position and the distance of the nearest meal and/or predators, the temperature, the pressure and depth of water, should be passed through the neural network to determine the response of the cell. Also, in your environment you should promote the spreading of organisms which responses are euristically better i.e. cells that don't get caught by predators or don't die by starvation. How? Simply by evolving their brain/brains/sensors through a genetic algorithm that favors individuals/species with good parameters. I recommend you a nature-inspired AI method, it is called NEAT model. It explains how to implement a neural networks that can be evolved. The paper can be found here: Evolving Neural Networks through Augmenting Topologies.

A different approach to NEAT would be Deep Reinforcement Learning; in the link you can find a demo artifical organism that learns how to find meals.

There are a ton of parameters and implementations you can consider, the only limit is your creativity.

$\endgroup$
  • $\begingroup$ @Lovercraft thanks. What do you mean that it is not a bad idea to play around with Unreal Engine? What would you use Unreal for? And Tensorflow? $\endgroup$ – VansFannel Jan 21 '17 at 16:52
  • $\begingroup$ @VansFannel In my opinion implementing a project like yours will be very hard without the proper experience; it is not a bad idea to play around with smaller projects if it is your first time with big frameworks like Unreal and Tensorflow. $\endgroup$ – Lovecraft Jan 21 '17 at 17:48

Not the answer you're looking for? Browse other questions tagged or ask your own question.