Learning project which aims to simulate the evolution of a disease inside a defined population using Multi Agent system in Unity.
| Feature | Progress |
|---|---|
| Citizen Agent | Done |
| Mayor Agent | Done |
| Environment | Done |
| Simulation settings | Done |
| Use of real disease models | Done (Gaussian disease duration) |
The simulation take place in a fictive city where a disease is spreading.
Citizens are getting sick by getting close to another agent that is contagious.
Some rules lead the simulation :
- Citizens want to get outside or want to see people, if they can't their stress rise until they die if they can't satisfy their needs before the maximum time.
- Citizens follow rules that are set by the Mayor agent that can influence the ability of citizens to get outside or getting close of others.
The Setup scene provide some input that can be modified by the user to setup the simulation information.
Here are the meanings of the inputs:
- Population density: Number of citizens at launch time.
- Infectivity: Probability for a citizen to become sick when being close to another agent.
- Launch sick number: Percentage of sick citizen at launch time.
- Launch immuned number: Percentage of immuned citizen at launch time.
- Disease Duration: Disease duration in second.
- Death statistics: Death probability when being sick.
- Disease Transmission Distance: Transmission distance of the disease in meters.
Some scenarios are preset to provide some interesting simulation cases :
- Majority of the population vaccinated: 50% are vaccinated and 20% infected
- Disease really infective and quick: the infectiosity is really high, howerever the disease lasts only 20s
- Dense population with low infectivity: we generate 2000 agents with 10% infected and only 20% of infectiosity. The disease lasts 60s.
Some inputs allow the user to move the camera :
- Z: Move up
- S: Move down
- Q: Move left
- F: Move Right
- Space: Move Forward
- Left Ctrl: Move backward
- Escape: Quit application
Citizens can changed color when their state change:
- Green: Healthy citizen
- Blue: Immuned citizen
- Red: Sick citizen
Citizen disappear when they die.
Once the application exit, a CSV file is provided in the SimulationExport folder. This file contains
the following simulation information :
- Time: Timestamp of the new information
- PositionState: Current position state of the citizen when the new information happened
- SickingState: Current sicking state of the citizen when the new information
- x: X position of the citizen
- y: Y position of the citizen
- z: Z position of the citizen
- CauseOfDeath: Cause of the death if the new information is a death of a citizen.
- sickNumber : Sick number at the event time
- immunedNb : Immuned number at the event time
- deadNb : Dead number at the event time
This project has been tested with Unity 2019.3.11f1
A release can be found on the Github project "Release" field.

