This chapter is the final part of a five part blog series discussing the methodology adopted to develop ‘An Urban Farming Paradigm Resilient to Energy Descent for Singapore’. Links to the five chapters are listed below:

1. Food Production from an Energy Perspective
2. Road to Self-sufficiency in Food Production
3. Closing the Systems Loop
4. Evolutionary Design Process
5. Adaptive-iterative Design Exploration

Cite as: Kaushik, Vignesh. 2012. “An Urban Farming Paradigm Resilient to Energy Descent for Singapore” Masters’ thesis, National University of Singapore.

Design Problem

The design scenario focuses on the need for Singapore to become more self-sufficient in terms of food production, since it imports over 90% of its food requirement. Hence, as a long term strategy to ensure food resilience for Singapore’s growing population, a prototypical urban farm typology catering to a population of 10,000 people is proposed. The idea would be to have a decentralised network of such urban farms across various parts of Singapore.

State-of-the-art farming methods would allow essential food items such as vegetables and fruits, fish and chicken to be grown vertically and simultaneously within the same building. The urban farmers who grow the food were to live within the same complex as well. Also, in order to produce a part of the energy to power the building, it was decided to grow algae (bio-fuel) on photo-bio-reactor pipes to be fixed to the parts of the façade receiving the most solar radiation. The market, seed storage, waste recycling center and many other allied spatial systems were to be located within the complex. Each of these spatial functions has individual daylight requirements and adjacency rules that must be satisfied for its optimum functioning. For example, the vegetable growth chamber must have adequate daylight, whereas the chicken growth chamber requires controlled daylight. The latter should preferably be far away from the farmers’ housing but closer to the markets. The fish growth chambers need to be at lower floors for structural reasons but as close to the vegetable growth chambers as possible. Such complexity in spatial and functional interrelationships and constraints means that a complex embryogenic type of parametric modelling is required.

For the purpose of this design scenario, versions of varying complexities of external embryogenies were used for evolutionary exploration. These iterations became progressively more complex and less abstract. One of the reasons for using external embryogenies is that the user retains more control over the final evolved form. Moreover, one can constantly improve the quality of evolved designs by making careful modifications to the embryogeny. However, one must ensure that this complex mapping process will always produce a legal phenotype.

Such complexity in spatial and functional interrelationships and constraints means that a complex embryogenic type of parametric modelling is required.

Iteration 1

For the first exploration, the design problem discussed above was split into a set of cubes that were allowed to float on an abstract site of 250m by 250m. Each cube represented a fragmented part of the various functions in the urban farm and was spatially positioned within a 3d grid.

The embryogeny used a direct representation for defining the positions of each of the cubes within the 3d grid. The genotype consisted of a set of real-valued genes in the range {0,1}. For each cube, the position was defined by three genes, which were mapped to a 3d coordinate position in the grid. No constraints whatsoever were set and hence cubes were allowed to float in space and multiple cubes were allowed to occupy the same position in the grid. Each phenotype was then allocated an overall fitness score by evaluating certain simple adjacency rules for each cube. The performance criteria for the evolutionary algorithm were to maximise the number of cubes satisfying the adjacency rules. An example of one of the design variants is shown below.

Exploring Embryogenies - Urban Farm - Version 1

Floating cubes – iteration 1 of embryogeny exploration.
Maximise – Adjacency Scores
Minimise – Overall Height

The aim of this experiment was to acquire an overall understanding of the behaviour of the cubes under the influence of the various adjacency rules. It was expected that the unconstrained freedom of position of each cube relative to all others would allow a variety of promising spatial patterns to be identified. However, although the exploration produced many phenotypes that satisfied most of the adjacency rules, it was very difficult to evaluate them visually and understand their behaviour due to their high variability. The main reason identified for the chaotic variability was the lack of constraints. Hence, in the next stage, additional constraints were introduced.

Phenotypes from iteration 1 was difficult to evaluate visually due to their high variability which was due to lack of constraints.

Iteration 2

