Portfolio_DesignComputation

Page 1

design / computation - swarm urbanism

- context-aware revitalization - design computation studies - chronology

zhiping liu’s portfolio 2012


SWARM URBANISM Utilizing the Central Place Theory as a logic framework within which the multilayered networks self organize based on local rules & information exchanges and calculations . Each individual place attracts certain urban activities which are simulated by multi-layered agents’ movements which together form into swarm behaviors in a 2D urban context.

Meanwhile, those swarm behaviors trigger the possibility of growth based on the procise calculation of popolarities to agents and densities of places. The dynamic distribution of the multi-layered networks reflects the local logic of how the city of Hong Kong has grown.


Swarm Theory

nt

e ag tiul

M em st Sy

Central Place Theory

Technology

Logic

“community design”

Assemblage of “interests”

Rules (variables)

low-income neighborhoods

?

Industry neighborhoods Rules (variables)

Software

transportation system

Distributions of Planning Programs - Low-order network (Residential, Schools, restaurant...)

open spaces

Designer ? /planner

school system

Distribution of density Road system

traditional streets, sights

Land reclaimation

waterfront facilities

Re-proposal for existing

land reclamation

...

view to Victoria Bay Empty old Kaitak Airport and surrounding communities

Proposals

previous master plans:

from the Planning Review by Hong Kong Planning Department


a generative system

- agency

- high-order urban activity - low-order activity

- high-order urban spot - low-order spot

- structure

- two sub-classes of agents

- two layers network inspired from “Central Place Theory�

- be attracted by differentiated spots and swarm movement (seperate, align, steer...)

- behaviors

- make a decision to grow or not (based on the calculations of the activities it has attracted in a certain period)

- density control find the properate density of the area where the potential new spot could be added effective factors: - number of same sub-class agents around - number of different sub-class agents around - sensitivity to the existing density - threshold - orientation to south

- grow (or not) add (or not to add) a new same type of spot in a certan range nearby


attraction from closest low-level spot (more sensitivity to low-level agent)

high-level connection

process

attraction from closest high-level spot (less sensitivity to high-level agent)

every feedback loop (iteration):

high-level agent (attracted by spots)

low-level spot

low-level agent (attracted by spots)

high-level spot

1. 1

1. 1

1

1. 1

2

3

attraction from closest attraction from closest high-level spotspot high-level (more sensitivity to to (more sensitivity high-level agent) high-level agent)

the new spot(low-level) will probably be generated within this threshhold

the new spot(high-level) will probably be generated within this threshhold

* the program will select a random location for the potential growth, but it still need a "density control" step to make it happen or not to.

high-level agent high-level agent (attracted by spots) (attracted by spots)

low-level spotspot low-level

low-level agent low-level agent (attracted by spots) (attracted by spots)

high-level spotspot high-level

* the program will select a random location for the potential growth, but it still need a "density control" step to make it happen or Low-level spots calculat Low-level spots calculat not to. ethe frequency of of ethe frequency attracted agents attracted agents to get the the "popularity" to get "popularity" of this spot. of this spot.

* Each low-level spot calculate how many agents(high-level & low-level) have been attracted by it.

more agents attracted more agents attracted by the spot, by the spot,

growth through iterations

6

new spot (high-level)

there is no same level spot too close to the potential location

11

4

this existing spot is too close to the potential location

9 6

there are less(4) same level spots within certain range,* the bigger minimun distance between them for the potential spot,** the lower density this area will be.***

12

8

3

* the "density control" step will generate a "minimum distance" between other same level spots for the potential spot

5

* * ThisThis spotspot hashas attracted more enough attracted more enough agents to trigger the the emergence of of agents to trigger emergence newnew spotspot around it. it. around

there is no same level spot too close to the potential location

there are more(12) same level spots within certain range,* the smaller minimun distance between them for the potential spot,** the higher density this area will be.***

7

2

attracted by it. attracted by it.

* This spot has attracted more enough agents to trigger the emergence of new spot around it.

popular the the spotspot is is popular 1. more 1 more 1

10

