Towards Simplicity & Actual Realism
The last two months I spent very thoroughly developing a concept for economy (which I called the Activity Network), because it promised to achieve hyper-detail and infinite flexibility in the daily schedule and economic planning of households and companies, in a way that sounds very elegant on paper.
The descriptive power of the model and how it could simulate a wide range of city activities very accurately was clear from the beginning. Most of my time, however, I spent on the increasingly hopeless quest of figuring out how to grapple with the huge computational complexity that this approach entailed. I basically dug up and soaked in a whole field of research.
During this process I slipped into the mindset that I have to make this approach work, no matter what, or I would give up my ideals of detail and realism. I convinced myself that I am somehow heroically inventing something very new that will defy all computational realities.
Such thinking patterns are very dangerous! Better late than never, though, two days ago, I finally let go and allowed myself to come up with more diverse ideas.
I took the inspiration that some of you brought up of a simple needs-model akin to Prison Architect and started to play with his idea - and I soon realised that I only need...
Some very simple ingredients:
Time-varying needs for families and companies
- the most important change: the numbers for each need are not necessarily interpreted as precise absolute values - but more like a rough “how well are we doing on X”, indicating mostly the deviation from the normal state
- this gives some leeway and time to work out problems over time, instead of a dramatic hypersensitivity to even small events - making the whole economy much easier to debug and balance
- additionally, this comes much closer to the intuition of people and business owners, acting not on perfect knowledge, but a rough estimation of the most important issues
A simple market of offers
- where a company promises to serve a certain need for a certain cost
A list of favourite/frequently used offers per resource for each family/company
A simple policy of "fix the problem with the biggest payoff first"
- this is re-evaluated and applied many times per day for each family/company member
- very fast point-to-point pathfinding (already part of the traffic simulation) to estimate travel costs and to actually get to places
To summarise how it compares to the old model:
Can produce all the same behaviour in citizens and companies
- localised markets & market analysis
- rich set of resources & needs
- realistic activity scheduling in a day
- taking into account the current location and best mode of transport
Matches intuitive behaviour & imperfect knowledge much closer
Pretty straightforward to implement
Computational complexity looks pretty low
- this makes evolving daily schedules and even very spontaneous reactions of citizens/companies to unusual events feasible
Finally, here is what I did yesterday and today:
- Invented and started to sketch out the new model (PR #170)
- Started to integrate an existing UI library instead of trying to write my own one (#171)
- Being able to rapidly add even complicated UI will not only drastically improve the UI of upcoming prototypes but will allow me to quickly throw together all kinds of debug tools, to “see what I’m actually doing”, which will be hugely important for the economy
- Came up with an improvement to pathfinding, to be implemented soonish, will help both traffic and economy performance & accuracy (#169)
Let me know what you think! (Even if it is some form of "I told you!")