SKYLINES & SCRAPERS HOME | THE WORLD'S BEST SKYLINES | THE WORLD'S TALLEST BUILDINGS | ONE CENTURY OF SKYSCRAPERS | SKYSCRAPER HEIGHTS ANALYSIS | THE MATHEMATICAL CITY | LINKS | FEEDBACK |

The Mathematical City

-- optimized for minimum travel times --

by Egbert Gramsbergen
**What is the problem?**

Suppose we lay down a big city of skyscrapers on a rectangular grid of streets.
We can travel along the streets with a certain velocity *v*
and vertically in the buildings with velocity *w*.
The velocities are constants and there are no waiting times and traffic jams.
As you see, a highly realistic model of a real city.
Each 3D point in the city (i.e. each floor in each building) attracts random traffic from each other point.
What shape should the city have, given fixed volume, in order to minimize the mean travelling time for all journeys?
Or, to state it differently, to minimize the total amount of traffic?

**The mathematics**
*(or skip the mathematics)*

First, let us suppose that *v=w*.
It makes the equations a bit simpler and we can scale the height of the buildings proportionally afterwards.
Furthermore, let us assume that the city is really big, so that we can ignore both the grid size of the street pattern
(there are many streets) and the hight of the floors (buildings have many floors).
We consider the city as a body with a distance between points *(x,y,z)* and *(x',y',z')* defined as *d=|x-x'|+|y-y'|+z+z'*.
Within the city *z>0*, *z=0* outside it.

Given a total volume, the integral of all distances from *any* point *P* to *any other* point *P'* within the body
is minimized if the integral of distances from a *fixed* point *P _{s}* on the

(1) |

(2) |

(3) | |

(4) |

(5) |

(6) |

(7) |

(8) |

(9) |

(10) |

(11) |

(12) |

(13) |

(14) |

(15) |

(16) |

(17) |

(18) |

(19) |

How to proceed from here? In order to get a practical numerical recipe, we take the x-derivative of (19) twice, defining

(20) |

(21) |

(22) |

(23) |

- Start with an educated guess for
*f(x)*, for example*f(x)=1/2-x*^{2} - Calculate
*g(x)*by solving*f(x)+f(g(x))=0*, which, after the first iteration, must be done numerically. This is a simple task for any modern spreadsheet program. In the steps ahead, we will need to know*g(x)*for any*x*, so it is convenient to develop a polynomial expansion or apply some other interpolation scheme. - Calculate
*A*with (20) - With the now known
*A*,*f'*and*g*calculate*f'''(x)*with (23) for a large number of points*x*between*0*and*g(0)*. This is the first step of a new iteration cycle with an improved funcion*f*. - Integrate twice, numerically, starting at
*x=0*. This involves two integration constants given by

and . We can take an arbitrary*f(0)*; scaling of the whole city can be done afterwards. - Go back to step 2 until
*f*becomes stable in the iteration process.

**The result**

created: 1997-08-09 last update: 2001-02-20 |