this existing spot * * ismany too close to the Each low-level spotspot calculate howhow Each low-level calculate many potential location agents(high-level & low-level) have been agents(high-level & low-level) have been

the new spot(low-level) will probably be generated within this threshhold

more agents attracted by the spot, more popular the spot is

attraction from closest attraction from closest high-level spotspot high-level (less sensitivity to to (less sensitivity high-level agent) high-level agent)

the new spot(high-level) will probably be generated within this threshhold

5

4

attraction from attraction from closest low-level spotspot closest low-level (more sensitivity to to (more sensitivity low-level agent) low-level agent)

high-level connection high-level connection

1. 1

Low-level spots calculat ethe frequency of attracted agents to get the "popularity" of this spot.

attraction from closest attraction from closest low-level spotspot low-level (less sensitivity to to (less sensitivity high-level agent) high-level agent)

low-level connection low-level connection

1. 1

3

2

new spot (high-level)

4

* still images from the animation generated by Processing

* the "density control" step will generate a "minimum distance" between other same level spots for the potential spot

existing spot (high-level)

1

new spot (highlevel)

* 70 pixels for low-level spots; 150 pixels for high-level spots (program setting) ** if the random location find another same level spot in the range, there will not be new spot. *** through this "density control" step, the growth responds to the dynamic context; the level of the sensitivity could be adjusted based on local information. note: low-level growth uses same logic but different setting for the sensitivity to context


agents’ behaviors

note: part of code in this script is developed contributed by Roland Snooks (seperate, align, cohere within swarm of agents)

triggering the growth

growing


multi-layered growth low-order network growth

+

high-order network growth

=

combined growth


saturated condition

low-order network growth

high-order network growth

combined growth


massing study


programming Within the two layers (orders) of network, this program defines every spots into specific categories: (low-order): - residential - retail (high-order) - commercial - hotel - office building The “rules” came from the mapping of Hong Kong. For example: the school should be close to where the density of the residential is high; the office should be found where high-order spots dense in themselves; the hotel should be built in the area with high density and the view of the sea.

schools

commercial

residential

hotels

The result directly came from the software scripted in Processing. Interestingly, one can find that some of residential spots have been distributed close to the sea and some inside of the land which accidently match the “rule” of how high-profile residential and affordable residential have been distributed in Hong Kong.


mapping

variables & rules in Processing

calculations in Processing - hotels:

- schools:

- more ...


CONTEXT-AWARE REVITALIZATION Thesis project at USC M.Arch Postporfessional Program 2009 This project uses Swarm Urbanism methodology and parametric tools to research/design in an urban context. In temporary cities, the multi-layered networks provide the dynamic armature of urban activities, which simultaneously create the dynamic networks through self-organization based on certain logic and local feedback. At a variety of scales, the self-organizing system of urban behaviors relates to transitions of program and spatial distributions.


Bibliography City theories

Kevin Lynch, a Theory of Good City Form, 1981; Christopher Alexander, a Pattern Language: Towns, Buildings, Construction, 1977;

City & Urbanism theories