In iteration 2, two constraints were introduced: cubes were not allowed to float, and multiple cubes were not allowed to occupy the same position in the grid. The same genotype representation was used, consisting of three real-valued genes in the range {0,1} for each cube. Two genes were mapped to a 2d coordinate position in the grid and the third gene was used to define the stacking order of the cubes. All the cubes with the same 2d coordinate were sorted according to the stacking gene, and were then stacked in that order, starting from the ground up. An example of one of the design variants is shown in the Figure below.

Exploring Embryogenies - Urban Farm - Version 2

Stacking cubes – iteration 2 of embryogeny exploration.
Maximise – Adjacency Scores
Minimise – Building Footprint

As expected, certain patterns and groupings emerged among the various functions. However, the variability among the solutions remained chaotic. Two key deficiencies were identified: the vertical circulation of the cubes was not clear due to the lack of cores, and the floor areas required for each function was not constrained.

Variability among the phenotypes from iteration 2 also remained chaotic. This was due to unclear vertical circulation and unconstrained floor area.

Iteration 3

From the solutions generated from the previous iterations, it was decided to group certain functions into a tower and podium typology. The tower consisted of four functional types; farmer’s housing, vegetable farms, chicken farms and fish farms. All other allied functions were grouped together to form the podium. It was also decided to opt for a smaller site of 150m by 180m, with real surroundings that would have a bearing on the evolution of a podium and tower building. For the purpose of simplifying the search space, the focus of iteration 3 was only to evolve the tower, assuming a fixed podium block as a base of the tower.

The tower’s core consisted of four independent sub-cores (one for each function in the tower) with each catering to its respective part of the floor plan. These sub-cores were structurally integrated but functionally independent. This ensured that at any floor level, functions could be arranged in a flexible manner.

An integrated core

An integrated core consisting of four functional types; farmer’s housing, vegetable farms, chicken farms and fish farms.

An integrated core

The developmental procedure used a combinatorial parametric modelling technique for generating the floor plans. Each floor consisted of four rectangles of varying sizes, with different functions assigned to each rectangle. The genotype consisted of a total of 240 genes, 12 genes per floor and three genes per rectangle. One gene was used to select the shape of the rectangle from a set of predefined possibilities; one gene was used to indicate the orientation of the chosen rectangle around its sub-core, and one gene was used to select the function of the rectangle. All possible variants of the floor plan configuration are shown below.

Version 3 - Development procedure

Integrated core – iteration 3 of embryogeny exploration.

iteration 3 tower generative process

The fitness scores were based on a number of evaluation criteria, such as sufficient daylight for the food growing chambers and the farmer’s housing, scenic views and privacy for the housing, and percentage of façade that could be utilised for growing algae with photo-bio-reactor pipes.

It was also decided to add a constraint that would limit the floor areas assigned to each of the four functions. The required floor areas are known in advance, and a technique was therefore required for defining this as a constraint within the evolutionary system. Researchers have identified four main approaches to handling constraints in evolutionary algorithms: 1) penalty functions 2) repair functions, 3) specialised reproduction operators, and 4) specialised genotype to phenotype decoder functions [1]. For this iteration, a penalty function was added that reduced the fitness of those solutions where the area assigned to each function was not desirable.
[1] Introduction To Evolutionary Computing by Eiben, A. E. and Smith, J. E., 2008.

The solutions from the evolutionary exploration of this iteration indicated that certain aspects of a tower design such as the structural grid had to be refined. In addition, the penalty function resulted in many variants with very low scores, which degraded the ability of the evolutionary algorithm to evolve high performance designs. Figure below shows variants from the population of evolved designs.

version 3 - phenotypes

Iteration 3 – evolved phenotypes.

Phenotypes from iteration 3 indicated that the structural grid of the tower needs to be refined further. Also, the penalty function resulted in many variants with very low scores.

Iteration 4

After analysing the results from the previous iteration, it was decided that the size and shape of the floor plan should be defined in multiples of a specific structural grid. After careful analysis, a structural grid of 7.2m x 7.2m was adopted as it was found to be well suited for all the four functions in the tower.

