From the course: Grasshopper: Generative Design for Architecture

Brute force: How evolution works

From the course: Grasshopper: Generative Design for Architecture

Start my 1-month free trial

Brute force: How evolution works

- [Narrator] Through evolution, populations of living organisms change overtime through process of variation and selection. In each generation, there is variation arising from the reproductive process. Some variations help organisms while others inhibit reproduction. As a result, the variations that help are passed on and become more common, changing the overall population. This has allowed biological systems to adapt to an incredible variety of habitats, adjusting to new requirements as they go. This is directly analogous to the adaptation of existing architectural systems to new sites and new requirements. In each case, biological or tectonic systems are continuously adjusting and testing themselves against complex environmental conditions, only to be adjusted again in the next generation or next design. With evolutionary algorithms, that process of testing and revision is simulated and dramatically sped up to more quickly arrive at optimal results. Evolutionary solvers work the same way, leveraging the effects of evolution to solve problems. An evolutionary solver, instead of organisms, you have a population of solutions. And instead of reproduction as the goal, the goal is the degree to which the solution solves some specific problem. The best solutions are allowed to reproduce and create the next population of solutions. The critical benefit here is that the evolutionary solver does not need to understand anything but the problem it is solving. For example, imagine you are trying to hit a target with a catapult. You can use an algorithm based on Newtonian physics to calculate exactly how much force is required and how far you need to pull back the lever to hit your target. But what if you do not have a detailed understanding of Newtonian physics? What if there are effects, like friction or vibration, that are not included in your model? Now the physical model of the system is effectively a black box. You do not have an algorithm based on physics that can accurately model the system behavior. You connect your input, the pullback angle, to your output, the ball trajectory. This is where the evolutionary solver comes in. The solver determines the ideal input simply by testing and using the results of each test to inform the next test. If a shot comes close, use approximately the same input again with small variations. This is the power of the evolutionary solver. You can derive a solution without an understanding of the interactions within the system. The solver just needs a clearly defined goal and controls over the inputs that will allow it to vary and test out solutions to see which is closest to that goal. So any evolutionary solver requires three things. First, a genotype. In nature, this is the DNA. In a solver, these are the inputs, sliders in Grasshopper. Second, the ability to generate a variety of solutions, different phenotypes. And third, a quantitative, measurable definition of fitness, the optimization goal against which solutions are compared. With these tools in hand, the evolutionary solver can generate populations of solutions, each with different inputs, and therefore different features. The solver can evaluate these features, the phenotypes, based on the definition of fitness. This fitness evaluation is often represented as a surface or fitness landscape with a height, or Z value, representing fitness. The fitness landscape is really a geometric representation of the relationship between the inputs and the fitness output. The effectiveness of the evolutionary solver is dependent on the attributes of this fitness landscape. Smooth surfaces with few peaks are easy for the solver to navigate. Rough landscapes with flat plateaus or many peaks and valleys can be difficult to navigate, resulting in sub-optimal solutions. Evolutionary solvers leverage the power of variation and selection within populations to find solutions for problems we do not fully understand or cannot accurately model. Though often slower than other solutions, evolutionary solvers are incredibly flexible and always provide some kind of solution. When problems have smooth, simple finished landscapes, the solutions tend to be optimal. When problems have rough, jagged or complex landscapes, optimal solutions can be harder to find. When you are faced with messy problems, or when you do not explicitly understand the relationship between input and output, evolutionary solvers can be uniquely well suited.

Contents