This Python-based simulator extends Selectorate Theory by integrating evolutionary game theory, risk-sensitive voting behavior, and ideologically biased voter modeling. It explores how political leaders maintain power by dynamically adapting their strategies for public/private goods allocation, under constraints of partial voter observability and coalition beliefs.
The simulator models iterative election cycles where candidate strategies evolve based on electoral fitness, voter expectations, and ideological alignment. It is designed for academic experimentation, political modeling, and reinforcement learning extensions.
- Ideological voter modeling with risk profiles (safe-seeking, risk-seeking)
- Dynamic allocation of public and private goods by candidates
- Evolutionary update rules with Gaussian mutation
- Support for fixed or mutating ideological platforms
- Coalition formation and strategic voting under uncertainty
- Each voter has:
- Ideological position
p_i ∈ [0,100]
- Risk profile: risk-seeking or safe-seeking
- Ideological position
- Voters cast ballots based on:
- Policy proximity:
-|p_i - p(c)|^2
- Public goods:
α_c × (R / |V|)
- Private goods:
(1 - α_c) × (R / |W_c|)
if included in candidate’s coalition
- Policy proximity:
- Each candidate has:
- Ideological position
p(c)
- Resource strategy
π_c = (α_c, 1 - α_c)
- Ideological position
- Resources
R
are divided:α_c
fraction to all voters (public goods)1 - α_c
to expected supporters (private goods)
- Winning coalition
W_c ⊆ S_c
is formed from supporters
- After each round:
- The candidate with the largest viable coalition is elected
- Losers are replaced by mutated copies of the winner
- Mutation rules:
α_c' = α_c + ε, ε ∼ N(0, σ²)
p(c)' = p(c) + η, η ∼ N(0, τ²)
(optional)
- Fitness Function:
f(c) = |W_c|
if elected, 0 otherwise
- Python 3.7+
numpy
Install dependencies using:
pip install numpy
- Clone the repository by running this command in the course VM terminal:
git clone https://github.com/VictorLi5611/political-evolution-sim.git cd political-evolution-sim
- Run the simulation:
python3 simulation.py
- Adjust parameters inside
simulation.py
to configure:
- Number of voters and candidates
- Mutation standard deviations
- Policy mode (fixed vs. evolving)
- Coalition thresholding and risk models
political-evolution-sim/
├── simulation.py # Main simulation script
├── README.md # Project README
Victor Li
GitHub: VictorLi5611
MSc Computer Science (Data Science)
Carleton University
Research interests: Multi-agent systems, political modeling, reinforcement learning