{% extends "base.html" %} {% block title %}Résultats — {{ opt.name }} — SPARC{% endblock %} {% block extra_head %} {% endblock %} {% block content %}

{{ opt.name }}

{{ opt.sim_type }} · {{ opt.engine }} · {{ opt.n_trials }} trials · {{ opt.status }}
PDF Nouvelle optimisation
{% if opt.status == 'completed' or opt.status == 'cancelled' %} {% if opt.status == 'cancelled' %}
Optimisation annulée : L'optimisation a été arrêtée par l'utilisateur avant la fin. Les résultats partiels ({{ opt.all_trials|length if opt.all_trials else 0 }} trials exécutés) sont affichés ci-dessous.
{% endif %} {% set total_t = opt.all_trials|length if opt.all_trials else 0 %} {% set failed_t = opt.all_trials | selectattr('failed') | list | length if opt.all_trials else 0 %} {% set success_t = total_t - failed_t %} {% set success_pct = (success_t / total_t * 100) | round(1) if total_t > 0 else 0 %}
Meilleur PCE
{% if opt.best_value is not none and opt.best_value > 0 %}{{ "%.3f"|format(opt.best_value) }}%{% else %}{% endif %}
Power Conversion Efficiency
Trials
{{ total_t or opt.n_trials }}
{{ success_t }} réussis {% if failed_t > 0 %}{{ failed_t }} échoués{% endif %}
Espace de recherche
{{ opt.param_ranges|length if opt.param_ranges else "?" }}
Dimensions / Paramètres
Moteur · Objectifs
{{ opt.engine | upper }}
{% for o in opt.objectives or [] %}{{ o }}{% endfor %}
{% if opt.best_params and opt.top10 %} {% set best_t = opt.top10[0] %} {% set iv = best_t.iv_params if best_t.iv_params else {} %} {% if iv %}
Paramètres IV du meilleur trial (#{{ best_t.number }})
{% if iv.efficiency is not none and iv.efficiency is number and iv.efficiency > 0 %}
{{ "%.3f"|format(iv.efficiency) }}% PCE
{% endif %} {% if iv.voc is not none and iv.voc is number and iv.voc > 0 %}
{{ "%.3f"|format(iv.voc) }} V Voc
{% endif %} {% if iv.jsc is not none and iv.jsc is number and iv.jsc > 0 %}
{{ "%.2f"|format(iv.jsc) }} mA/cm² Jsc
{% endif %} {% if iv.fill_factor is not none and iv.fill_factor is number and iv.fill_factor > 0 %}
{{ "%.2f"|format(iv.fill_factor) }}% FF
{% endif %}
{% endif %} {% endif %} {% if opt.best_params %}
Configuration optimale
{% for key, val in opt.best_params.items() %}
{{ key }}
{% if val is number %} {% if val != 0 and (val | abs < 0.001 or val | abs > 9999) %} {{ "%.3e"|format(val) }} {% else %} {{ "%.4f"|format(val) }} {% endif %} {% else %} {{ val }} {% endif %}
{% endfor %}
{% endif %}
Courbe de convergence
Importance des paramètres
{% if not opt.param_importance %}

Importance non disponible (moins de 10 trials ou multi-objectif)

{% endif %}
Heatmap — Corrélations paramètre × objectif
Cliquez sur "Générer" pour calculer les corrélations.
Analyse de Sensibilité Globale (Indices de Sobol)
Calcule l'influence directe (S1) et totale avec interactions (ST) de chaque paramètre sur l'objectif principal, instantanément via le modèle de substitution.
Cliquez sur "Générer" pour évaluer la sensibilité globale.
Coordonnées Parallèles (Espace des paramètres)
Cliquez sur "Générer" pour visualiser l'ensemble des essais.
{% if opt.pareto_front %}
Front de Pareto
{% endif %} {% if opt.top10 %}
Top {{ opt.top10|length }} configurations
{% for obj in opt.objectives or ["efficiency"] %}{% endfor %} {% for pr in opt.param_ranges or [] %} {% endfor %} {% for t in opt.top10 %} {% for obj in opt.objectives or ["efficiency"] %} {% set ov = t.objectives[obj] if t.objectives and obj in t.objectives else None %} {% endfor %} {% for pr in opt.param_ranges or [] %} {% endfor %} {% endfor %}
# Trial{{ obj }}{{ pr.name }}
{{ loop.index }} {{ t.number }} {% if t.failed or ov is none or ov == '_FAILED_' or ov == -1e308 or (ov is number and ov < -1e6) %} — échec — {% else %} {{ "%.4f"|format(ov|float) }}{% if obj == 'efficiency' %} %{% endif %} {% endif %} {% set val = t.params[pr.name] if t.params and pr.name in t.params else None %} {% if val is not none and val != "" %} {% if val is number %} {% if val | abs < 0.001 or val | abs > 9999 %}{{ "%.2e"|format(val) }}{% else %}{{ "%.4f"|format(val) }}{% endif %} {% else %}{{ val }}{% endif %} {% else %}—{% endif %}
{% endif %}
Prédiction Surrogate (sans simulation)

Le modèle de substitution (Random Forest) prédit instantanément l'efficacité pour un jeu de paramètres arbitraire, sans lancer Sesame.

{% for pr in opt.param_ranges or [] %}
{% endfor %}
{% elif opt.status == 'running' %}
Optimisation en cours…
La page se rechargera automatiquement à la fin.
{% elif opt.status == 'failed' %}
Échec : {{ opt.error or "Erreur inconnue" }}
{% endif %} {% set opt_data_dict = { "id": opt.id, "sim_type": opt.sim_type, "engine": opt.engine, "objectives": opt.objectives, "best_value": opt.best_value, "best_params": opt.best_params, "convergence": opt.convergence, "param_importance": opt.param_importance, "pareto_front": opt.pareto_front, } %} {% endblock %}