Système de simulation et prédiction des problématiques d'urgence (incendies, accidents, agressions) auxquels les pompiers de Paris pourraient faire face.
- Python 3.12
- Conda (recommandé)
# Créer l'environnement conda
conda create -n paris_risques python=3.12
conda activate paris_risques
# Installer les dépendances
pip install -r requirements.txtpip install -r requirements.txtsrc/
├── core/
│ ├── data/ # Classes de base (Vector, constantes)
│ ├── events/ # Hiérarchie d'événements (Event, EventGrave, PositiveEvent)
│ ├── state/ # État de simulation (SimulationState)
│ ├── patterns/ # Détection et gestion de patterns
│ ├── probability/ # Calculs de probabilités
│ └── evolution/ # Évolution des variables d'état
├── services/ # Services applicatifs
├── adapters/ # Adaptateurs (UI, données externes)
data/
├── source_data/ # Données sources (pickle)
├── intermediate/ # Données intermédiaires
├── patterns/ # Patterns de référence
└── models/ # Modèles ML entraînés
tests/ # Tests unitaires et d'intégration
scripts/ # Scripts de pré-calcul et utilitaires
config/ # Configuration (config.yaml)
Les données pré-calculées doivent être générées en premier :
# Exécuter les scripts de pré-calcul
python scripts/precompute_matrices_correlation.py
# ... autres scripts de pré-calcul# Lancer la simulation
python scripts/run_simulation.pystreamlit run src/ui/app.pyReprésente un vecteur d'incidents par niveau de gravité : [grave, moyen, bénin]
from src.core.data.vector import Vector
# Créer un vecteur
vecteur = Vector(grave=1, moyen=2, benin=5)
print(vecteur) # [1, 2, 5]
# Depuis une liste
vecteur = Vector.from_list([1, 2, 5])Hiérarchie d'événements :
- Event : Classe de base abstraite
- EventGrave : Événements graves (incidents)
AccidentGraveIncendieGraveAgressionGrave
- PositiveEvent : Événements positifs (améliorations)
FinTravauxNouvelleCaserneAmeliorationMateriel
from src.core.events import AccidentGrave, FinTravaux
# Créer un accident grave
accident = AccidentGrave(
event_id="ACC_001",
jour=5,
arrondissement=11,
duration=4,
casualties_base=2,
characteristics={"traffic_slowdown": 0.7}
)
# Créer un événement positif
fin_travaux = FinTravaux(
event_id="FT_001",
jour=10,
arrondissement=11,
impact_reduction=0.1
)# Lancer tous les tests
pytest
# Tests avec couverture
pytest --cov=src tests/
# Tests spécifiques
pytest tests/core/data/test_vector.py- Architecture :
docs/architecture.md - PRD :
docs/prd.md - Stories :
story/
Développé dans le cadre du projet BMAD pour la simulation des risques pompiers de Paris.