Optimisation
Moteurs d'optimisation, paramètres et contrôles de résultats disponibles dans SPARC.
Principe de l'Optimisation Bayésienne
L'optimiseur explore un espace de paramètres physiques et évalue chaque essai avec le même chemin de simulation que les configurations unitaires.
Trials 1–20 → Exploration initiale aléatoire
Trials 21+ → Exploitation Bayésienne
(propose les zones les plus prometteuses)
Moteurs d'Optimisation Disponibles
| Moteur | Algorithme | Usage recommandé |
|---|---|---|
| Optuna TPE | Tree-structured Parzen Estimator | Défaut · tout usage |
| Optuna GP | Gaussian Process Sampler | < 10 paramètres |
| BoTorch GP | qLogExpectedImprovement | Études coûteuses avec peu de paramètres |
| CMA-ES | Evolution Strategy | Espaces larges continus |
| Random | Échantillonnage uniforme | Baseline |
Via l'Interface Web
- Aller sur
http://localhost:5000/optimize - Choisir le type de simulation et le moteur
- Définir les paramètres avec leurs bornes
- Cliquer Lancer l'optimisation
- Suivre la progression en temps réel
- Analyser : convergence, importance, heatmap, Top 10
Via le CLI Interactif
python -m cli_interactif
# Touche 'o' → Nouvelle optimisation → Suivre l'assistant
Assistant CLI en 6 étapes
- Type de simulation de base
- Moteur (Optuna TPE / GP / BoTorch)
- Objectifs (sélection multiple)
- Nombre d'essais
- Plages de paramètres (assistant interactif)
- Nom de l'optimisation
Via l'API REST
Créer un job d'optimisation
curl -X POST http://localhost:5000/api/optimize/create \
-H "Content-Type: application/json" \
-d '{
"name": "opt_si",
"sim_type": "homojunction",
"engine": "optuna",
"sampler": "tpe",
"n_trials": 200,
"objectives": ["efficiency"],
"param_ranges": [
{"name": "doping.n_region", "type": "log_float", "low": 1e15, "high": 1e18},
{"name": "doping.p_region", "type": "log_float", "low": 1e14, "high": 1e17},
{"name": "geometry.thickness_n", "type": "log_float", "low": 1e-5, "high": 5e-4},
{"name": "geometry.thickness_p", "type": "log_float", "low": 5e-5, "high": 2e-3}
]
}'
# → {"success": true, "opt_id": "abc123de"}
Lancer l'optimisation
curl -X POST http://localhost:5000/api/optimize/abc123de/run
Suivre la progression (SSE)
curl http://localhost:5000/api/optimize/abc123de/progress
Récupérer les résultats
curl http://localhost:5000/api/optimize/abc123de/results
Télécharger le rapport PDF
curl http://localhost:5000/api/optimize/abc123de/pdf -o rapport.pdf
Format param_ranges
{
"name": "doping.n_region",
"type": "log_float",
"low": 1e15,
"high": 1e18,
"label": "Dopage N (cm-3)"
}
type |
Espace d'exploration |
|---|---|
float |
Continu linéaire |
log_float |
Continu log-scale (dopage, τ, μ) |
int |
Entier linéaire |
log_int |
Entier log-scale |
categorical |
Valeurs discrètes ("choices": [...]) |
doping.n_region → config["doping"]["n_region"]
Analyse de Sensibilité Sobol
L'analyse de sensibilité Sobol permet de déterminer quels paramètres ont le plus d'impact sur les objectifs.
curl -X POST http://localhost:5000/api/optimize/abc123de/sensitivity \
-H "Content-Type: application/json" \
-d '{"n_samples": 64}'
Retourne les indices :
- S1 : effet de premier ordre (effet direct)
- ST : effet total (incluant les interactions)
- S2 : effets d'interaction entre paires de paramètres
Surrogate Model
Le surrogate est un modèle ML (Random Forest par défaut) entraîné sur les résultats d'optimisation. Il permet des prédictions instantanées sans relancer Sesame.
Prédiction
curl -X POST http://localhost:5000/api/optimize/abc123de/predict \
-H "Content-Type: application/json" \
-d '{
"doping.n_region": 2.5e16,
"doping.p_region": 1e15,
"geometry.thickness_n": 1e-4,
"geometry.thickness_p": 3e-4
}'
# → {"predicted_value": 18.7, "uncertainty": 0.4, "confidence_95": [17.9, 19.5]}
Analyse du Surrogate (CLI)
Le menu Analyse du surrogate dans le CLI (o → Analyse du surrogate) offre :
| Option | Description |
|---|---|
| Scan 1D | Variation d'un paramètre · courbe ASCII en temps réel |
| Inverse prediction | Trouve les paramètres atteignant une cible η donnée |
| Sauvegarder | Exporte le modèle entraîné (.pkl, fallback ~/.sparc/surrogates/) |
| Charger | Recharge un surrogate précédemment entraîné |
Les modèles disponibles sont :
rf (Random Forest), gbm (Gradient Boosting), gp (Gaussian Process).
Résultats d'Optimisation
À la fin d'une optimisation, vous obtenez :
- Meilleurs paramètres avec valeur d'efficacité
- Courbe de convergence — évolution du meilleur η
- Importance des paramètres — bar chart
- Heatmap de corrélation — paramètre × objectif
- Top 10 essais — tableau trié
- Rapport PDF téléchargeable
- Surrogate model entraîné pour prédiction rapide
Optimisation Multi-Objectif
SPARC supporte l'optimisation multi-objectif pour maximiser simultanément plusieurs métriques, conduisant à la recherche d'un front de Pareto optimal :
- Efficacité (η)
- Tension de circuit ouvert (Voc)
- Courant de court-circuit (Jsc)
- Facteur de remplissage (FF)
"objectives": ["efficiency", "voc", "ff"]
Bonnes Pratiques
- Nombre de trials : 200-500 pour une exploration complète, 1000+ pour haute précision
- Choix du moteur : Optuna TPE pour la plupart des cas, BoTorch pour haute précision
- Bornes de paramètres : Utilisez
log_floatpour les paramètres avec plusieurs ordres de grandeur - Validation : Vérifiez toujours les meilleurs paramètres avec une simulation indépendante
- Surrogate : Utilisez le surrogate pour explorer rapidement l'espace avant de valider avec Sesame