John Kaliski, “the Present City and the Practice of City Design”, 1999; Everyday Urbanism, 1999 The present city must be defined as a place of continuous creation. City design as situational architecture acknowledges that each person and entity is constructing space and place with acts of daily life. The sum of daily transactions is recognized as an evolving material story to which both city designer and dweller must both contribute. … The hidden, ordinary stories of the city are to be rendered more intense and “more visible” by the city designer, who seeks ultimately to weave individual and group narratives together into an “arrangment” negotiated among all interested parties. David Grahame Shane, Recombinant Urbanism, Wiley Academy, 2005 Conceptual modeling since Lynch: such as actor-designers, who look for repetitive patterns and self-organizing systems of relationships in urban processes at a variety of scales. Through positive feedback, actors amplify these new patterns into structures of relationships that support new built forms and spatial distributions of forms. Mario Gandelsonas, Architecture and the American City, 1999 He charts the transformation of the modern, American, monofunctional, residential, postwar suburb into a new form of muiti-functional “suburban city.” What forms is an “X-urban” city – an “out-of-the-city city” – not only along the car-based periphery but also at the old city-core. This core “becomes one more semiautonomous urban ‘village’” in the metropolitan constellation of X-urban centers; that is , the core of the American city disappears as an exclusively businessand-industrial district and reappears as a mixed residential, shopping, and entertainment area (still including some business), all uses also found on the periphery. Precedents: Cooper and Eckstut: Battery Park City Master Plan, 1979; 42nd Street Special District. The Seven “-ages” of Postmodernism (introduced by David Grahame Shane, Recombinant urbanism) 1, Decoupage (Rossi and “analogical city” design) 2, Collage City (plus Contexualism and Rationalism) 3, Bricolage 4, Photomontage 5, Montage 6, Assemblage 7, Rhizomic assemblage (Deleuze and Guattari) David Grahame Shane, Recombinant Urbanism, 2005 Its function is to help maintain the city’s stability as a self-organizing system. In a linear, logical, scientific urban system it helps maintain the dynamic overall balance between the binary poles that define that system (e.g., production and consumption) by handling exceptions; in nonlinear systems, it facilitates dynamic imbalance and rapid shifts between urban paradigms. With Hindsight, we can see the post-structuralists and Deconstructivists were right to describe the city as a chaotic situation of competing systems. We can also see that this chaotic situation has an emergent logic of its own, produced noncentrally by actors designing systems across vast territories without regard for each other’s decision, each adding their own system as a new layer to existing topography, historic structures, and landscapes. Michael Batty, Cities and Complexity: Understanding Cities with Cellular Automata, Agent-Based Models, and Fractals, the MIT Press, 2005 He argues that bottom-up processes - in which the outcomes are always uncertain -- can combine with new forms of geometry associated with fractal patterns and chaotic dynamics to provide theories that are applicable to highly complex systems such as cities. Batty begins with models based on cellular automata (CA), simulating urban dynamics through the local lactions of automata. He then introduces agent-based models (ABM), in which agents are mobile and move between locations. These models relate to many scales, from the scale of the street to patterns and structure at the scale of the urban region. Finally, Batty develops applications of all these models to specific urban situations, discussing concepts of criticality, threshold, surprise, novelty, and phase transition in the context of spatial developments.

Parametric Architectural Design

Branko Kolarevic, Architecture in the Digital Age: Design and Manufacturing, Taylor & Francis, 2003 Michael Meredith, From Control to Design–Parametric/Algorithmic Architecture, Actar, 2008 Architecture requires social engagement; it requires cultural/social relevance. It is not the parametric, the relentlessness malleability of form, nor is it complexity for its own sake, but rather a complex of complex relationships that produce architecture. The operational paradigm we’re interested in is akin to Pierre Bourdieau’s “field of cultural production,” where form is the playing field within competing vectors within a larger cultural field of forces.

Swarm Urbanism

Gilles Deleuze and Felix Guattari, a Thousand Plateaus: Capitalism and Schizophrenia, University of Minnesota Press, 1987 Steven Johnson, Emergence: The Connected Lives of Ants, Brains, Cities, and Software, Scribner, 2002 Manuel Delanda Roland Snook/Kokkugia Walter Christaller, Central Place Theory

Multi-Agent Parametric Technology a, an analysis tool b, a generate tool c, a design tool

Terms:


Basic Idea

This project uses swarm urbanism methodology and parametric tools to research/design in an urban context. In temporary cities, the multi-layered networks provide the dynamic armature of urban activities, which simultaneously create the dynamic networks through self-organization based on certain logic and local feedback. At a variety of scales, the self-organizing system of urban behaviors relates to transitions of forms and spatial distributions.

Swarm Urbanism

“Swarm urbanism” is the notion that, within the city it addresses the role of self-conscious operations which follow the logic of “swarm intelligence”. It takes further of the logic of the city itself as a space of flows and relationships, which produce a dynamic stable entity through incorporations that remain open to further influence by other external forces.

Multi-Agents Parametric Methodology

By setting simple rules of agents, software programs could be good at simulating the increasingly complex multi-agents behaviors between them and responses to inputs and impulses, as a self-regulating system.

