Bilan : horizon a 40 h et arrondi du manque de stockage

Premiere execution reelle sur la courbe horaire (25/08 02:40) : croisement a
09 h, 4,39 kWh a couvrir, SOC requis 51,3 % pour 42 % reels, reseau necessaire
1,39 kWh. La traversee nocturne suivante s'affichait "17 h -> ?" : avec un
horizon de 30 h, la fenetre commencant en fin d'apres-midi ne se refermait pas
au croisement du lendemain matin. Porte a 40 h, la courbe couvrant 48 h.

L'energie manquante de stockage s'affichait non arrondie dans le texte de la
raison (2.9000000000000017).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-08-25 02:41:34 +02:00
parent c35c39cb83
commit 0c15eba67b
4 changed files with 10 additions and 6 deletions

View File

@@ -42,7 +42,7 @@ const CFG = {
TIMEZONE: 'Europe/Paris',
// Au-delà de cet horizon sans croisement trouvé, on cesse de chercher : la
// réponse n'aurait plus de sens opérationnel.
SEARCH_HOURS: 30,
SEARCH_HOURS: 40,
// PAS de marge de sécurité supplémentaire. La prudence est déjà portée,
// entièrement, par le choix du percentile du profil de consommation (p80),
// qui est mesuré. Vérifié le 24/08/2026 : sur toutes les fenêtres testées,

View File

@@ -90,7 +90,7 @@ setText('input_text.evcs_balance_crossing_hour',
balance.crossing.found ? `${String(balance.crossing.hour).padStart(2, '0')} h` : 'aucun sur l\'horizon');
const ndText = nd.found
? ` | prochaine traversée ${nd.energyKwh} kWh dès ${nd.startHour} h → SOC requis ${nd.requiredSocAtStartPct}%${nd.feasibleWithCurrentStorage ? '' : ` (manque ${nd.storageShortfallKwh} kWh de stockage)`}`
? ` | prochaine traversée ${nd.energyKwh} kWh dès ${nd.startHour} h → SOC requis ${nd.requiredSocAtStartPct}%${nd.feasibleWithCurrentStorage ? '' : ` (manque ${Math.round(nd.storageShortfallKwh * 100) / 100} kWh de stockage)`}`
: '';
const reason = balance.crossing.found

View File

@@ -62,7 +62,11 @@ const input = unwrapSnapshot($input.first().json);
const CFG = {
TIMEZONE: 'Europe/Paris',
HORIZON_HOURS: 30,
// 40 h : assez pour qu'une traversée déficitaire commençant en fin
// d'après-midi se referme au croisement du lendemain matin. Avec 30 h, la
// fenêtre de la nuit restait ouverte et son heure de fin s'affichait « ? ».
// La courbe couvre aujourd'hui et demain, soit 48 h au plus.
HORIZON_HOURS: 40,
// Au-delà de cette part d'heures censurées, la forme de l'enveloppe est
// considérée comme minorée et signalée comme telle.
CENSORSHIP_QUALITY_LIMIT: 0.25,