So I had a go at building a model based on the idea that trade range determines city size.
In each town there are some people (the size of the circle represents how many people live there). There are 5 resources. Four of them can be harvested from the environment. The fifth needs a combination of three others to be produced. Each town gets a bonus to one type of resource (the colour represents which bonus it gets, green is food, the others are red, blue and grey).
Each town has an infinitely deep market. So you can make something and sell it immediately, with the price falling a little. And you can buy anything you like, any time, with the price rising a little. This circumvents the problem of arranging barters.
Every turn each person does the most economically profitable thing for them. So either they will produce something and sell it on the market. Or they will trade by going to a neighbouring town and buy something and bring it back and sell it for a profit. They will then spend the money on as much stuff as they can afford, prioritising food. The more of their needs are filled the happier they are.
Once in a while a person will look around and if the average happiness in another town is higher than the average happiness in their town they will move to the other town.
The model runs super fast (like hundreds of turns per second). This video shows some runs with trade factor (how much you can trade with your neighbours) going from 0 (no trade) to 8 (super high trade). As you can see at first the people like to live in the agricultural areas (though this is partly a glitch) and this represents hunter gatherers. However as the trade factor increases trade (represented by grey lines) starts to become important and then dominate. The population starts to cluster in places where all the resources are available.
I am not very happy with the outcome, it’s a bit odd. I think it might be better to explicitly program in these relationships rather than “go in blind” and have each agent be selfish. The advantage of this model is that it is the product of many selfish agents and could make a good basis. The idea was that you would be able to interfere as much (authoritarian communism) or as little (libertarian capitalism) as you liked with the people in your area. There could be banking crises and trade wars and inflation problems etc.
See what you think.