Downtown LA

At a macro level, LA is the extreme example in the discourses of urban planning and urban design. However, this research/design explores a way to use certain parametric technique to design buildings in a particular urban context at a micro level. Downtown LA is experiencing its revitalization process after decades of suburbanization. The residents population increased 36.9 from 2006 to 2008, 14,561 residents units have been created under the adaptive reuse ordinance, more business stores and public projects open and a growing transit network creates it more accessible. This project is not to simulate actual populations of people and buildings, but to explore operations that involve autonomous design agents which are capable of self-organizing into emergent forms.

Design/reseach Process


site programing Survey

program distribution

FAR based on density

Scripted in Processing ... class kAttractor { // states kVec pos; float magnatude, range; int fillcolor, typeId; kAttractor(kVec _pos, float _range, float _magnatude, int _fillcolor, int _typeId) { pos = _pos; magnatude = _magnatude; range = _range; typeId = _typeId; } // methods void update(kWorld world) { connectAtt(world.attractors); } void connectAtt(AttayList attractors) { int count = 0; for (int i = 0; i < attractors.size(); i++) { kAttractor att = (kAttractor)attractors.get(i); kVec attPosition = kVec.clone(att.pos); float attDist = attPosition.distance(pos); int fillcolor = int(att.typeId); if ((attDist < 100) && (attDist > 20) && (abs(att.pos.x - pos.x) > 3) &&(abs(att.pos.z-pos.z) > 3)) { count++; //move pos.y = pos.y - 0.005*count; pos.x = pos.x + 0.001*(att.pos.x - pos.x); pos.z = pos.z + 0.001*(att.pos.z - pos.z);

}

}

}

Context & Rules Analysis

Urban Programming

}

//link if ((attDist < 50) && (attDist > 20)){ kLine ln = new kLine(pos.x, pos.y, pos.z, att.pos.x, att.pos.y, att.pos.z); ln10.setColor(fillcolor*20); }

kLine ln11 = new kLine(pos.x, pos.y, pos.z, pos.x, pos.y - count*10, pos.z); ln11.setColor(count*10, count*10, count*10); space.append(ln11);

void gather(ArrayList attractors) ...

Massing Study


generative process the activities 3 classes of agents attracted by 3 types of function spots trigers the growth

Context & Rules Analysis

Urban Programming

Massing Study


design intention

Context & Rules Analysis

design computation

Urban Programming

Massing Study


Scripted in Rhino Sub Main() Dim contextPts, programPts, rninLength, maxlength, i, ptPos, count Dim arrCPts() arrPPts() Dim springData(), springData(), springDataP(), springC(), springP() minLength = 10 maxLength = 200 count = 0 ‘ contextPts contextPts = Rhino.GetObjects(“select the context points”, 1) For i = 0 To UBound(contextPts) ptPos = Rhino.PointCoordinates(contextPts(i)) ReDim Preserve arrCPts(i) arrCPts(i) = ptPos Next ‘ programPts programPts = Rhino.GetObjects(“select the program points”, 1) For i = 0 To UBound(programPts) ptPos = Rhino.PointCoordinates(programPts(i)) ReDim Preserve arrPPts(i) arrPPts(i) = ptPos Next ‘ add springC and springP springData = addSprings(springC, springP, arrPPts, arrCPts, minLength, maxLength) springDataC = springData(0) springDataP = springData(1) ‘ agents Dim startAgents, iterations, pos, endPt, vel, marvel, maxForce, arrAgents() ‘()-DYNAMIC Dim arrAgentPos(), ptCloud ‘ user input - start vectors of the agents startAgents = Rhino.GetObjects(“select the starting agent vectors”, 4) iterations = Rhino.GetInteger(“how many steps/iterations”, 200) marvel = 10 maxForce = 2 For i = 0 To UBound(startAgents) pos = Rhino.CurveStartPoint(startAgents(i)) endPt = Rhino.CurveEndPoint(startAgents(i)) vet = Rhino.VectorCreate(endPt, pos) ReDim Preserve arrAgents(i) ‘ Preserve NOT TO Erase arrAgents(i) = Array(pos, vel, maxVel, maxForce) Next For i = 0 To iterations-1 Dim acc, vecAli, vecSep, vecCoh, vecAttC, vecAttP, j, springParam, srfCrv For j = 0 To UBound(arrAgents) Dim k ‘ reset acc to 0 ‘ IN EACH STEP acc = Array(0,0,0) ‘ call the behavior functions - align etc vecAli = align(arrAgents(j), arrAgents, 10) vecSep = separate(arrAgents(j), arrAgents, 10) vecCoh = cohesion(arrAgents(j), arrAgents, 20) vecAttC = attSpringC(arrAgents(j), springC; 50) vecAttP = attSpringP(arrAgents(j), springP, 50) ‘ weight - priority verAli = Rhino.VectorScale(vecAli, 5) vecSep = Rhino.VectorScale(vecSep, 1) vecCoh = Rhino.VectorScale(vecCoh, 1) verAttC = Rhino.VectorScale(vecAttC, -1) vecAttP = Rhino.VectorScale(vecAttP, -1)

