Back to the program.
Designing Physical Self-assembling Systems Via Programming, Evolution, and Recipes
Navneet Bhalla
University of Calgary


Throughout nature, in both the inorganic and organic realms, complex entities emerge as the result of self-assembly from decentralised components governed by simple rules. Natural self-assembly is dictated by the morphology of the components and their environmental conditions, as well as their physical and chemical properties - their information. Components, their environment, and the interactions among them form a system, which can be described as a set of simple rules. However, designing artificial self-assembling systems continues to be extremely challenging. One aspect that remains an open problem is how to design a set of components and their environment, such that the components self-assemble into a desired entity. Working towards solving this self-assembly design problem has been the focus of my PhD research. I will present an overview of the nature inspired design process I have created, referred to as the three-level approach, which comprises of: (1) specifying a set of self-assembly rules, (2) mod elling these rules to determine the outcome of a system in software, and (3) translating to a physical system by mapping the set of rules using physically encoded information. I have used the three-level approach to investigate self-assembly design within three methodologies: (1) programming (where the self-assembly process is directed using physically encoded information), (2) evolution (where the set of components are evolved to create a desired entity), and (3) recipes (where the self-assembly process is divided into stages to leverage limited information sets and prevent self-assembly errors). I used rapid prototyping to construct the systems achieved by the modelling for experiments, to test all three design methodologies. Furthermore, experimental systems in both two- and three-dimensions were created (in terms of component movement). These successful results demonstrate how to continue to progress in solving this open problem by designing physical self-assembling systems via programming, evolution, and recipes.


self-assembly, rapid prototyping, evolutionary computing