Co-Study4Grid / docs /performance /history /initial-lf-dc-init.md
github-actions[bot]
Deploy f7b8bf6
1c730d1
|
Raw
History Blame Contribute Delete
2.41 kB

Initial LF — use DC_VALUES init, skip failed PREVIOUS_VALUES attempt

Contexte

Les logs d'/api/config comportaient systématiquement :

Warning: Load flow with PREVIOUS_VALUES failed
  (com.powsybl.commons.PowsyblException: Voltage magnitude is undefined
   for bus 'CHOLOP3_2'). Retrying with DC_VALUES...

Le LF initial dans SimulationEnvironment._ensure_valid_state utilisait les paramètres par défaut (voltage_init_mode=PREVIOUS_VALUES), échouait immédiatement parce qu'aucun état précédent n'existe sur un Network fraîchement chargé, puis était relancé en interne avec DC_VALUES.

Correction upstream (expert_op4grid_recommender == 0.2.0.post7, commit a377a968)

Le paramètre voltage_init_mode est maintenant exposé sur NetworkManager.run_load_flow(). SimulationEnvironment._ensure_valid_state passe explicitement lf.VoltageInitMode.DC_VALUES :

def _ensure_valid_state(self):
    result = self.network_manager.run_load_flow(
        voltage_init_mode=lf.VoltageInitMode.DC_VALUES,
    )

Point critique : ce changement ne s'applique qu'au LF initial (construction de SimulationEnvironment + reset()). Tous les autres appels à run_load_flow continuent d'utiliser PREVIOUS_VALUES par défaut — qui est le bon choix après une mutation (warm-start depuis le solution précédente).

Mesure sur grille France 118 MB

Benchmark direct (3 reps, process frais) :

Version LF initial median
Current (PREVIOUS → fail → DC fallback) 660 ms
Direct DC_VALUES 588 ms

Gain ~70 ms. Plus modeste que les ~1 s estimés à l'origine — le PREVIOUS_VALUES throw est rapide (pypowsybl détecte l'absence de voltage et lève immédiatement). Mais :

  1. Logs propres : plus de warning bogus sur le chargement.
  2. Sémantique correcte : on déclare explicitement l'état initial.
  3. Marge : sur d'autres grilles où le throw serait plus lent, le gain pourrait être plus important.

Tests

24 tests upstream affectés (environment_detection, environment_pypowsybl, conversion_actions_helpers_vectorized) passent. L'output numérique du LF est le même (même convergence, mêmes flux, même status CONVERGED).

Dépendance

Co-Study4Grid requiert expert_op4grid_recommender >= 0.2.0.post7. Aucune modification côté Co-Study4Grid — le gain s'active au bump upstream.