Context & Rules Analysis

Urban Programming

acc = Rhino.VectorAdd(acc, VecAttP) ‘ add acc to vel vet = Rhino.VectorAdd(arrAgents(j)(1), acc) ‘ limit vet to marvel vet = vectorLimit(vel,arrAgents(j)(2)) ‘ update the array arrAgents(j)(0) = Rhino.VectorAdd(arrAgents(j)(0), vet) ‘ MOVE arrAgents(j)(0) = vet ‘ NEW VEL Next count = count + 1 For j = 0 To UBound(arrAgents) ReDim Preserve arrAgentPos(j) arrAgentPos(j) = arrAgents(j)(0) Next Rhino.EnableRedraw False

‘ update the point cloud ptCloud = Rhino.AddPointCoud(arrAgentPos)

Rhino.EnableRedraw True ‘ change springC, springP For j = 0 To UBound(springC) Dim spLine, newSpline, p0, p1, pm, distS, newDistS, distToAgent, accSpring Dim ratial, force0, force1, forceSum Dim initialLength spLine = springDataC(j)(0) pol = Rhino.curveStartPoint(startAgents(i)) endPt = Rhino.CurveEndPoint(startAgents(i)) vel = Rhino.VectorCreate(endPt, pos) ReDim Preserve arrAgents(i) arrAgents(i) = Array(pos, vel, maxVel, maxForce)

p0 = Rhino.CurveStartPoint(spLine) p1 = Rhin0.CurveEndpoint(spLine) pm = Rhino.CurveMidPoint(spLine)

For k = 0 To UBound(arrAgents) ‘ if agent within range(such as length) distToAgent = Rhino.Distance(pm, arrAgents(k)(0)) If distToAgent < distS/2 Then force1 = force1 + 0.1 End If Next Next

‘ compare the lengths with initials (got upper lines) initialLength = springC(j)(1) racial = distS/initialLength

‘ ‘ get the acc (within 1/3 to 3 times) If racial > 1 And racial < 3 Then force0 = -0.1*(ratial-1) End If If racial < 1 And racial > 0.3333 Then forced = 0.1*(1/ratial-1) End If

‘ ‘ sum aces together forceSum = force0 + force1 ‘ loop through all springP (Let programPoint End of the springC move With springP)

End Function

Massing Study


