The reason your blade stopped evolving is over-specialization. The program found an equilibrium between the species which dominated and the environment. The remaining variety was lost. You have to remember that it's the environment which drives evolution. If you want to maintain diversity you should have different environments like varying wind speed. Develop species within these environments. Then periodically introduce these species to each other in a new environment. The competing environments can slowly converge over time into the conditions you're optimizing such as the target wind speed you used in this example.
Also I don't think the random mutations were frequent enough - if you look at the children they all have the domed head and none were ever 'deformed'. It's those deformities that cause changes and allow for a different strain to attempt (and frequently fail - but sometimes it's the perfect mutation). Also the bias towards choosing a blade most like itself leads to inbreeding - just like with biolgical counterparts. It should have prefered to mate with other blades that have the highest output - even if they were a different shape. This would allow hybridizations and get the best values for each parent. Given the limitations you placed - this is the expected result in the genetic algorithm.
except that the blade beat out even the human designed competition. I agree the simulation should have have 5 different populations that could mingle randomly and rarely IF it were attempting to mimic earth. As it stands the best way to continue would be to run the same evolution system again and again, eventually you would have a full population of successful blades, then run it with that.
+sjh7132 I have been through a lot of videos about neural networks and stuff after I got a neural network solver for a Mario game in my suggested videos list. I ended up here.
man creates algorithms that produce evolutionary attributes, seen as an intelligent creation and praised for its work. Man is created by god, thrown under the rug. Where's my 7 arms and 3 penises? e=mc2 theory of relativity
When the jellyfish was better in your simulation, that made me laugh. This was really cool, I really hope you build your jellyfish and show us what happens.
That will be a big shaking on the wind thing xD We must also include materials that will be strong enough to handle that 'power' of jellyfish blades :P That project can be a one big trash :l
I think if you change the wind to multiple speeds and some varying angels as well as some gust so that you have about 10 to 20 wind scenarios you will do better. If every turbine is then tested against all wind scenarios and the average is given as the determining rebreed factor a better blade will emerge. It also appears all growth is done from the center. Growth should be able to be from any point of mass. Still restricting the over all size of course. If done correct it may even be field applicable. At any point great video.
Robert Corkern That is true, but this tooks weeks to run on several computers as it was. 20 different wind conditions would be at least 20 times longer. Maybe if I had a super computer.
sjh7132 I don't use my computer much. These simulations seem really interesting. If you want another sandy bridge i3, or radon hd 6970 to throw at the problem, just tell me what to download.
+Robert Corkern The way I simulate a turbine now slowly spins up from a stand still to the max RPMs, so I get a complete power curve. Unfortunately it takes a long time and doing a breeding experiment like this would take a year. Now if I add in multiple wind speeds, it would be multiple years. Although with the right computer(s) I could get that down to a reasonable time.
One of my favourite videos. Had a good laugh when the Jellyfish turned out to be that good and it also shows that an evolved solution can be much more clever than a designed one.
This is interesting. I have a 3d printer sitting about 75% complete. Once I have it done, I think I will try printing your jellyfish design and actually make a turbine with it. I will print a lenz 2 as a control and hook them to identical loads, probably pumping water or similar. Then, some real world data can be gathered and we will sea if it holds true to the FEA.
See the whole description.... I made a mistake in my simulation and these blades were optimized for some gas much more viscus than our air. I don't think they will work well on Earth.
I am pleased to find a UA-cam vid with so many thoughtful comments. There is a lot of scope for tweaking the extent and nature of the random variation factors allowed in each recombination. My guess is that too big an extent leads to chaotic results, but too small leads to convergence too soon. Nature, however, is an unknown to me. Thus speaks a man who played with cellular automata on a C64 many moons ago. Also, I believe DarthPickley may have a point. I think this relates to "hybrid vigour" in some way.
richy3454 That's a big problem with this simulation: the way it creates blades is very restrictive in a way which makes it impossible to create blades like the Lenz.
Because doing what you saw in the video, took all my computers at the time. (4 or 5 of them, most better than quad core), a month to do. That's with limiting the simulation. And since I had them all booted into linux, I couldn't run other stuff that required windows, during that time.
This problem of getting stuck in some good but not best shape, even if the population is bigger, reminds me of some problems of optimization that get stuck in the closest "local maximum" but local maximums does not guarantee global maximums by any mean.
Pure genius!!!!! Very very creative approach. Although the end result did not pan out, that doesn't matter. You just proved the concept to be useful, and that to me is 672 hours of success. To my knowledge, your the first person to think of using the technique of genetic algorithm to general optimization problems in industry. I can see a lot of applications for this in the future.
That could be true, but also what makes the high res version worse is I let it run longer. During the breeding, the tests only ran for about 1/2 turn, and in CFD it really takes several simulated seconds (multiple turns) for the air to really settle down into it's stead state where a lot of the air is flowing around the turbine. I just didn't have the computer power back then to do a long sim for each generation. I'm not sure I do now either.
The problem is that the algorithm gets stuck in a local minimum. That's why you get very different results each time you run it. In other words, you algorithm is dependent on initial conditions. In yet other words, the fitness landscape has vast number of local minima and depending on where you start the GA will simply converge to the closest one. This is the major reason why brute force doesn't work. Of course, you can increase the initial population diversity to cover the entire fitness landscape but as you probably noticed, this way you will run out of memory. But a nice start it is. Let me know if you want to collaborate on a project.
semiheresemi A colleague was working on a similar project but with drilling tool paths. He also mentioned the same problems as you did. It is obvious once it was explained to me.
That's the problem with brute-force approaches. Evolution is blind. Go with MCMC or another search method. There is no silver bullet, of course, and evolutionary algorithms can sometimes perform miracles in high dimensional spaces. I can see why this approach was taken here: the goal is to produce a single design (or a small set) so it doesn't matter if it takes a very long time and if you need a huge memory. The objective is not bad. But the problems stated above will persist.
semiheresemi Increasing mutation might help. When working with genetic algorithm I saw that, once population gets stuck in local minimum, increasing mutation impact to some crazy levels for limited number of steps provides interesting outcome. Lots of bizarre solutions are produced that way but some of them may lead to new local minimums. After some steps of "insane mutation" you may decrease mutation power to normal level. At this point population contains combinations good old genes and some new random genes.
start with about 20 unique but slightly different variations of the Lenz, then run the mutation calculations for a month or so and see if it can improve upon it.
I really have no idea what a wind turbine is and i don't understand what i'm looking at in the wind simulation but i love this video for some reason i keep re watching it.
i see that you get stuck in a local optimum since you have no mutations comming in after a species becomes dominant. if you introduce mutations even in later stages you are able to jump local optima
I agree. By only selecting from a rather small population to start with, this experiment isn't so much evolution, as it is selecting a winner from the small population, even though you get some crossbreeding thrown into the mix. It's basically relying on getting lucky with the starting shapes. The final result is something best suited for playing banjo. ;) I would suggest having multiple offspring, with varying levels of mutations.
Sure, but it's difficult to say if the third dimension won't change things. Would be nice to run 3D simulations with similar code/parameters. Probably would take longer, though...
Another guy here on youtube, made a turbine and had it simulated several ways, including 2d and 3d. Then he compared to real life. The 3d was MUCH more accurate. (unfortunately it's also much slower to do.)
Also, just wanted to comment on OpenFOAM: hard to believe that this kind of software is available, because it was not that long ago that this type of computing would have to be done on a supercomputer like a Cray XMP (a computer that cost millions of dollars back in the day), etc. Now it can feasibly be done on a desktop computer with free software. Amazing. JW3HH
4:40 - this happens in real life too. Sharks are kind of stuck in their shape. They haven't changed or diversified a whole lot compared to other clades that formed around the same time. Also actual jellyfish
Really impressive work, but as others have stated, you're getting stuck in local optima. This won't be solved through mutation rates, as there may not be any single or even two mutations that can get you out of it. You should redesign your genome, potentially adding some genes that affect a range of splines. Also come up with something that could create more concave shapes. This will allow single mutations to potentially have more significant impacts.
+Jeff Haluska I was thinking that this algorithm could improve if a different method of generating shapes were used, ideally one which didn't tend to generate spiky protrusions from the center.
@chrach Openfoam can calculate the torque on the turbine. I can convert torque into power by using the equation 2*PI*RPM*60*torque = watts. Efficiency is turbine power / wind power. Wind power is 1/2 * 1.2 * area * windspeed ^ 3.
It occurred to me that it might be quite interesting to use this method, but start with a bunch of shapes that are very similar to those standard blades and see if evolution can improve on an already excellent design.
hey, cool video! I've been noticing that genetic algorithms have been gaining popularity on youtube recently, which is why this video has been getting more views recently. Have you done any more tests like this one? Also, has anyone been able to design a turbine with blades similar to this? It would be really cool if this actually turns out to be more effective than the "gold standard" lenz blades!
i think what really effects most the test is that when you changed the model to test the jellyfish in high resolution, you basically changed the environment of the turbine to which it didn't adapt that could be one reason it scored less then the low res test. At that "high" adaptation level little changes can have a quite significant effect on the result. :D
I think I capped values at 999 in my display software to keep the numbers from messing up the formatting. That turbine would be an excellent air brake!
The most fascinating thing about GA's is that because they emulate nature's design, they make things that resemble lifeforms. There's been a space antenna that looks like a piece of coral. A vibration-damping truss boom for the space station that looks like a leg bone. a solar mirror array that looked like a chrome flower. Jellyfish, eh? Nneat. I kinda thought they might come out looking like bird feathers.
Reducing to a single form is usually the outcome of most evolution simulators since a single fitness function, or in other words, a single criteria to be met is set, meaning that the best suited would become dominant, unlike real life with plenty of different environments each with different criteria for survival.
No no lol. +tantzer is right, since having too many or too large mutations causes species to more easily lose fitness; the gene that makes that species suitable in that environment is more likely to be mutated and thus die off more quickly despite being fit. What I was saying though, is that a lack of mutations is not the reason for a single dominant species outcome in evosims, but rather a single environment and fitness function causes this. Reduction to a dominant species in these cases is best since a specific answer to your question" which is best suited" can be presented. Too much mutations would always cause this answer to be vague and inconclusive.
We need a follow-up where you take a 3D-printed model of the jellyfish and test it for a day when it's windy, and a day when there's barely any wind at all.
they way he started talking about it, I worried he was going to creationist on this lol. then I saw the likes, and figured this video might be productive.
The simulation was done using a program called OpenFOAM (public domain). Perl is used to run various programs (since it's good at that.) Java was used to draw the pictures used in the video. I still like those languages, along with C++
im building this design with a 3d printer and a foam cutter, so far so good, but is there any special ratio between the height and the width of the model? also, if i take your design is exactly the north connected to the center rod? kind regards.
I agree with you, I have run several populations now and more often than not they get stuck on a local max. I suppose a way around the problem is to start with a very large population and seed it with samples from all around the solution space.
I've watched a fair number of genetic algorithm videos and this is one of the most interesting with the fluid-dynamics-based fitness. I'd bet that if you did this in full 3D it'd come up with even more unorthodox designs that a human would be unlikely to.
Max Maruszewski That's one of the problems with this sim: the way the grades are created makes it impossible to make blade shapes like the Lenz. Also, he set the air viscosity too high, so the results are unusable.
Have you corrected the values and run it again? Also, can i get the programs you used for the simulation? (just want to play around a bit and look at the code if possible)
Nifty! Now of course, if you really want to actually use this method for production, consider machine learning algorithms that are smarter than natural evolution. Natural evolution works very inefficiently as it more or less stumbles through your 90 dimensional space of possible blades.
i dont even understand normal vertical turbines...those things just baffle me, but anyway i really appreciate the way you made the video. i cant put my finger on it but it seems...professional and as such fun to watch
Evolutionary algorithms are actually common in computer science and used for hard problems. There are many considerations on how to choose the different operations and the sample sizes, especially considering efficiency. If you haven't already, I really recommend having a deeper look into the subject. Have you tried creating a fitness function which is less expensive, e.g. some pre-filter to sort out bad solutions? One could also think of decreasing selective pressure in the beginning and increasing the initial population size.
I think if I were to prefilter the fitness function, there would be people who would accuse me of designing the blade, by throwing out ones I didn't like. There are already people saying that I designed the blade. (not sure how)
sjh7132 How is that relevant, if you have working results? All that I'm saying is, that by reducing the cost to filter cheap individuals, you could probably speed up your algorithm. By increasing the early populations size (and offspring population size) you are reducing the pressure, probably resulting in bigger variety early on.
the shape of the jellyfish is vaguely reminiscent of a wing contour I saw in a paper-airplane book I obsessed over in middle school. if i recall the book was called "the ultimate paper airplane" and the wings shape had what was called a klien-fogleman air scoop or something like that. as paper airplanes went they were excellent and could sustain flight a long time.
The simulation is OpenFoam1.5-dev. The evolution is Perl code that I wrote. The display code is Java. The meshing is done with gmsh. The code to tally up the power is custom Perl code.
8 років тому+5
I wonder what would have happened if your mating was not only for the best of the generation but allowed combining also two worse shapes.
This is exactly how evolution works! People who are badly adapted still reproduce in case an environment appears where they might actually have an advantage.
Even so, lesser-adapted individuals containing traits that might be advantageous in the future isn't something that would happen in a simulation like this. It happens in the wild because the *conditions* change. In this simulation, no matter how long you run it, the conditions, and the criteria for fitness, will never change. Keeping around individuals that perform poorly isn't likely to result in future individuals that perform well. Perhaps increasing the mutation rate might, though...
Except that evolution is "meta" in the sense that it can change its own rules to become capable of planning. The retention of the seemingly mediocre individuals is a perfect example.
Good day, I really enjoyed this thank you. You comment that your population is quickly dominated by a slightly superior entry. One way to overcome this is to throw away a fixed number (a few percent) of the population at each iteration and replace them with new completely random entries. This is a way of always having 'fresh' genetic martial. The only disadvantage of doing this is that it will mean that you have to do more runs for longer.
I noticed something that I think is important! Your variable basis allows only for polygons with a required center area. You can't even make a Lenz2 with your algorithm! You need to either make random polygons with arbitrary coordinates (perhaps limiting it with a boundary circle with the same radius as the one you have already). Or even make an algorithm where it is only surface area (curved lines with [no area] from above view) Something tells me there can be alot more than just the jellyfish!
I feel like this could significantly benefit from both an indirect encoding (to have more structure and less noise in the blade results) and novelty search (to explore the solution space more evenly and thus not get stuck in a local minimum as soon) Very nice concept though
The software I used is very out of date, and I had trouble making it work last I tried. (about a year ago.) I think much of what I did will have to be modified to make it work with current versions of openfoam and gmesh.
seems like numerical quarks to the actual testing phase, maybe due the way the lenz program is calculating the Reynolds number for the shape. it's pretty hard to keep an accurate account of void spaces pressures in a Reynolds number as the surface rotates around in a unidirectional simulated matrix.
The simulation uses the Navier-Stokes equations and I don't believe Reynolds number is even calculated. But there are times the solver does blow up, and in those cases you see a power of -999 and the turbine is discarded. The mesh is variable size, with the cells closest to the turbine being the smallest.
sjh7132 Reynolds number is a ratio of inertial force over viscus force. A static propeller/turbine blade has a different efficiency based on it's relative motion through a fluid. Think of it like in a multirotor situation, in hover a prop with a low pitch gets great efficiency but low power per RPM and in flight it has very low top end speed and vice versa is true. (Unless you pass a certain point where the drag across the prop is creating a low pressure behind so great it negates the power of the motor) It is also used to describe the movement of currents with in fluid, so like how water moves through a strainer and estimating differential pressure from internal fluid drag from the total drag. Basically, if you assign a compressible fluid an initial pressure, viscosity, and mass to NS equation you apply a Reynolds number that should be able to get a more accurate measurement of mesh points around the symmetrical looking low pressure spots, which (I believe) should be more tear dropped shape in reality. I'm just mechanical engineering and I'm interested in learning a bit about the genetic algorithm/ learning machine coding. Could I take at a look your fluid medium code? I might be able increase the accuracy of your environment, which should result in more efficient evolutions, or I might break it and everything might think about de-evolving into a circular cross section. Either way, I would really like get some ideas. Thanks
TheLittleApocalypse It sounds to me like he did it for fun and not because he wanted a good turbine blade and it the prior regard I think he succeeded.
Very clever!! What I would suggest is changing the blade topology definition, the current one is not at all efficient for describing a turbine blade :) For example, a limit to the size difference in two successive spines would make a difference, and even better considering the possibility of the center being out of the perimeter of the foil. definitely the evolutionary algorithm is the best thing on this planet
@petrcechchelsea No the way this test worked is the turbine is spun (by an imaginary motor) and the torque the wind puts on it is measured. If the torque is pushing forward for more speed, then positive power is made. If the torque is pushing backwards, then it's taking power to hold that speed. It's possible it would spin backwards but all we can say for sure is it wants to slow down. My later sims actually have the wind drive the turbine
One way to do this would be to actually encode the simulation in a java applet so that anyone who wants to contribute to the project simply needs to navigate to a web address and the applet will load the appropriate data and run the simulation and report back the results. An interesting side effect of this would be that it could return partial simulation data.
you should probably have your algorithm be capable of creating lengths that go beyond just the minimum and maximum of the parents... otherwise you lose genetic diversity every time.
As the population approaches a monoculture there more identical individuals which will have the same score. Sorting your population [with a shell sort] will put identical individuals together. When a member is the same as the previous give it the same score, don't test it, and move on. This will shorten your processing time. Unless you want to simulate some primordial conditions insuring at least two of each possible values for a gene will give you better results. When done manually the population is smaller hence the process is faster. I have never used the averaging values method or used different breeding / blending methods so I can not say which is better. Smaller surviving populations are usually faster because the pressure to evolve is greater. I have found around 10% is good
+Michael Hartman The challenge is that even the ones that look identical in the graphics, aren't exactly the same, so it becomes a judgement call on what's close enough not to retest. Sometimes the smallest changes can make a big difference in air flow. Now if there is a member from the previous generation that's already been tested, he is NOT retested, the results are just remembered.
I never noticed that before. It's just wind noise from sounds that make me blow air on the mike, like 'p' . (cheap mike). Turn down the base on your speakers and maybe you can get through it. Or turn off the volume all together.
I typed that comment in about 3 seconds before I had to run to the airport to catch a plane. Give me a break. I don't think the name calling was necessary.
Look into something called a pop filter (it's like $8), made specifically for problems like this. Though you may also be able to just find a better cheap mic for about the same price haha.
btw suddenly I remember seeing one interesting thing the engineering section was working on which was trying to investigate a vawt with some planetary gears. So with the blades rotating as it revolves around the main axis that way they sorta create difference in drag on each side somehow. Cant say for sure I even understood whats happening. The professor's name is Mike Belmont btw
Yes, I did guess at those. I think next time I try a run I'll introduce the 'copy pointer error', where a section of 'dna' could accidentally get relocated or duplicated. Right now the mutations are pretty minor and they can't always get you off of one small hill to the next bigger hill.
You are correct. My method of describing turbine shapes doesn't allow a lenz2 to be developed. I will eventually try an enhanced version of this, but right now my problem is that I built a real turbine and it doesn't match simulation. My sims are laminar flow and I need to add a turbulence model. Until the sims match real life, evolving shapes won't be much good.
I've thought about lots of things, but at 2 weeks a run it takes a while to try them. :-). Using the polar coordinates, I can't actually make the exact lenz shape. Things I've considered: totally free form shapes, points can move anywhere, distance from a line, restricting it to a cut from a PVC pipe, etc.
it would be interesting to collect the winners over a long period of time and then put only the winners in to see if you can make a more efficient blade
The shape that was the standard for comparison had a distinct advantage in that it was not forced to have any cross-sectional area. You probably should have made the tips of each extrusion connect with a line that was left open at one point rather than a closed loop, so as to allow it to create a similar shape.
I personally think all the VAWT concept is sorta like the winner of the second population of the experiment - it just happened to appeal by it's cuteness, despite being piss poor efficiency wise.. The approach itself, the process - it just amazes me! This is real ingenuity and geekery at work! To come up with the idea and implement all of this! Great job! "Breeding software was written in PERL" - instasubbed!!!
I have to agree with you on VAWTs. I spent several years trying to figure out how to make an economical home sized VAWT, but never succeeded. They have a few advantages (handle turbulent winds better), but many disadvantages (don't scale well, more material per swept area, etc.).
sjh7132 Thank's for your work! It is very valuable anyway. I was afraid a little, that I might offend a VAWT aficionado with my comment, but am very glad I did not. BTW interaction between thosemeduza style blades was very interesting! Venturi is a very powerful effect! And I still wonder, if it can be exploited...
Now that is cool! I want to build one now; has anyone tried it yet?
You should defiantly build this, can't think of anyone more suited to test it out
Cody'sLab haha just found this vid. probably because I sub to you :P
I would like to see you testing jellyfish!
Bizzy Buzz same here. maybe an occasional update?
maby adjust the viscosity and runn again for earth like air...see description
The reason your blade stopped evolving is over-specialization. The program found an equilibrium between the species which dominated and the environment. The remaining variety was lost. You have to remember that it's the environment which drives evolution. If you want to maintain diversity you should have different environments like varying wind speed. Develop species within these environments. Then periodically introduce these species to each other in a new environment. The competing environments can slowly converge over time into the conditions you're optimizing such as the target wind speed you used in this example.
Also I don't think the random mutations were frequent enough - if you look at the children they all have the domed head and none were ever 'deformed'. It's those deformities that cause changes and allow for a different strain to attempt (and frequently fail - but sometimes it's the perfect mutation). Also the bias towards choosing a blade most like itself leads to inbreeding - just like with biolgical counterparts. It should have prefered to mate with other blades that have the highest output - even if they were a different shape. This would allow hybridizations and get the best values for each parent.
Given the limitations you placed - this is the expected result in the genetic algorithm.
except that the blade beat out even the human designed competition. I agree the simulation should have have 5 different populations that could mingle randomly and rarely IF it were attempting to mimic earth. As it stands the best way to continue would be to run the same evolution system again and again, eventually you would have a full population of successful blades, then run it with that.
It beat the human one exactly because it 'evolved' with this exact wind and only in a computer simulation so far.
woolfoma I think the original posters views are more correct and this opinion of yours is wrong.
Ixions just say convergence. Genetic algorithms r notorious for converging to quickly.
I posted this in 2009, and for a long time it didn't get any attention. Now it seems to get a comment a day. Why? Is some site pointing to this video?
It appeared in my suggested after watching a bunch of other virtual evolution videos. Nice video btw.
+sjh7132 Professor in my Engineering design course uses this video as part of a lecture. Good Job!
+sjh7132 I found it on Reddit.
+sjh7132
I have been through a lot of videos about neural networks and stuff after I got a neural network solver for a Mario game in my suggested videos list. I ended up here.
Val
True, might have to do with that
Very interesting. I have just recently become fascinated with genetic algorithms, and found your video.
BuckeyeStorms same
man creates algorithms that produce evolutionary attributes, seen as an intelligent creation and praised for its work. Man is created by god, thrown under the rug. Where's my 7 arms and 3 penises? e=mc2 theory of relativity
+Scharfe nice word salad
When the jellyfish was better in your simulation, that made me laugh. This was really cool, I really hope you build your jellyfish and show us what happens.
That will be a big shaking on the wind thing xD We must also include materials that will be strong enough to handle that 'power' of jellyfish blades :P That project can be a one big trash :l
GodOfReality Actually, he used the wrong air viscosity constant, so these results are unusable.
Jelly Power is the future!
I think if you change the wind to multiple speeds and some varying angels as well as some gust so that you have about 10 to 20 wind scenarios you will do better. If every turbine is then tested against all wind scenarios and the average is given as the determining rebreed factor a better blade will emerge. It also appears all growth is done from the center. Growth should be able to be from any point of mass. Still restricting the over all size of course. If done correct it may even be field applicable. At any point great video.
Robert Corkern That is true, but this tooks weeks to run on several computers as it was. 20 different wind conditions would be at least 20 times longer. Maybe if I had a super computer.
sjh7132 I don't use my computer much. These simulations seem really interesting. If you want another sandy bridge i3, or radon hd 6970 to throw at the problem, just tell me what to download.
+Robert Corkern The way I simulate a turbine now slowly spins up from a stand still to the max RPMs, so I get a complete power curve. Unfortunately it takes a long time and doing a breeding experiment like this would take a year. Now if I add in multiple wind speeds, it would be multiple years. Although with the right computer(s) I could get that down to a reasonable time.
+sjh7132 what are the specs of the machine(s) that you ran this sims on for curiosity sake?
+sjh7132 Have you tried to build the jellyfish?
Well I mean the music is almost as lovely as the ideas in this video. Awesome.
I think it might work better with more mutations.
One of my favourite videos. Had a good laugh when the Jellyfish turned out to be that good and it also shows that an evolved solution can be much more clever than a designed one.
This is interesting. I have a 3d printer sitting about 75% complete. Once I have it done, I think I will try printing your jellyfish design and actually make a turbine with it. I will print a lenz 2 as a control and hook them to identical loads, probably pumping water or similar. Then, some real world data can be gathered and we will sea if it holds true to the FEA.
See the whole description.... I made a mistake in my simulation and these blades were optimized for some gas much more viscus than our air. I don't think they will work well on Earth.
Michael Harrington We ALL want him to do this!!!!
I am pleased to find a UA-cam vid with so many thoughtful comments. There is a lot of scope for tweaking the extent and nature of the random variation factors allowed in each recombination. My guess is that too big an extent leads to chaotic results, but too small leads to convergence too soon. Nature, however, is an unknown to me. Thus speaks a man who played with cellular automata on a C64 many moons ago. Also, I believe DarthPickley may have a point. I think this relates to "hybrid vigour" in some way.
You should add the Lenz in with the jellyfish and a bunch of random shapes to see what comes up
richy3454 That's a big problem with this simulation: the way it creates blades is very restrictive in a way which makes it impossible to create blades like the Lenz.
Because doing what you saw in the video, took all my computers at the time. (4 or 5 of them, most better than quad core), a month to do. That's with limiting the simulation. And since I had them all booted into linux, I couldn't run other stuff that required windows, during that time.
So read the description, but still think it would be awesome to see the performance of the notorious jellyfish in reality.
This problem of getting stuck in some good but not best shape, even if the population is bigger, reminds me of some problems of optimization that get stuck in the closest "local maximum" but local maximums does not guarantee global maximums by any mean.
It even happens in engineering. Planes, cars and computers are pretty much stuck on the same design, minor improvements over the past decades
Yea, that's an artifact of evolution. Evolution doesn't select for perfection, only what is "good enough" to survive and reproduce.
Pure genius!!!!! Very very creative approach. Although the end result did not pan out, that doesn't matter. You just proved the concept to be useful, and that to me is 672 hours of success. To my knowledge, your the first person to think of using the technique of genetic algorithm to general optimization problems in industry. I can see a lot of applications for this in the future.
you need to implement mutations in the mating, then you have a working, WORKING evolution :P
There are mutations.
That could be true, but also what makes the high res version worse is I let it run longer. During the breeding, the tests only ran for about 1/2 turn, and in CFD it really takes several simulated seconds (multiple turns) for the air to really settle down into it's stead state where a lot of the air is flowing around the turbine. I just didn't have the computer power back then to do a long sim for each generation. I'm not sure I do now either.
The problem is that the algorithm gets stuck in a local minimum. That's why you get very different results each time you run it. In other words, you algorithm is dependent on initial conditions. In yet other words, the fitness landscape has vast number of local minima and depending on where you start the GA will simply converge to the closest one. This is the major reason why brute force doesn't work. Of course, you can increase the initial population diversity to cover the entire fitness landscape but as you probably noticed, this way you will run out of memory. But a nice start it is. Let me know if you want to collaborate on a project.
semiheresemi *local maximum
But yes, that is one of the issues.
semiheresemi A colleague was working on a similar project but with drilling tool paths. He also mentioned the same problems as you did. It is obvious once it was explained to me.
That's the problem with brute-force approaches. Evolution is blind. Go with MCMC or another search method. There is no silver bullet, of course, and evolutionary algorithms can sometimes perform miracles in high dimensional spaces. I can see why this approach was taken here: the goal is to produce a single design (or a small set) so it doesn't matter if it takes a very long time and if you need a huge memory. The objective is not bad. But the problems stated above will persist.
Yndostrui Maximum, of course. I keep thinking in terms of error :)
semiheresemi Increasing mutation might help. When working with genetic algorithm I saw that, once population gets stuck in local minimum, increasing mutation impact to some crazy levels for limited number of steps provides interesting outcome. Lots of bizarre solutions are produced that way but some of them may lead to new local minimums. After some steps of "insane mutation" you may decrease mutation power to normal level. At this point population contains combinations good old genes and some new random genes.
OH MY GOD. Sir, you have officially revolutionized the science of energy.
Wind turbines will always remain a tax money pit. A few percent won't fix this crooked scheme.
I kind of want to try and 3d print this now.
Thanks for taking the time to show this, I find it fascinating! Keep up the great work!
start with about 20 unique but slightly different variations of the Lenz, then run the mutation calculations for a month or so and see if it can improve upon it.
I really have no idea what a wind turbine is and i don't understand what i'm looking at in the wind simulation but i love this video for some reason i keep re watching it.
i see that you get stuck in a local optimum since you have no mutations comming in after a species becomes dominant. if you introduce mutations even in later stages you are able to jump local optima
Wouldn't that take forever to simulate? I'm asking because I'm new to te subject but wanting to give more time to this because its very interesting.
Federico Perez Thats the whole point with evolution... its an endless process. with time you will converge to the global optima
I agree. By only selecting from a rather small population to start with, this experiment isn't so much evolution, as it is selecting a winner from the small population, even though you get some crossbreeding thrown into the mix.
It's basically relying on getting lucky with the starting shapes.
The final result is something best suited for playing banjo. ;)
I would suggest having multiple offspring, with varying levels of mutations.
Amazing video, the quality is still good for 2023 standards, that's just amazing
Have you tried 3D printing the blade? I would love to see how it does in the field
yes please
This was a 2D simulation so it couldn't be 3D printed.
yeah, just treat this like a cross section of a taller blade.
Sure, but it's difficult to say if the third dimension won't change things. Would be nice to run 3D simulations with similar code/parameters. Probably would take longer, though...
Another guy here on youtube, made a turbine and had it simulated several ways, including 2d and 3d. Then he compared to real life. The 3d was MUCH more accurate. (unfortunately it's also much slower to do.)
Also, just wanted to comment on OpenFOAM: hard to believe that this kind of software is available, because it was not that long ago that this type of computing would have to be done on a supercomputer like a Cray XMP (a computer that cost millions of dollars back in the day), etc. Now it can feasibly be done on a desktop computer with free software. Amazing.
JW3HH
I'm going to cry a little, JUST A LITTLE, if you don't make a follow-up video to this!
4:40 - this happens in real life too. Sharks are kind of stuck in their shape. They haven't changed or diversified a whole lot compared to other clades that formed around the same time.
Also actual jellyfish
Really impressive work, but as others have stated, you're getting stuck in local optima. This won't be solved through mutation rates, as there may not be any single or even two mutations that can get you out of it. You should redesign your genome, potentially adding some genes that affect a range of splines. Also come up with something that could create more concave shapes. This will allow single mutations to potentially have more significant impacts.
+Jeff Haluska I was thinking that this algorithm could improve if a different method of generating shapes were used, ideally one which didn't tend to generate spiky protrusions from the center.
@chrach
Openfoam can calculate the torque on the turbine. I can convert torque into power by using the equation 2*PI*RPM*60*torque = watts. Efficiency is turbine power / wind power. Wind power is 1/2 * 1.2 * area * windspeed ^ 3.
I sexually identify as a Wind Turbine
ha ha ha
hahaha
haha ha
sooo... what are your pronouns?
+nRXpAa8E6UML My pronouns are whoosh, swoosh and shhhhh
It occurred to me that it might be quite interesting to use this method, but start with a bunch of shapes that are very similar to those standard blades and see if evolution can improve on an already excellent design.
haha im going to 3d print this one and make a windturbine blade, this is awesome! keep it up!
What you should do now is build a physical prototype of the jellyfish to see how well it actually works...
hey, cool video! I've been noticing that genetic algorithms have been gaining popularity on youtube recently, which is why this video has been getting more views recently.
Have you done any more tests like this one? Also, has anyone been able to design a turbine with blades similar to this? It would be really cool if this actually turns out to be more effective than the "gold standard" lenz blades!
Hmm, after seeing this I was thinking I could print one on my 3d printer as a test to see if it works. Anyone else think this is a good idea?
ah, just found out he used the wrong viscosity
He did?
yeah, check the description on the video. :( but hey, if we wanted power on jupiter we'd be set :)
James Ward Ah, didn't read that far down. Cool. Some day, probably.
i think what really effects most the test is that
when you changed the model to test the jellyfish in high resolution, you basically changed the environment of the turbine to which it didn't adapt that could be one reason it scored less then the low res test.
At that "high" adaptation level little changes can have a quite significant effect on the result. :D
did anyone notice at 8:11 one blade has -999 power?
I think I capped values at 999 in my display software to keep the numbers from messing up the formatting. That turbine would be an excellent air brake!
The most fascinating thing about GA's is that because they emulate nature's design, they make things that resemble lifeforms. There's been a space antenna that looks like a piece of coral. A vibration-damping truss boom for the space station that looks like a leg bone. a solar mirror array that looked like a chrome flower.
Jellyfish, eh? Nneat. I kinda thought they might come out looking like bird feathers.
I think a way you could've prevented it from becoming singular is adding mutations.
He did.
Reducing to a single form is usually the outcome of most evolution simulators since a single fitness function, or in other words, a single criteria to be met is set, meaning that the best suited would become dominant, unlike real life with plenty of different environments each with different criteria for survival.
No no lol. +tantzer is right, since having too many or too large mutations causes species to more easily lose fitness; the gene that makes that species suitable in that environment is more likely to be mutated and thus die off more quickly despite being fit.
What I was saying though, is that a lack of mutations is not the reason for a single dominant species outcome in evosims, but rather a single environment and fitness function causes this. Reduction to a dominant species in these cases is best since a specific answer to your question" which is best suited" can be presented. Too much mutations would always cause this answer to be vague and inconclusive.
We need a follow-up where you take a 3D-printed model of the jellyfish and test it for a day when it's windy, and a day when there's barely any wind at all.
they way he started talking about it, I worried he was going to creationist on this lol. then I saw the likes, and figured this video might be productive.
I was attempting to remain somewhat neutral so everyone would watch it, or at least get through the intro.
same here, word by word :P
this was the best video about evolution in action I have ever seen.
The simulation was done using a program called OpenFOAM (public domain). Perl is used to run various programs (since it's good at that.) Java was used to draw the pictures used in the video. I still like those languages, along with C++
im building this design with a 3d printer and a foam cutter, so far so good, but is there any special ratio between the height and the width of the model? also, if i take your design is exactly the north connected to the center rod? kind regards.
OK. Lesson learned: let's attach some jellyfish to some sticks and ... voila a wind turbine!
Did you ever try making the jellyfish blade and see if it works in real life?
I agree with you, I have run several populations now and more often than not they get stuck on a local max. I suppose a way around the problem is to start with a very large population and seed it with samples from all around the solution space.
This is great. Has any progress been made on building the Jellyfish?
I've watched a fair number of genetic algorithm videos and this is one of the most interesting with the fluid-dynamics-based fitness. I'd bet that if you did this in full 3D it'd come up with even more unorthodox designs that a human would be unlikely to.
did you repeat the test with the lenz shape as a starting point?
His genome could never generate a lenz to begin with
Tim Jadeglans so?
There is no way for the lenz to exist as one of his species unless he would make significant changes to how the genome works.
I see
Max Maruszewski That's one of the problems with this sim: the way the grades are created makes it impossible to make blade shapes like the Lenz. Also, he set the air viscosity too high, so the results are unusable.
id really like to see this using modern computation and simulations this is super neat!
Have you corrected the values and run it again?
Also, can i get the programs you used for the simulation? (just want to play around a bit and look at the code if possible)
Ralph H. I would also like to peek at the source code.
I'd like the code as well
I'm leaving this here in case he answers
Professor Steve Jones also talks about this for designing nozzles. Fascinating stuff.
Nifty! Now of course, if you really want to actually use this method for production, consider machine learning algorithms that are smarter than natural evolution. Natural evolution works very inefficiently as it more or less stumbles through your 90 dimensional space of possible blades.
I don't care if it really is a better turbine or not! this is so awesome!!
I think the selection/generation process on this one is a little broken. :/
i dont even understand normal vertical turbines...those things just baffle me, but anyway i really appreciate the way you made the video. i cant put my finger on it but it seems...professional and as such fun to watch
Was rooting for pacman :/
Evolutionary algorithms are actually common in computer science and used for hard problems. There are many considerations on how to choose the different operations and the sample sizes, especially considering efficiency. If you haven't already, I really recommend having a deeper look into the subject.
Have you tried creating a fitness function which is less expensive, e.g. some pre-filter to sort out bad solutions? One could also think of decreasing selective pressure in the beginning and increasing the initial population size.
I think if I were to prefilter the fitness function, there would be people who would accuse me of designing the blade, by throwing out ones I didn't like. There are already people saying that I designed the blade. (not sure how)
sjh7132 How is that relevant, if you have working results? All that I'm saying is, that by reducing the cost to filter cheap individuals, you could probably speed up your algorithm. By increasing the early populations size (and offspring population size) you are reducing the pressure, probably resulting in bigger variety early on.
Is this Tropico music?
the shape of the jellyfish is vaguely reminiscent of a wing contour I saw in a paper-airplane book I obsessed over in middle school. if i recall the book was called "the ultimate paper airplane" and the wings shape had what was called a klien-fogleman air scoop or something like that. as paper airplanes went they were excellent and could sustain flight a long time.
have you tried generating your own turbine blade, and letting the evolver improve on it?
I'm curious as to how the Lenz2 would change. Especially if you could possibly seed it with both designs and get something better out of it.
Brandon Pack I am curious as well, as evolution is one of the best ways of improving something. the output could be put to use in high output turbines
he would need to change his genome. There is no possible genome which would create the lenz2 shape to start evolving
The simulation is OpenFoam1.5-dev. The evolution is Perl code that I wrote. The display code is Java. The meshing is done with gmsh. The code to tally up the power is custom Perl code.
I wonder what would have happened if your mating was not only for the best of the generation but allowed combining also two worse shapes.
This is exactly how evolution works! People who are badly adapted still reproduce in case an environment appears where they might actually have an advantage.
perhaps what he meant to say was that the worst individuals of a generation are not automatically weeded out as in most evolution algorithms.
Even so, lesser-adapted individuals containing traits that might be advantageous in the future isn't something that would happen in a simulation like this. It happens in the wild because the *conditions* change. In this simulation, no matter how long you run it, the conditions, and the criteria for fitness, will never change. Keeping around individuals that perform poorly isn't likely to result in future individuals that perform well. Perhaps increasing the mutation rate might, though...
Except that evolution is "meta" in the sense that it can change its own rules to become capable of planning. The retention of the seemingly mediocre individuals is a perfect example.
Good day, I really enjoyed this thank you.
You comment that your population is quickly dominated by a slightly superior entry. One way to overcome this is to throw away a fixed number (a few percent) of the population at each iteration and replace them with new completely random entries. This is a way of always having 'fresh' genetic martial. The only disadvantage of doing this is that it will mean that you have to do more runs for longer.
is this casually explained in 2009?
I noticed something that I think is important! Your variable basis allows only for polygons with a required center area. You can't even make a Lenz2 with your algorithm! You need to either make random polygons with arbitrary coordinates (perhaps limiting it with a boundary circle with the same radius as the one you have already). Or even make an algorithm where it is only surface area (curved lines with [no area] from above view) Something tells me there can be alot more than just the jellyfish!
What is this music El Presidente? :D
I feel like this could significantly benefit from both an indirect encoding (to have more structure and less noise in the blade results) and novelty search (to explore the solution space more evenly and thus not get stuck in a local minimum as soon)
Very nice concept though
Do you still have this program by chance? I would love to run it for a while.
The software I used is very out of date, and I had trouble making it work last I tried. (about a year ago.) I think much of what I did will have to be modified to make it work with current versions of openfoam and gmesh.
Could you provide a download anyway? I wouldn't mind spending time to make this work.
Absolutely awesome.
The future to optimization.
I suggest trying to optimize you mutation and inheritance methods. I assume you guessed on those.
build it for real please.
seems like numerical quarks to the actual testing phase, maybe due the way the lenz program is calculating the Reynolds number for the shape. it's pretty hard to keep an accurate account of void spaces pressures in a Reynolds number as the surface rotates around in a unidirectional simulated matrix.
The simulation uses the Navier-Stokes equations and I don't believe Reynolds number is even calculated. But there are times the solver does blow up, and in those cases you see a power of -999 and the turbine is discarded. The mesh is variable size, with the cells closest to the turbine being the smallest.
sjh7132 Reynolds number is a ratio of inertial force over viscus force. A static propeller/turbine blade has a different efficiency based on it's relative motion through a fluid. Think of it like in a multirotor situation, in hover a prop with a low pitch gets great efficiency but low power per RPM and in flight it has very low top end speed and vice versa is true. (Unless you pass a certain point where the drag across the prop is creating a low pressure behind so great it negates the power of the motor) It is also used to describe the movement of currents with in fluid, so like how water moves through a strainer and estimating differential pressure from internal fluid drag from the total drag.
Basically, if you assign a compressible fluid an initial pressure, viscosity, and mass to NS equation you apply a Reynolds number that should be able to get a more accurate measurement of mesh points around the symmetrical looking low pressure spots, which (I believe) should be more tear dropped shape in reality.
I'm just mechanical engineering and I'm interested in learning a bit about the genetic algorithm/ learning machine coding. Could I take at a look your fluid medium code? I might be able increase the accuracy of your environment, which should result in more efficient evolutions, or I might break it and everything might think about de-evolving into a circular cross section. Either way, I would really like get some ideas. Thanks
The fluid code is public domain. It's called OpenFOAM.
sjh7132 thanks.
I saw you mention that you used the wrong viscosity for air. Does that mean you could make a new and improved video about it?
I'm kind of intrigued.
Who here can do aluminum extrusions?
I would like to see a more refined "Jellyfish" with many more than 19 spines. I suspect some areas could be smoother. (But not all of them.)
your creation method was flawed, it did not allow for curves and would always gravitate to a similar shape
Duuuh... it was never intended to be complex.
well then it is a poor test, is it not?
TheLittleApocalypse It sounds to me like he did it for fun and not because he wanted a good turbine blade and it the prior regard I think he succeeded.
Very clever!!
What I would suggest is changing the blade topology definition, the current one is not at all efficient for describing a turbine blade :)
For example, a limit to the size difference in two successive spines would make a difference, and even better considering the possibility of the center being out of the perimeter of the foil.
definitely the evolutionary algorithm is the best thing on this planet
Try it IRL, and if it works, sell it or IDK, but try.
@petrcechchelsea
No the way this test worked is the turbine is spun (by an imaginary motor) and the torque the wind puts on it is measured. If the torque is pushing forward for more speed, then positive power is made. If the torque is pushing backwards, then it's taking power to hold that speed. It's possible it would spin backwards but all we can say for sure is it wants to slow down.
My later sims actually have the wind drive the turbine
The only bad thing is the music in the video
The worst thing? Does that mean there are other bad things? :-)
sjh7132 My bad, editing the comment. It gave me inspiration to start my own evolving code. It was a great video, nice work.
I thought the music was really good! :D
Well, you should never play Tropico, then
One way to do this would be to actually encode the simulation in a java applet so that anyone who wants to contribute to the project simply needs to navigate to a web address and the applet will load the appropriate data and run the simulation and report back the results. An interesting side effect of this would be that it could return partial simulation data.
you should probably have your algorithm be capable of creating lengths that go beyond just the minimum and maximum of the parents... otherwise you lose genetic diversity every time.
It's been a long time, but I believe the mutations could increase the length beyond the limits of the parents.
sjh7132 okay, but from what it looked like from 1:33 that wouldn't be possible...
Yeah, but in the very next slide he spoke of the random mutations that could apply at any given point.
As the population approaches a monoculture there more identical individuals which will have the same score. Sorting your population [with a shell sort] will put identical individuals together. When a member is the same as the previous give it the same score, don't test it, and move on. This will shorten your processing time. Unless you want to simulate some primordial conditions insuring at least two of each possible values for a gene will give you better results. When done manually the population is smaller hence the process is faster. I have never used the averaging values method or used different breeding / blending methods so I can not say which is better. Smaller surviving populations are usually faster because the pressure to evolve is greater. I have found around 10% is good
+Michael Hartman The challenge is that even the ones that look identical in the graphics, aren't exactly the same, so it becomes a judgement call on what's close enough not to retest. Sometimes the smallest changes can make a big difference in air flow. Now if there is a member from the previous generation that's already been tested, he is NOT retested, the results are just remembered.
I wanna watch this video but holy hell I CANNOT stand the noises you make with that microphone, is your mouth touching it when you speak or something.
I never noticed that before. It's just wind noise from sounds that make me blow air on the mike, like 'p' . (cheap mike). Turn down the base on your speakers and maybe you can get through it. Or turn off the volume all together.
I typed that comment in about 3 seconds before I had to run to the airport to catch a plane. Give me a break. I don't think the name calling was necessary.
Look into something called a pop filter (it's like $8), made specifically for problems like this. Though you may also be able to just find a better cheap mic for about the same price haha.
btw suddenly I remember seeing one interesting thing the engineering section was working on which was trying to investigate a vawt with some planetary gears. So with the blades rotating as it revolves around the main axis that way they sorta create difference in drag on each side somehow. Cant say for sure I even understood whats happening. The professor's name is Mike Belmont btw
Yes, I did guess at those. I think next time I try a run I'll introduce the 'copy pointer error', where a section of 'dna' could accidentally get relocated or duplicated. Right now the mutations are pretty minor and they can't always get you off of one small hill to the next bigger hill.
This might not have improved blades but it seems to show that evolution creates a lot of stable species.
You are correct. My method of describing turbine shapes doesn't allow a lenz2 to be developed. I will eventually try an enhanced version of this, but right now my problem is that I built a real turbine and it doesn't match simulation. My sims are laminar flow and I need to add a turbulence model. Until the sims match real life, evolving shapes won't be much good.
I've thought about lots of things, but at 2 weeks a run it takes a while to try them. :-). Using the polar coordinates, I can't actually make the exact lenz shape. Things I've considered: totally free form shapes, points can move anywhere, distance from a line, restricting it to a cut from a PVC pipe, etc.
it would be interesting to collect the winners over a long period of time and then put only the winners in to see if you can make a more efficient blade
That shape is an interesting outcome!
Somebody get this man a couple gaming computers! We need more simulations.
I'd really, really like to see more of this
Really cool, would love to see more if you are still working
I love the tropico music in the background. Great vidéo! :)
3D printing and a wind tunnel. Would be an interesting to see how well simulation lines up with reality, even if its wildly wrong.
Evolution. King of efficiency, and creation.
Actually it's more like "king of just good enough to beat the other guy". But it does tend to be creative, especially at cheating the test. :-)
Absolutely awesome.
The future to optimization.
It would be cool to make a 3D-printed scale model of the most successful blades and test it in a wind tunnel.
The shape that was the standard for comparison had a distinct advantage in that it was not forced to have any cross-sectional area. You probably should have made the tips of each extrusion connect with a line that was left open at one point rather than a closed loop, so as to allow it to create a similar shape.
I personally think all the VAWT concept is sorta like the winner of the second population of the experiment - it just happened to appeal by it's cuteness, despite being piss poor efficiency wise..
The approach itself, the process - it just amazes me! This is real ingenuity and geekery at work! To come up with the idea and implement all of this! Great job! "Breeding software was written in PERL" - instasubbed!!!
I have to agree with you on VAWTs. I spent several years trying to figure out how to make an economical home sized VAWT, but never succeeded. They have a few advantages (handle turbulent winds better), but many disadvantages (don't scale well, more material per swept area, etc.).
sjh7132
Thank's for your work! It is very valuable anyway.
I was afraid a little, that I might offend a VAWT aficionado with my comment, but am very glad I did not.
BTW interaction between thosemeduza style blades was very interesting! Venturi is a very powerful effect! And I still wonder, if it can be exploited...