An Evolutionary Version of Particle Life

Published 2023-09-23
An evolutionary version of the particle life model. In this model sets of particles representing organisms evolve their own internal and external rules in an attempt to out compete each other. The results include variations of ambush predators and spider ballooning. This is programming in Java using Processing and a zipped folder of the code is available here: webpages.uidaho.edu/tsoule/PC_ParticleLife_Evolve.….

All Comments (21)
  • The example at the end with the spread out yellow reminds me more of a fungus that spreads out. I would have liked to see the connecting lines in that one. The network of yellow feeding the main bodies. The explosion helps to spread out a new network when first created. Very interesting emergent behavior.
  • @madcio
    Biggest problem for this simulation is that organism actually needs only yellow cells. Rest is uneeded (at most, they help spread yellow cells around, but it is not like you need bunch of colors to do that). I think you need to give other colors some other vital functions, as discussed at end of video. Though I kinda like this world, where cohesion is not neccesarily needed. You can spread out and be fine. Maybe some settable option where program kills cell if it is too far away and too long away from rest? It would be interesting to see if same behavior evolves (yellow cells spread out, but not too far away since it kills them). I feel allowing some time (instead of killing it instantly) before cell dies could change some things in interesting way. I think energetic cost of creating new offspring and living in general should scale with number of particles (you could also have different cost for each color etc). In this case we can allow organism to create as much particles as it's genome wants - it will simply die if it cannot cover energy cost of existence. Note we need to remember "ideal" organism for offspring creation, as actual organism might lost some cells during its life, and unless we want to model Lamarckian kind of evolution, that should not impact offspring. Another idea is allowing particular cells create other cells during life (obviously paying energy cost for it), depending on what genome says about it. That would allow more natural reproduction and growth. That one seems to be major undertaking, as it is hard to save that kind of data in way that would be evolvabe. Some guy made multicelluar "trees" that could point to solution: https://www.youtube.com/watch?v=IL1HogOu5B0
  • @user-mo2lu3hn6c
    Gonna save this video to watch later when I have more time. I just discovered your channel and based on the titles/thumbnails I think I'm really going to enjoy your videos. Please keep it up
  • @bruno5601
    I spent so many time watching those game of life videos and it seems to me pretty straight-forward: - Create a set of rules - Create a space which those rules to be applied - Watch emergent behavior (or system collapse) begin It means that, with the right set of rules you might emulate particle systems or anything else, but you will probably see emergent behavior. The main issue to me is that you have to face issues such as limited space where the simulation may live and processing time to actually delivers the evolution of the systems. And it also makes sense to me that this not just a computational limitation, emergent behaviors and increase of system complexity also means that the system contains, process and generate more information. Basically the more complex the system behavior, more computational resources it will take. Now I will wonder, what would it look running such systems on FPGA, enabling systems like this to even deliver some real-time properties. Maybe even adding some rules that are driven by external environment (like sources in simulation from sensors outside it or drains for outputs).
  • And thanks to @briankramer7162 for some of the suggestions that led to this video.
  • @prietjepruck
    Hi Terry, What a great Idea this is. By now I've tried every way to optimise the code of your last tutorial and was looking for a new challenge and boy did you deliver. These challenges really stimulate me to hone mi skills. Organic life that emerges from simple rules keeps fascinating me. Thanks a lot. I can't wait for your next tutorial. Greetings from the Netherlands.
  • @nembobuldrini
    This is extremely interesting and very well explained! Keep up the good work!!
  • @reviraemusic
    I had this "same idea" a couple of days after playing with Particle Life. Although I had no idea on how to execute it so I ended up studying another great project called BioSim. Thanks for helping us navigate these ideas.
  • @themekahippie991
    Yo, I love Processing! It was my first intro to programming any sort of graphics or games back in high school, and how I learned some Java without realizing it. Definitely gonna have to mess around with this. By the way, have you considered parallelizing individual worlds to make them massive? The short range of all your forces seems ideal for that, and it could give enough space for different biomes.
  • This is incredible. I’ve always been interested in simulations like this and this seems especially able to generate complexity from simple well designed rules. I’m experimenting right now with a GPU simulation of life inspired by the alien-project but that’s a world away from what I can implement or run on my computer. I will take on board some of your excellent ideas. I think to encourage larger groupings some selection pressure to be able to survive but shrink when food was scarce but would kill off very small organisms would be an interesting experiment
  • @RupertBruce
    For the cell division, it might be helpful to have a cell boundary or skin. When the cell splits into two and if the boundary has a 'charge' type force applied externally (like poles repel), the clone would automatically be repelled
  • @SplashT
    its so cool and will be compiled to screensaver with some parameters/settings 🤩🥰
  • @Artilife1
    Great video, I've often though about evolution in particle life. I don't know if you've ever heard of Assembly theory. I feel like a more interesting approach might be to simply let the system evolve with all particles being individualls, then use a k-means cluster or other clustering algorithm at the end of an arbitrary number of steps to get the "organisms" and evaluate the assembly score, the mean assembly score of the entire simulation could then be used in a evolutionary algorithm or gradient decent over the simulation parameters to optimise the system towards life like behaviours. In theory by prioritising assembly score, evolution of organisms might arise naturally. Any thoughts?
  • @mikebellamy
    This is not a simulation of evolution it is an example of intelligent design!
  • It would be nice if each cell had a different energy level where the mouth cells distribute it the most to cells near them but also to cells further away just not as much, then if a cell isn't receiving enough food from the other mouth cells it will start trying to survive on its own as a new species at which point it will apply variance to the values of that new species that split off, when a new species gets created it will slowly form back the cells.
  • @bottlekruiser
    From a quick look, comments don't seem to have said this yet, and it's not like it would have stopped me either way We could actually implement a "physics"-based metric of energy expenditure: work done by interparticle forces within the cell
  • @josesantos2603
    It would be interesting if these oganisms loose particles in time, such as they have a digestive system. And these lost particles would be expelled to the environment to be "eaten" by other organisms.