... Function addSprings(springC, springP, arrPPts, arrCPts, minLength, maxLength) Dim IineC,lineP, lengthC, lengthP pos, contextPos, contextDist, closestDist, closest- CPt, closestPPt, i, j, k, count Dim springs() ‘count = 0 For i = 0 To UBound(arrPPts) ‘connect with contextPts closestCPt = Rhino.PointArrayClosestPoint(arrCPts, arrPPts(i)) contextDist = Rhino.Distance(arrPPts(i), arrCPts(closestCPt)) lineC = Rhino.AddLine(arrPPts(i), arrCPts(closestCPt)) ‘ connect With programPts Dim pPtDist closestDist = 999999 For j = 0 To UBound(arrPPts) pPtDist = Rhino.Distance(arrPPts(j), arrPPts(i)) If pPtDist < closestDist And pPtDist > 0.01 Then closestDist = pPtDist closestPPt = j End If Next lineP = Rhino.AddLine(arrPPts(i), arrPPts(closestPPt)) ‘ add lineC And lineP into array of spring lengthC = contextDist lengthP = closestDist ReDim Preserve springC(i) ReDim Preserve springP(i) springC(i) = Array(lineC, lengthC, minLength, maxLength) springP(i) = Array(lineP, lengthlP, minLength, maxLength) ReDim Preserve springs(i) springs(i) = Array(springC(i), springP(i)) Next addsprings = springs End Function Function addSpringC(arrPPts, arrCPts, minLength, rnaxLength) Dim lineC, lineP, lengthC, lengthP, pos, contextPos, contextDist, closestDist, closestCPt, closestPPt, i, j, k, count Dim spC() For i = 0 To UBound(arrPPts) ‘connect with contextPts closestCPt = Rhino.PointArrayClosestPoint(arrCPts, arrPPts(i) contextDist = RhinoxDistance(arrPPts(i), arrCPts(closestCPt)) lineC = Rhino.AddLine(arrPPts(i), arrCPts(closestCPt)) lengths = contextDist ReDim Preserve spC(i) spc(i) = Array(lineC, lengthC) Next addSpringC = spC End Function Function addSpringP(arrPPts, arrCPts, minLength, maxLength) Dim lineC, lineP, lengthC, lengthP, pos, contextPos, contextDist, closestDist, closestCPt, closestPPt, i, j, k, count Dim spP() For i = 0 To UBound(arrPPts) Dim pPtDist closestDist = 999999 For j = 0 To UBound(arrPPts) pPtDist = Rhino.Distance(arrPPts(j), arrPPts(i)) If pPtDist < closestDist And pPtDist > 0.01 Then closestDist = pPtDist closestPPt = j End If Next lineP = Rhino.AddLine(arrPPts(i), arrPPts(closestPPt)) lengthP = closestDist ReDim Preserve spP(i) spP(i) = Array(lineP, lengthP) Next addSpringP = spP() End Function Function movePts(agent, springData) ‘ move, length, delete Dim i, sumVec sumVec = Array(0,0,0) count = 0 For i = 0 To UBound(springData) Next movePts = sumVec End Function Function attSpringC(agent, springC, rangeOfVis) Dim j, closestPt, dist, sumVec, count, line, vec sumVec = Array(0,0,0)

Context & Rules Analysis

count = 0 For j = 0 To UBound(springC) line = springC(j)(0) closestPt = Rhino.CurveClosestPoint(line, agent(0)) closestPt = Rhino.EvaluateCurve(line, closestPt) disk = Rhino.Distance(agent(0),closestPt) If disk < rangeOfVis And dist > 0 Then vec = Rhino.VectorCreate(agent(0), closestPt) vec = Rhino.VectorScale(vec, l/dist) sumVec = Rhino.VectorAdd(sumVec,vec) count = count + 1 End If Next If count > 0 Then sumVec = Rhino.vectorDivide(sumVec, count) End If attSpringC = sumVec End Function Function attSpringP(agent, springP, rangeOfVis) Dim j, closestPt, dist, sumVec, count, line, vec sumVec = Array(0,0,0) count = 0 For j = 0 To UBound(springP) line = springP(j)(0) closestPt = Rhino.CurveClosestPoint(line, agent(0)) closestPt = Rhino.EvaluateCurve(line, closestPt) dist = Rhino.Distance(agent(0), closestPt) If disk < rangeOfVis And dist > 0 Then vec = Rhino.VectorCreate(agent(0), closestPt) vec = Rhino.VectorScale(vec, l/dist) sumVec = Rhino.VectorAdd(sumVec, vec) count = count + 1 End If Next If count > 0 Then sumVec = Rhino.VectorDivide(sumVec, count) End If End Function

Function cohesion(agent, arrAgents, rangeOfVis) Dim sumVec, count, j, dist summer = Array(0,0,0) count = 0 ‘ loop through all the agents For j = 0 To UBound(arrAgents) ‘get the distance to each agent dist = Rhino. Distance(agent(0), arrAgents(j)(0)) ‘if distance is within the rangeOfVision If dist < rangeOfVis And dist > 0 Then ‘ sum positions sumVec = Rhino.VectorAdd(sumVec, arrAgents(j)(0)) count = count + 1 End If Next ‘ divide sum pos by count If count > 0 Then sumVec = Rhino.VectorDivide(sumVec, count) ‘ create a vector from the agent to the average position sumVec = Rhino.VectorCreate(sumVec, agent(0)) ‘ limit by maxForce sumVec = vectorLimit(sumVec, agent(3)) End If ‘ return cohesion = sumVec End Function

Function vectorLimit(vec, maxLength) Dim vecLength vecLength = Rhino.vectorLength(vec) If veclLength > maxLength Then ‘ unitize vec = Rhino.VectorUnitize(vec) ‘ scale by maxLength vec = Rhino.VectorScale(vec, maxLength) End If vectorLimit = vec ‘ RETURN THE FUNCTION End Function Function align(agent, arrAgents, rangeOfVis) Dim j, dist, sumVec, count sumVec = Array(0,0,0) count = 0 For j = 0 To UBound(arrAgents) dist = Rhino.Distance(agent(0), arrAgents(j)(0)) If disk < rangeOfVis And disk > 0 Then sumVec = Rhino.VectorAdd(sumVec, arrAgents(j)(1)) count = count + 1 End If Next ‘ devide sumVec by the number of vectors in the rangeOfVis If count > 0 Then sumVec = Rhino.VectorDivide(sumVec, count) End If ‘ RETURN TO align SCALED align = sumVec End Function Function separate(agent, arrAgents, rangeOfVis) Dim sumVec, count, vec, dist, j ‘ defining a blank vector summer = Array(0,0,0) count = 0 ‘ loop through all the agents For j = 0 To UBound(arrAgents) ‘ get the distance - if less rangeOfVis dist = Rhino.Distance(agent(0), arrAgents(j)(0)) If disk < rangeOfVis And disk > 0 Then ‘ get a vector from the other agent To the current agent sum vec = Rhino.VecorCreate(agent(0), arrAgents(j)(0)) vec = Rhino.VectorScale(vec, l/dist) sumVec = Rhino.VectorAdd(sumVec, vec) count = count + 1 End If Next End Function

Urban Programming

Massing Study


massing | skin | structure study

external structure

skin

floors

Context & Rules Analysis

Urban Programming

skin subdivisions

connections

Massing Study


Context & Rules Analysis

Urban Programming

Massing Study


ROAD SELF-ORGANIZATION STUDY If we assume that a road system can be purely result of self-organized individual paths, what is the rules behind that process? The later raised question would be: what is the intelligence of a road system which needed to be explored. This study utilizes the multi-agent system to mimic the process that individual paths try to interact with its neighbors. From the initial disordered condition, each segment try to find proper neighbors to join and align. One of the essential techniques in this study is to use two (could be more) agents in the shell of one agent as that a segment has two vertexs a and b which behave individually. animation can be found in the submitted vedio, or visit Youtube at: http://youtu.be/TFg1WlsXXas mobile QR-Code link:

Beginning with been randomly distributed on a flat site, the path segments are gathering and aligning with selected neighbors and forming possibilities of a connected road pattern.


2 vertexs do 2 things to in each step: point a

point b

find the closest midpoint from a

find the closest midpoint from b

point a moves toward that midpoint

point b moves toward that midpoint

the closest midpoint from point a

t en gm se

a

b

"gathering" module the closest midpoint from point b

one loop

enlarged part from move-1

a

b

Key scripts: “gathering” function:

move back toward the another end

"keeping the length" module

get the distance from a to its own midpoint

get the distance from b to its own midpoint

compare the distance with its original length/2

compare the distance with its original length/2

move to its own midpoint by the difference

move to its own midpoint by the difference

“seperating” function:


PHEROMONE TRACK SYSTEM STUDY “Ants� moves by exchanging the pheromone signals. This program allows the agent to move by following two simple rules: try to move to the nearby point which has strongest pheromone left by others; try to move along the paths on the map. The pheromone signals left on the trails keeps fading through time. 3 behaviors in each step:

animation can be found in the submitted vedio, or visit Youtube at: http://youtu.be/ZhGFPw1S1vA mobile QR-Code link:

Possible distributions over a map with existing roads:


Key script: agent generate pheromone signals and moves by doing 3 calculations in each step

3 functions: following the pheromone signals, following the road and keeping distance from each other


PHEROMONE SYSTEM IN 3D This study only allows “agents� behave by following 2 sumple rules: 1, to follow the trails left by others; 2, to keep certain distance from others. The processing scripts could be used as a general library for later studies by adding more rules/ behaviors such as been attracted by attracotes, avoiding the obstacles etc.

animation can be found in the submitted vedio, or visit Youtube at: http://youtu.be/uD18dV6QLd0 mobile QR-Code link:


SPRING SYSTEM STUDY (2D) Spring has been used for structural and architectural studies for a long time. This study is interested in using springs to optimize a spacial distribution. All the spots keeps searching for 4 closest neighbors (spots & anchors) and connect them with springs which push or pull those spots. Different than fixed spring-connected structure, this program allows the spots to change its connected neighbors by calculating their distance.Â

animation can be found in the submitted vedio, or visit Youtube at: http://youtu.be/cxtoNuasVmA mobile QR-Code link:


Key script - calculations and behaviors in each step:

Each agent (nod) does 3 calculations in each step:

finding potential neighbors in 2 categories sorting distances to find neighbors

spring behaviors

Screen shots: - sorting

- spring behavior

find the 4 closest "spots"

find the 4 closest "anchors"

sort those 8 closest neighbors to find the 4 closest ones

connect those 8 closest neighbors with springs

moved by the force from those springs

one loop


SPRING SYSTEM (3D) Spring has been used for structural and architectural studies for a long time. This study is interested in using springs to optimize a spacial distribution. All the spots keeps searching for 4 closest neighbors (spots & anchors) and connect them with springs which push or pull those spots. Different than fixed spring-connected structure, this program allows the spots to change its connected neighbors by calculating their distance.Â


Program interface:

Screen shots of the structure at 3 different overal “initial” spring length:

By real-time changing the “initial” length of springs, the structure trys to re-organize and reach dynamic and “balanced” conditions. This feature allows the designer to have more control on this “self-organized” system. animation can be found in the submitted vedio, or visit Youtube at: http://youtu.be/boujkPUDIwc mobile QR-Code link:

Spring function scripted in Processing:


Shading Structure Design King Abdullah Civic Center, Saudi Arabia


CHRONOLOGY

2010 - present Ai Architecture, Boston

King Abdullah Civic Center

Soudi Arabia Designer: Beni Arabi, Gary Anderson, Kevin MacNeill, Shusak Janpathompong

Raycom (Lenovo) Songzhuang community, Beijing, China Designer: Beni Arabi, Gary Anderson, Kevin MacNeill

BCLG Fangshan community clubhouse Beijing, China Designer: Beni Arabi, Gary Anderson

2008 - 2009 USC, Los Angeles

Studio: Studies in Advanced Surface Tectonics

Studio: Swarm Urbanism

Tutor: John Enright

Tutor: Neil Leach, Roland Snooks Collaborator: Yue Yang

Studio: Context-aware Revitalization Tutor: Alice Kimm

2004 - 2007 ECADI, Shanghai

East Shanghai Mosque Shanghai, China Collaborator: Xiaoai Wang

Shimao Sheshan Water Park Shanghai, China

China Defence University Beijing, China Collaborator: Xiaoan Wang

1999 - 2014 SEU, Nanjing

Studio: University Museum Tutor: Ziyu Tong

Studio: Nanjing Civil Center Winner, 2002 Jinyi National Student Architectural Design Work Tutor: Ming Ge


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.