Hackathon Agreen - CTIFL Carquefou
Application ML & Physiologique pour prédire le rendement hebdomadaire à S+2 et S+4
Projet réalisé dans le cadre du Hackathon Agreen en collaboration avec le CTIFL de Carquefou (Centre Technique Interprofessionnel des Fruits et Légumes).
Objectif : Prédire le rendement de tomates sous serre à S+2 et S+4 semaines en combinant deux approches :
- Machine Learning (ElasticNet) : prédiction statistique basée sur les données historiques
- Modèle Physiologique (TOMSIM) : simulation de la photosynthèse et croissance des fruits
L'application Streamlit offre une interface intuitive pour comparer ML et TOMSIM :
| Page | Description |
|---|---|
| Prédictions | Vue côte-à-côte ML vs TOMSIM avec métriques R², RMSE |
| Scénarios | Simulations : +2°C, +200ppm CO2, calibration auto |
Le problème initial : Les données brutes du CTIFL étaient réparties dans une multitude de fichiers Excel, avec des formats très hétérogènes.
| Complexité | Détail |
|---|---|
| Multi-années | 4 saisons : 2022, 2023, 2024, 2025 |
| Multi-serres | Données sur 2 serres différentes (S1, S2) |
| Multi-fréquences | Journalier (climat), hebdo (notations), bi-hebdo (rendements) |
| Multi-features | Parfois >50 colonnes, parfois <10 selon les fichiers |
| Données métier | Variables très spécifiques (LAI, stade floraison, température jour/nuit...) |
Le rendement d'une semaine dépend fortement des 6-8 semaines précédentes (inertie biologique). Nous avons donc créé :
- 49 features finales :
- 8 variables climatiques × 6 lags temporels = 48 features
- 1 variable
Days_Since_Plantation
- 2 targets :
Rendement_kg_per_m2_S2etRendement_kg_per_m2_S4
Comparaison de 8 modèles avec optimisation Optuna :
| Modèle | R² (S+2) | Résultat |
|---|---|---|
| ElasticNet | 0.57 | ✅ Retenu |
| Ridge | 0.52 | |
| XGBoost | 0.48 | Overfitting |
| LightGBM | 0.45 | Overfitting |
Développement parallèle d'un modèle mécaniste simulant :
- Photosynthèse (Pgmax, réponse au CO2)
- Partitionnement des assimilats
- Croissance et maturation des fruits
Le défi majeur : Malgré 4 ans de données, notre approche ML était limitée.
4 ans × 52 semaines = ~208 lignes théoriques
- Périodes hors-saison (plantation/récolte)
= ~170 lignes exploitables pour le ML
Ce volume de données est insuffisant pour des modèles complexes (XGBoost, réseaux de neurones), ce qui explique :
- L'overfitting des modèles "lourds"
- Le choix d'ElasticNet (régularisation L1+L2)
- Un R² plafonné autour de 0.57
💡 Solution future : Accumulation de plus d'années / plus de serres ou approche hybride ML+Physiologique
Sival_AGreen/
├── app/ # Dashboard Streamlit
│ ├── Home.py # Page d'accueil avec KPIs
│ └── pages/
│ ├── 1_Predictions.py # Vue ML vs TOMSIM côte-à-côte
│ └── 2_Scenarios.py # Scénarios climatiques + Calibration
│
├── notebooks/ # EDA et expérimentations
│ ├── 01_EDA_Pred_nbfruit_poidmoyen.ipynb
│ └── 02_EDA_Pred_rendement.ipynb
│
├── physio/ # Modèle physiologique
│ ├── TOMSIMfinal2.py # Implémentation TOMSIM
│ └── climat_avec_rendement.csv
│
├── models/ # Modèles ML entraînés
│ ├── model_S2.pkl # ElasticNet horizon +2 semaines
│ ├── model_S4.pkl # ElasticNet horizon +4 semaines
│ └── feature_info.json # 49 features + split index
│
├── data/ # Données traitées
│ └── df_model_yield_final.csv # Dataset ML final (169 semaines)
│
├── src/ # Scripts d'entraînement
│ ├── train_models.py
│ └── script_modeles.py
│
├── reports/ # Rapports et métriques
│ ├── RAPPORT_FINAL_ML_TOMATES.md
│ └── metrics.json
│
├── 000_AgreenDefi/ # Données brutes CTIFL (non versionnées)
│ ├── S1/ # Serre 1 (2021-2025)
│ └── S2/ # Serre 2 (2022-2025)
│
├── docs/images/ # Captures d'écran dashboard
├── requirements.txt
└── README.md
- ML : scikit-learn (ElasticNet), Optuna
- Physiologie : scipy (optimisation)
- Visualisation : Plotly
- Interface : Streamlit
git clone https://github.com/Gael926/hackaton-sival-agreen-ctifl.git
cd hackaton-sival-agreen-ctifl
pip install -r requirements.txt
python -m streamlit run app/Home.pyProjet réalisé dans le cadre du Hackathon Agreen - CTIFL Carquefou


