Design Doc
Source Code
Live Builds

Turns out it's difficult


Here's an attempt to be more honest with myself and you: I've been bullshitting myself into thinking that even the first step of implementing economy (in my ambitious sense) will be fairly straightforward. It's not.

I found this powerful abstraction of using chemical-reaction like activities (in which people and businesses convert some resources into other resources) as the basic building block to model all of the economy in a microscopic way. It seems like in theory I could model all of everyday life in a pretty detailed manner with that.

That is good. Feeling happy about this is good. Jumping to the conclusion that after this great inspiration everything will be easy is stupid. Still, I told both you and me that now I'm just "taking a couple days" to "figure out the last details" before I could get going with implementation.

Well turns out the details are really difficult and if I'm really honest with myself, it starts looking like I only figured out the details, but not the mostly everything.

I am humbled and reminded of this:

So in my slight feeling of discomfort I start looking into recent urban microsimulation research if maybe some people tried to do the same - turns out that, yes, others had exactly this idea.

But they were much more specialized in their applications of it, or, when they tried to show its suitability as a tool for modeling a whole economy (like me), they have still been much more humble in their goals for that (for example "food" being the only consumable resource in a very simple world).

Still, I conclude from reading these papers that my general approach is exactly the ideal theoretical way to go about it, that my "difficult parts" are indeed difficult. Others have just been much more careful in approaching them then me in my naïvety.

What is difficult?

I'll try to keep it short: I want to use activities not just to model what people do and what's going on at each moment in the simulation, but also use imagined 'what-if' activities to inform all kinds of high-level decisions, such as:

The first example is pretty simple, since it just affects one person which is evalutating one place, but even there, a large number of activities that this person can do at this school have to be evaluated according to different dimensions.

The second one is even worse, since moving will affect a whole household and now you suddenly might have to trade off the shorter way to work with a longer way to kindergarten, noisier roads and less places for social life, affecting multiple household members, for each all kinds of places of interest, each again offering several potential activities to be judged according to several metrics.

The third example is the worst in that the future pretzel-baker has to incorporate the shopping behaviour of all of his potential customers. Who are they even?

When I lay it out like this, the problem seems to be pretty obvious: a horrible combinatorial explosion of imagined activities to be evaluated, for decisions of just a single person or household.

Maybe slightly less clear is the underlying source of the problem (and this is my biggest insight so far, thanks to my research literature): I'm making a mistake by trying to model perfect knowledge and rational, motivated and flexible people.

The hope: more human humans

In reality, people are not always aware of all the choices they have, they might just have heard about a couple other options and only if the best option they know about is much better than what they currently have, they are motivated enough to change something.

Even then, they never fully evaluate each option, but use lots of thinking shortcuts and approximations to make quick judgements.

Even the business owner has to mix exact calculations with gut feeling when evaluating something as unpredictable as a market or as undefinable as a neighborhood.

By trying to model such imprecise decision-processes, I should not only get much more human behaviour in the simulation, but benefit computationally by doing orders of magnitude less comparison work.


So my new most difficult part is thus to somehow write down all of this handwavy gut-feeling intuition as concrete, programmable rules that are not just stupider, but actually make efficient use of being stupid...

The bright future

If I do manage to pull all of that off, I not only have exactly what I wanted (a cool-to watch, detailed, complex and realistic economy), but I also implemented as a proof-of-concept what current research papers only seem to carefully hint at! That would be cool.

What does this mean for our short-term plans? Well, obviously the February-feature-month will be extended, since it was only a concept-month so far, and I will keep you up to date with my progress on untangling this challenge!

→ Discussion on /r/Citybound