Experiencing Evolutionary Algorithm in Design
Artificial intelligence is now a part of everyday life. Most of the time, it is so subtle that we do not recognize it. The moment that you request an Uber or Lyft, AI helps you to connect to the nearest driver, finds the best route, and — if you requested a shared ride — it finds you a companion with the closest destination. Eventually, it learns from our behavior and improves itself.
Designers and engineers in different industries use the power of AI and machine learning to achieve better performance and results. These results might have taken years to achieve before, but now we can reach them in a fraction of a second. If you are interested in learning more, you can check this article about how the America’s Cup team used machine learning to optimize their yacht’s performance.
I was interested in learning more about this technology, so I registered for the class “3D Form Through Data” at IIT Institute of Design. Zach Pino (check out his website) is the genius behind this course. He is a hybrid designer and has vast knowledge and experience in this field.
The project I worked on during the course centered on the optimization of tops using a computer genetic algorithm. First, I had to learn that what elements are essential for the performance of a top. Based on research, I found these factors are essential:
- If you want the tops to spin fast, then keep the main weight close to the shaft
- If you want the top to spin for a longer time, then keep the most weight on the perimeter of the whorl.
- The heavier the top, the longer it will spin.
- The greater diameter of the whorl the longer the top will spin.
- The greater the diameter then, the more stable the top will be. (more here)
I decided to focus on a creating a top that spins longer. In this scenario, the spin needs to have more weight on the perimeter of the whorl.
To run this experiment, I used two plugins for the Grasshopper, Galapagos and Kangaroo (later I learned that one of them is not necessary for this test). To make it easy for those of you who are not familiar with these plugins, I explain them in a nutshell.
Galapagos is a powerful tool. In the simplest terms, you create an algorithm in Grasshopper. You define the limitation, and the optimal situation you are looking for and the plugin tries millions of combinations to figure out the best result based on your parameters.
Kangaroo is a live physics engine for interactive simulation, optimization, and form-finding directly within Grasshopper. I wanted to use this plugin to calculate gravity. However, I had a problem running it because my machine was not powerful enough to estimate the effect of gravity on all variations. Furthermore, I realized that it is a constant force, so it did not matter if I considered it or not.
A rule of thumb is that it is better to add volume instead of carving out. Thus, in the algorithm, GH generated random points in the Z vector. The bottom and the top parts were fixed to make the handle and the touch point reach the ground.
Then, these random points were connected to sliders, which determine the distance of each point from the whorl. Now, if we revolve these points around the central axis (in this case (0,0,1) vector), we would have a shape. Keep in mind that this is a surface; we still need to cap it to make it a solid. Therefore, GH can calculate the volume and the center of the mass.
Another variation was defined in the algorithm. This time it is a limitation. Software rotates the central axes (in our experience 36 degrees) and calculates the area created by the intersection of the object and the XY plane. This number should be minimal to keep the top rotating longer.
Now, Galapagos can play with these numbers to create different volumes, and at the same time, GH calculated the center of the mass of the created objects and picked the one that has less intersection with the floor as they central axis rotate in 36 degrees.
I selected the six different variations: the first generation, the best one, and four random generations. I printed them with FDM 3D printer. I didn’t like the result. The quality was not good. Removing supports damaged the models and I realized that the mass distribution was not consistent, so it didn’t help me test the models.
I decided to outsource it and print them with an SLS machine. The result was great. As you can see in the picture, the shapes are fascinating. The machine started to put on more mass close to the ground, spread into a thin disk, and curve out masses above it. The latest one spins perfectly, and although it doesn’t look like it does, it spins longer than all others, except the second generation.
As it is impossible for me to apply a fixed amount of force to spin both of them in equal situations without fancy equipment, I cannot say which one is better than the other. My explanation is that the heavier the top, the better it spins; the second generation spins well. So, if you want to try this experiment, I suggest you add this factor to the algorithm.