Competition for Scarce Resources

From Realpolitik.io
Jump to navigation Jump to search

Description

In quantitative realism, the power struggles in the model are over nothing more than power itself. In the real world, however, power struggles are often waged over the control of scarce resources. A resource could be many things, such as land, oil, minerals, food, or water. Here we show how the basic model can be extended to include resources that can be disputed and possessed.

One way to add resources to a power structure is to treat them as nodes that emit a certain amount of power to whichever agent exclusively possesses them.

Resource PS 1.png

In the power structure above, agents are shown in gray and resources in purple. At each time step, the resource nodes give power to the agents who possess them. The directed edges show the flow of "income" from these resources, and the downstream agents will tend to grow at a faster rate than others. This model extends the abstraction of power to encompass the benefits given off by resources: a resource is simply a source of power. In the real world, these sources might be of varying types; but in the model, they are abstracted into a single fluid-like substance.

With resource nodes introduced into a power structure, how is it decided which agent will get access to each resource? There are a variety of rules we could come up with to govern this competitive process. A simple one is: An agent is awarded with possession of a resource if the agent currently possesses the resource and continues to claim it, or is the sole claimant of the resource. This rule gives a right of continued possession to whichever agent already has a resource, and any resource claimed by only one agent remains in the possession of that agent.

The rule implies that when two agents both want to control a resource, two scenarios are possible: First, if one of them already possesses it, the other one has to create incentives for the owner to give up possession. Second, if neither of them own it, they have to fight it out until one of them gives up their claim. Again, other rules are possible, but this one is minimalistic in terms of both the assumptions it makes and the data structures it requires.

Formal Representation

Data Structures

To implement the rule above, we need to add three data objects to a power structure: a resource vector, a possession matrix, and a contention matrix.

A resource vector r indicates the amount of power given off by each resource to the possessor at each time step. For example, a vector of four resources might be: r = {0.029, 0.15, 0.03, 0.041}. Given this resource vector, whichever agent possesses resource #1 will get 0.029 units of power at each time step.

A possession matrix P keeps track of which agents possess which resources. Each row in the possession matrix corresponds to an agent, indicating with a 1 or 0 which resources that agent controls. (Note that this is a different convention from that used in tactic matrices, in which each column is an agent's tactic vector.) For example, in the possession matrix shown below, agent #1 possesses resources 1 and 4 (highlighted in orange):

Possession matrix.png

A contention matrix C tracks which agents have a claim over which resources. Like the possession matrix, each row represents an agent, and each column represents a resource. A 1 indicates that a particular agent claims that resource; a 0 indicates no claim. In the example below, agents #2 and #3 both have claims over resource 2 (highlighted in orange):

Contention matrix.png

The resource vector, possession matrix, and contention matrix can then be appended to a power structure object. For instance, here's a power structure with three agents and two resources:

Resource PS pretty.png

Law of Motion

Given this extended power structure, when the law of motion is applied, two things need to happen. First, the possession matrix needs to be updated by applying the possession rule above. Second, the law of motion needs to take into account the power emitted by each of the resources. We'll illustrate each of these in turn.

Updating the Possession Matrix

To update the possession matrix, we need to know who currently possesses what, and who is staking a claim on what. The following function applies the possession rule described above:

UpdateP[P_, C_] := MapThread[Max, {P*C, MapTransposed[If[#.# > 1, 0 #, #] &, C]}, 2]

Though it's a bit dense, this code awards each resource to whichever agent is the sole claimant, or to whichever one possesses it and continues to claim it. Applying the UpdateP function to the sample possession and contention matrices above returns:

UpdateP.png

Resource 1 (highlighted in orange) is both possessed and claimed by agent #1, so agent #1 gets to keep it. Resource 4 (highlighted in green) is claimed by agent #2 and possessed by agent #1, who doesn't want to claim it; so it is awarded to agent #2.

Updating the Size Vector

Now we can consider the second update process: updating the size vector in light of both the basic law of motion and the additive power given off by the resources:

UpdateS[s_, T_, r_, P_, C_] := UpdateS[s, T] + UpdateP[P, C].r

This function overloads UpdateS to account for resource possession.

Everything just mentioned is an extension of the law of motion. Along with it, at every time step, agents still need to craft their foreign policies, which would now include a claim vector indicating which resources they want to make claims upon.



<< Prev | Next >>