It was also noted that the use of a penalty function for constraining the floor areas of the different functions was not successful. In this iteration, this constraint was embedded within the developmental procedure, using a rule based decoder function that combined direct and indirect mapping of genotypes to phenotypes. This approach falls under the fourth category of constraint handling techniques as described by Eiben and Smith [1]. In this case, the genotype to phenotype mapping process was structured as a sequential chain of decisions [2].
[2] Decision Chain Encoding by Patrick Janssen & Vignesh Kaushik, EvoMUSART, 2013.

Each floor consisted of four rectangles of varying sizes, each overlapping with one of the sub-cores. The dimensions of each rectangle were defined as a multiple of 7.2m. As with the previous iteration, the rectangles were assigned different functions. The genotype consisted of a total of 180 real-valued genes in the range {0,1}, 9 genes per floor. The first 8 genes were used to specify the dimensions of the rectangles. The genes were mapped to integer values in the range {0,4} (resulting in a maximum of four grids of 7.2m each from the edge of the core). The ninth gene was used to select how the different functions were assigned to the four rectangles. In total, there were 21 different ways of assigning functions to the rectangles. This mapping procedure is shown in the figure below.

iteration 4 floorplan function configurations

Iteration 4 – 21 different function configurations.

iteration 4 - gene mapping for each floor of the tower

Iteration 4 – gene mapping for each floor of the tower.

However, in order to constrain the floor area assigned to each function, a filtering process was first performed. Those configurations that would result in excess floor area being assigned to any of the four functions were filtered out as being invalid. The ninth gene was then used to select one of the remaining valid configurations by mapping it to an integer value in the range {0,n}, where n was the total number of valid configurations. This ensured that all design variants were assigned approximately the required floor areas for the four functions.

Iteration 4 - generation of a tower phenotype

Iteration 4 – generation of a tower phenotype.

The development procedure, shown above, consists of two stages: skeleton model generation followed by form model generation [3]. The skeleton model is a minimal three-dimensional structure that is lightweight and sparse while the form model is a more detailed model that may be large and complex. Once a skeleton model consisting of volumetric cubes has been generated, the form model can then be generated using standard parametric techniques. There could be many different form models generated from the same skeletal model depending on design and aesthetic intent. In this case, the process consisted of three steps: adding structural columns, glass facade for vegetable farms, and algae tubes on the facades of chicken and fish farms. None of these three steps make use of any genes in the genotype.
[3] Skeletal Modelling by Patrick Janssen & Vignesh Kaushik, CAADRIA, 2013.

Iteration 4 tower generative process

Iteration 4 – generation of detailed form model from a lightweight skeletal model.

skeletal model to form model

The evaluation procedure measures performance criteria relating to each function. The performance intent for vegetable farming area is to maximise effective daylight available. The performance intent for the chicken and fish farming areas is to maximise the amount of solar exposure on its facade since it would directly impact the growth of algae in photo bio-reactors installed on its facades. Farmers' housing units are analysed for maximising scenic views and privacy and minimising noise from the motorway. Each of these performance criteria is then weighted and combined to form an overall score based on which the strength of the design is ascertained.

evaluation procedure consisting of daylight, scenic views, privacy and sky exposure analysis

Iteration 4 – evaluation procedure.
Maximise – Daylight, Privacy, Scenic views, Sky exposure
Minimise – Noise

version 4 - designs variants from the population

Iteration 4 – design variants from the population

In this iteration, the control of variability was improved significantly and as a result the evolutionary exploration produced solutions with better performance. Figure below shows two examples of both skeletal and form models of evolved designs variants from the population.

version4 - floorplan of hydroponic vegetable farms

Iteration 4 – typical floor plan of hydroponic vegetable farm

version 4 - designs variants from the population

Iteration 4 – evolved phenotpes from the population


This chapter focused on the process of creating embryogenies for a complex design problem through a sequential process of adaptive-iterative exploration. At each iteration, the solutions that were evolved were not interpreted as optimal answers, but as diagnoses of potential problems and as suggestions for further architectural explorations. Also, certain embryogenies are better than others at producing certain morphologies and hence it is essential for designers to explore such trade-offs through a trial and error process. By employing an adaptive-iterative process, the embryogeny can be made progressively more complex and less abstract, thereby allowing the exploration to be guided by the designer.