# The Law of Motion

## Description

The relationships in a power structure determine how the sizes of the agents change over time. Constructive relationships cause the agents to grow; destructive ones cause them to shrink. As power flows around the network, some agents rise in strength and other agents weaken. This process is depicted visually below, acting over four time steps:

In the figure above, two of the agents are cooperating, and getting stronger over time as a result. The other two agents are attacking each other, and getting weaker as a result of their conflict.

This process is called the **law of motion**, and it describes what happens when power flows through the network. The law of motion tells us how the power of agents evolves in time as a result of transactions among the agents. Its significance is that it allows us to calculate and visualize the systemic effects of individual agents' tactics, playing them out over time. It captures something intuitive and important about power. For instance, below a hegemonic agent at the hub of a network gets stronger over time:

And here's how the sizes of the agents would change during a rebellion:

Scenarios often involve combinations of positive and negative relationships that are intertwined with each other, such as this one:

The law of motion operates upon the entire network of a power structure. Its effects on any given agent are not based solely upon the agents with whom it is immediately interacting. Agents in other parts of the network can also affect an agent's fate. Power sloshes around like a fluid, enlarging some agents who become beneficiaries to their downstream clients, and weakening other agents due to conflicts occurring in remote corners of the graph. This fluid-like nature of the law of motion may be more evident when we look at an animation:

Everyone's destinies are interconnected, and while it's not always obvious from looking at a power structure how any given agent will fare, the process is deterministic and predictable. Consider the power structure below left:

The plot on the right shows how the sizes of the agents in this power structure change over 20 time steps, according to the law of motion. Looking at similar size plots from randomly generated, five-agent power structures, we observe that power can move around a network quite dynamically:

Where there are reversals of fortune — agents growing and then shrinking, or vice versa — it is due to the fact that agents are affected by indirect connections with other agents. Agents several degrees of separation away can affect an agent's growth rate, such as when one's ally is attacked by a third party:

Another phenomenon to note, one that is a consequence of Axiom 2, is that even if an agent were to launch a unilateral attack, it would still lose power:

The attack itself expends power, so the attacking agent shrinks, albeit at a slower rate than the agent being attacked.

## Derivation

The mathematical formula for the law of motion follows directly, and trivially, from the first three axioms. Axiom 1 says that a constructive action is a transfer of power from one agent that increases the power of another agent. If agent #1 engages in a constructive action, of magnitude x, with agent #2, then agent #1's power decreases by x and agent #2's power increases by at least x. The resulting changes to the agents' sizes can be represented as:

- [math]\displaystyle{ \Delta s_{1} = -x }[/math]
- [math]\displaystyle{ \Delta s_{2} = \beta x }[/math]

where the parameter β quantifies the magnitude of agent #2's increase.

Axiom 2 says that a destructive action is a transfer of power from one agent that decreases the power of another agent. So if agent #1 acts destructively towards agent #2 with a magnitude of x, then agent #1's power decreases by x and agent #2's power decreases by at least x. These changes in size can be expressed as:

- [math]\displaystyle{ \Delta s_{1} = -x }[/math]
- [math]\displaystyle{ \Delta s_{2} = -\mu x }[/math]

where the parameter μ quantifies the magnitude of agent #2's decrease. The law of motion for destructive action is similar to Lanchester's laws of the changing strength of opposing military forces in combat. This theory, expressed as a set of differential equations, describes the rate at which the strength of each party diminishes as the conflict continues. An example of the analogous process in our model is:

Axiom 3 says that agents tend to dissipate power. Any power that they don't use will decrease, in each time step, at a rate defined by the parameter λ, where λ < β.

The variable x used above in the formalization of represents the amount of power expended during an action. It is the percentage of power devoted to the action times the agent's size:

- [math]\displaystyle{ x=\mathbf{T}_{ij} m\mathbf{s}_{j} }[/math]

where destructive actions are represented by negative values in the tactic matrix **T**, and m is either β, μ, or λ, as appropriate.

## Formalization

The equation for the law of motion uses matrix multiplication to update the sizes of all agents at once:

- [math]\displaystyle{ \mathbf{s}_{t+1}= \operatorname{Ramp}((\mathbf{T}_{t} \circ \mathbf{M}_{t}). \mathbf{s}_{t}) }[/math]

The º operator is the Hadamard product (element-wise matrix multiplication) and **M** is a multiplier matrix defined as:

- [math]\displaystyle{ (m_{ij}) = \begin{cases} \lambda & i = j \\ \beta & \tau_{ij} \ge 0 \\ \mu & \tau_{ij} \lt 0 \\ \end{cases} }[/math]

For example, here's a ternary tactic matrix and its associated multiplier matrix when β=2, μ=3, and λ=0.99:

When an agent dies, its power cannot be less than 0. The existence of negative sizes, besides being meaningless, would cause subsequent update operations to behave counterintuitively. The Ramp function sets any negative sizes that result from the law of motion to 0.

One way to implement the law of motion in code is:

`UpdateS[s_, T_] := Ramp[(T*M[T]).s]`

The multiplier matrix is determined by:

`M[T_] := Table[Which[i==j, λ, T[[i, j]] >= 0, β, True, μ], {i, Length[T]}, {j, Length[T]}]`

## Alternative Formulation

We could also express the law of motion by decomposing **T** into positive, negative, and self-allocating parts:

- [math]\displaystyle{ \mathbf{T} = \mathbf{T^+} + \mathbf{T^-} + \mathbf{T^0}. }[/math]

The law of motion can then be expressed as:

- [math]\displaystyle{ \mathbf{s}_{t+1}= \operatorname{Ramp}((\beta\circ\mathbf{T^+}_{t} + \mu\circ\mathbf{T^-}_{t} + \lambda\circ\mathbf{T^0}_{t}). \mathbf{s}_{t}) }[/math]

where β, μ, and λ are each [math]\displaystyle{ n \times n }[/math] matrices in which each relationship (and direction) can have a unique value. This version of the law of motion is useful when modeling real world situations in which a relationship is both positive and negative at the same time — for example, if two countries are at war but nonetheless continue trading with each other.

## Simulation

The law of motion can be simulated over a number of time steps by applying it iteratively to an initial power structure:

`Simulate[s_, T_, t_] := Nest[UpdateS[#, T] &, s, t]`

The function above returns a size vector representing the strengths of the agents at time t.

Note that the implementation on this page has been simplified for explanatory purposes. A more performant version, capable of handing edge cases, is available in the code repository.