This project simulates the evolution of multiple innovators (e.g., research groups) in a competitive environment, such as the Boston research landscape. Each agent evolves its innovation and competition levels over time, influencing its overall fitness, according to a system of differential equations.
The model is governed by the following system of differential equations for each agent:
Where:
- Ii(t): Innovation level of agent i at time t.
- Ci(t): Competition level of agent i at time t.
- Fi(t): Fitness level of agent i at time t.
- rI,i: Innovation growth rate for agent i.
- rC,i: Competition growth rate for agent i.
- α, β, γ, δ: Constants representing interactions between innovation, competition, and fitness.
Each innovator (e.g. a research group) is modeled as an agent with the following attributes:
- Innovation: Represents the innovator's capacity for developing new ideas.
- Competition: Represents the pressure the innovator faces from other innovators.
- Fitness: Calculated based on innovation and competition.
- innovate(): Updates the innovation level according to the differential equation.
- compete(): Updates the competition level according to the differential equation.
- updateFitness(): Updates fitness based on innovation and competition.
- passTime(): Simulates the passage of one time step.
Manages the interactions between multiple research groups:
- simulate(): Runs the simulation over multiple time steps, updating the state of each innovator.
- logState(): Logs the state of all innovator at each time step.
To run the simulation:
- Compile:
javac src/*.java
- Run:
java -cp src CompetitiveEnvironment
- Plot the results in the jupyter notebook
plot.ipynb
. Make sure to adapt the file path of the .csv file containing simulation results.