Revision Protocol¶
—
Base Class
The abstract base class for all revision protocols is defined below.
- class popgames.revision_protocol.RevisionProtocolABC[source]¶
Bases:
ABCAbstract base class for revision protocols.
- abstractmethod __call__(p, x)[source]¶
Subclasses must implement this method to enable the revision protocol to be called as a function.
- Parameters:
p (np.ndarray) – The payoff vector with shape (n, 1).
x (np.ndarray) – The population state vector with shape (n, 1).
- Returns:
The switching probabilities as a matrix with shape (n, n).
- Return type:
np.ndarray
—
Softmax Revision Protocol
- class popgames.revision_protocol.Softmax(eta)[source]¶
Bases:
RevisionProtocolABCSoftmax revision protocol. Also known as Logit-Choice revision protocol.
Initialize the Softmax revision protocol object.
- Parameters:
eta (float) – The temperature or noise parameter.
- __call__(p, x)[source]¶
Evaluate the Softmax revision protocol.
- Parameters:
p (np.ndarray) – The payoff vector with shape (n, 1).
x (np.ndarray) – The population state vector with shape (n, 1).
- Returns:
The switching probabilities as a matrix with shape (n, n).
- Return type:
np.ndarray
Examples
>>> import numpy as np >>> from popgames.revision_protocol import Softmax >>> softmax = Softmax(eta=1) >>> p = np.array([1, -1, 2]).reshape(3, 1) >>> x = np.array([0.1, 0.7, 0.2]).reshape(3, 1) >>> softmax(p, x) array([[0.25949646, 0.25949646, 0.25949646], [0.03511903, 0.03511903, 0.03511903], [0.70538451, 0.70538451, 0.70538451]])
—
Brown-von Neumann-Nash (BNN) Revision Protocol
- class popgames.revision_protocol.BNN(scale)[source]¶
Bases:
RevisionProtocolABCBrown-von Neumann-Nash (BNN) revision protocol.
Initialize the BNN revision protocol object.
- Parameters:
scale (float) – The scale parameter to ensure well-posed probabilities.
- __call__(p, x)[source]¶
Evaluate the BNN revision protocol.
- Parameters:
p (np.ndarray) – The payoff vector with shape (n, 1).
x (np.ndarray) – The population state vector with shape (n, 1).
- Returns:
The switching probabilities as a matrix with shape (n, n).
- Return type:
np.ndarray
Examples
>>> import numpy as np >>> from popgames.revision_protocol import BNN >>> bnn = BNN(scale=0.1) >>> p = np.array([1, -1, 2]).reshape(3, 1) >>> x = np.array([0.1, 0.7, 0.2]).reshape(3, 1) >>> bnn(p, x) array([[0.12, 0.12, 0.12], [0. , 0. , 0. ], [0.22, 0.22, 0.22]])
—
Smith Revision Protocol
- class popgames.revision_protocol.Smith(scale)[source]¶
Bases:
RevisionProtocolABCSmith revision protocol.
Initialize the Smith revision protocol object.
- Parameters:
scale (float) – The scale parameter to ensure well-posed probabilities.
- __call__(p, x)[source]¶
Evaluate the Smith revision protocol.
- Parameters:
p (np.ndarray) – The payoff vector with shape (n, 1).
x (np.ndarray) – The population state vector with shape (n, 1).
- Returns:
The switching probabilities as a matrix with shape (n, n).
- Return type:
np.ndarray
Examples
>>> import numpy as np >>> from popgames.revision_protocol import Smith >>> smith = Smith(scale=0.1) >>> p = np.array([1, -1, 2]).reshape(3, 1) >>> x = np.array([0.1, 0.7, 0.2]).reshape(3, 1) >>> smith(p, x) array([[0. , 0.2, 0. ], [0. , 0. , 0. ], [0.1, 0.3, 0. ]])
—
Replicator Revision Protocol
- class popgames.revision_protocol.Replicator(scale)[source]¶
Bases:
RevisionProtocolABCReplicator revision protocol. Also known as Pairwise Proportional Imitation revision protocol.
A revising agent observes a randomly chosen opponent and imitates its strategy with probability proportional to the payoff excess of the opponent’s strategy over its own. The resulting mean dynamics are the replicator dynamics.
Strategies that are absent from the population (i.e.,
x_j = 0) are never imitated. Hence, unused strategies remain unused.Initialize the Replicator revision protocol object.
- Parameters:
scale (float) – The scale parameter to ensure well-posed probabilities. A sufficient condition is
scale <= 1 / (max(p) - min(p)).
- __call__(p, x)[source]¶
Evaluate the Replicator revision protocol.
- Parameters:
p (np.ndarray) – The payoff vector with shape (n, 1).
x (np.ndarray) – The population state vector with shape (n, 1).
- Returns:
The switching probabilities as a matrix with shape (n, n).
- Return type:
np.ndarray
Examples
>>> import numpy as np >>> from popgames.revision_protocol import Replicator >>> replicator = Replicator(scale=0.1) >>> p = np.array([1, -1, 2]).reshape(3, 1) >>> x = np.array([0.1, 0.7, 0.2]).reshape(3, 1) >>> replicator(p, x) array([[0. , 0.02, 0. ], [0. , 0. , 0. ], [0.02, 0.06, 0. ]])