PatronWorld - by Shawn Graham

cf "Behaviour Space: Simulating Roman Social Life and Civil Violence" [link to come!]

This page was automatically generated by NetLogo 3.1.2. Questions, problems? Contact

The applet requires Java 1.4.1 or higher. It will not run on Windows 95 or Mac OS 8 or 9. Mac users must have OS X 10.2.6 or higher and use a browser that supports Java 1.4. (Safari works, IE does not. Mac OS X comes with Safari. Open Safari and set it as your default web browser under Safari/Preferences/General.) On other operating systems, you may obtain the latest Java plugin from Sun's Java site.

created with NetLogo

view/download model file: PatronWorld-public.nlogo


This model recreates the Roman morning ritual of the 'Salutatio'. Men of lesser standing ('clients') would present themselves in the first hours of the morning to men of higher standing ('patrons'). The order in which one was received would indicate one's standing. Similarly, for the patron, the number and quality of his morning visitors would indicate his prestige. Then, the patron and his clients would process to the forum to conduct the mornings' (ie, the patron's) business. The salutatio was a means by which the social order in a particular city could be displayed and re-affirmed.

During the salutatio, the business between patrons and clients would be conducted. There was no formal banking system in the Roman world, but clients could approach a patron and ask for loans, or deposit their money with the patron. The patron, as a man of power, could protect the money better than the client. This whole system is better thought of as a gift-exchange system, where gifts could be expected to be repaid with interest, whether monetarily, in kind, or through political support.

There was nothing inherent in this system which would prevent a client from having multiple patrons. For a patron, having numerous clients was a visible sign of his power, authority, and abilities. For a client, having numerous patrons would spread the risk, and act as a sort of insurance in case of hard times.


After an initial round ('initialise-society') where everybody gets to know some others, romans compare their own status with the statuses of people they know. This determines whether they'll go visiting, or wait to recieve visitors. The visiting romans look for somebody from their list who isn't engaged, and is at home. Then they visit them ('salutatio'). They pay their respects, and return home. Then, they look for another person on their list, and visit them in turn. After an allotted time, everyone calculates their new status. Status calculation looks at how many people have visited you, and in what position you were when you paid your visit, to determine new status (check pay-respects routine as well, they work in tandem).


1. Agents examine their own status level (which initially is a function of how many people they know), and pay respects to individuals they know who have a higher status than themselves.
2. Being seen to have many high status ‘clients’ increases an agent’s own status.
3. Being admitted to visit a high status ‘patron’ increases the status of the visitor.

These three rules are fundamental procedure of the model, and recreate the morning ritual of ‘salutatio’, of paying respects to your social betters.

4. Gift-exchange occurs when agents pay respects, cementing their relationship and also allowing for the redistribution of wealth.
5. Trade occurs between agents of similar (though not exact) status level.

After paying their respects, agents manoeuvre through their world, seeking to trade (to play the game) with others of similar status. I have opted to model the basic mechanism of trade in my model as a type of game, where the chances of a favourable outcome depend on one’s status. The mechanism is not a zero-sum game, where if one agent wins, the other necessarily loses. Rather, success depends on the agent’s level of status compared against the chances of a favourable outcome given a particular economic ‘climate’ (set by the user). Both agents could win, only one could, or both could lose. The ‘climate’ stands in for a host of temporary influences. When two agents meet to trade, the ‘climate’ represents whether the agents have good market information, whether they are good dealers, whether one is having an off-day, or any one of the potential factors which influence whether one gets the best of any particular deal.

There is nothing ‘traded’ per se. Instead, I model the outcomes of economic exchanges, the idea being that the more prestigious you are, the more likely you will get the best of any particular encounter. If an agent wins, his money is increased by the ‘risk-factor’, a variable that sets how much an agent stands to win or lose. Similarly, if he loses, his money is decreased. Increasing money can lead to increasing status, but not necessarily (it depends on the agent’s status in the first place. Think of the ancient writer Petronius’ literary creation Trimalchio, the wealthy freedman who despite his enormous wealth still had very little status). Giving gifts enhances prestige, and while initially decreasing wealth, it increases a patron’s chances of achieving greater economic success in the long-run.

This simple model of Roman social organisation displays interesting behaviour that may cast Roman history in new light. When the model runs with only rules 1 to 3, enormous disparities in status level emerge. When rules 4 and 5 are turned on, the trading mechanism allows agents to make new acquaintances, ie they can learn about other agents previously unknown to them who have higher status. In this fashion they have opportunities to join new chains of patronage. The trading mechanism therefore opens up the possibility of social mobility. It is not success in trade that creates this possibility, but rather the process of becoming known to new individuals. If the trade mechanism is turned off, the process of paying respects alone causes the overall social structure to ossify.


In early versions of the model, the investigator could explore the effects of ‘shocks’ to the system through the action of a deus ex machina button that would randomly kill high status agents. If the overall difference in status in the artificial society between ‘high’ and ‘low’ was not great, social life continues – everyone moved up a notch to occupy the space vacated by the dead agents. If the spread was great however, the artificial society would quickly evolve to what resembled a kind of despotism where there was only one extremely high status individual and everyone else was extremely low status. Agents ceased to pay respects to one another, and effectively the society had collapsed. In this situation, killing seemed to have no effect, since no one paid respects (all were equal in terms of their status) and there was no possibility of changing status and occupying the vacant niches.

Obviously, having a ‘smite!’ button was not satisfactory. Work by Joshua Epstein (2002) on modeling political violence suggests a mechanism for allowing purges to emerge spontaneously from the model itself. In Epstein’s model, agents rebel if government legitimacy is perceived to drop below an agent’s tolerance for bad government – but they only spring into action when other, similarly rebellious agents are nearby. Action in that model depends not only on an agent’s internal state, but also on its social context. The social context for rebellion could be dampened by having ‘police’ agents who wander the world; agents who cared about getting arrested would be less likely to rebel.

The mechanism then depends on a combination of internal state and environment. I translated this mechanism into PatronWorld by first giving each agent a capacity for holding a grudge. Remember that patrons’ status is enhanced by the status of those who visit. It is therefore in the interests of patrons to make sure that their clients are suitably notable themselves before allowing them the opportunity to participate in the salutatio. Denying agents who have too low a status the chance of paying their respects, and so limiting access to networks of patronage, creates a ‘grievance’ and eventually a basis for political violence. Agents remember who has denied them the opportunity to join their patronage network (ie, denied them the chance to participate in the salutatio). Each individual agent has its own randomly set tolerance for rejection (‘grievance’ level), but actually acting on this grievance depends on whether or not enough other agents are ready to act. When does PatronWorld tip into violence? When the global measure of patrons’ legitimacy, ‘oppression’ (their ability to ‘oppress’ the masses) is exceeded by the number of agents ready to become violent. For each individual agent this measure of legitimacy is called ‘auctoritas’, or authority: a measurement of the agent’s wealth and prestige.

When agents become violent, death ensues. Agents do not kill randomly, but rather target other agents against whom they have a grievance. This of course can set off cascades of killing, as the removal of individuals changes the social environment for the salutatio, changing the levels of prestige, the chains of connected individuals, and the overall auctoritas in PatronWorld


Hit "setup random network" to set up the world with a normal distribution of social contacts -OR-
Hit "setup using social network data" to set up the world with a population with social connections drawn from archaeology or history

NB: to use your own file, edit the 'network-file' chooser and add your file name there. Make sure your file is a text file, with each agent identified by a number, so:

10 12 14 18
12 32 5 10
5 6 9 14 23 56

means that agent 10 is connected to agent 12, agent 14, agent 18 etc. Note that this is a one-way directed graph; if you want reciprocal links, then make sure that agent 10 also appears in agent 12's list, and so on.

Hit go to begin the simulation.

The 'write socnet' button lets you export the social network to a text file at the end of the model run, for further analysis if you so desire.

The ‘run’ variables are gathered under the label ‘economic climate’. ‘Harshness’ refers to the chance of concluding a beneficial transaction – the closer this approaches 100, the more perfectly harsh the climate and the less likely a beneficial transaction will occur. ‘Risk-factor’ is a multiplier used by agents to set how much of their wealth they are willing to risk in any given transaction. The maximum that this may be set in the model is at a third of an individual’s wealth (to reflect the inherent conservatism of Roman investment practices). Finally, ‘sportulae’ (Latin for ‘gift given by patrons to clients) refers to the maximum size of the gift that might be given by the patron to his client, and is a fraction of the patron’s wealth.

The remaining ‘on/off’ switches are used for testing the various components of the model, to allow the model to run with for instance the violence routines turned off. Exact instructions for running the model, how to adapt, expand, or alter it, are packaged with the model itself on the ‘information’ tab. The code itself may be found under the ‘procedures’ tab.

As the model runs, ‘reporters’ record the number of patrons, clients, the amount of money in the system, the division of the population into thirds based on status level (‘class’), and the emergence of alliances between agents (‘houses’ – initially each agent has a unique colour. As a client participates in a particular network, he changes his colour to that of his patron. As the model progresses it is quite possible to see the population stabilize into only a handful of colours.) ‘Mobsize’ and ‘oppression’ (the collective auctoritas of the patrons) are also plotted over time, giving a record of when the population tipped into violence.


See my article!


You will notice in the code procedures and other elements set off from the code by semicolons. The semicolons tell Netlogo to ignore these pieces of code. These pieces represent ideas that I tried in the development of the model, or reporters and graphs that I used to test that the different parts of the model were working. Feel free to try to reintegrate these - delete the semicolons, and netlogo will recognise them again. In the case of reporters or graphs, you might have to make a new graph on the interface screen to clear any error messages.


More recent editions of netlogo feature a whole suite of network-theory elements. It would be interesting to use those as the network substrate, instead of the lists that are used here. At the very least, it might speed up the model.


S. Graham. 2009. PatronWorld.