moteur : la cohérence avec le total ignore un manque sous le demi-watt

Un manque de 10⁻¹² W, arrondi de la somme des phases, changeait des décisions au douzième
chiffre dans le scénario run de la preuve decisions, sans rien protéger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-27 13:18:46 +01:00
parent 3dfb74dcb3
commit 8eb2f7b00b
2 changed files with 7 additions and 4 deletions

View File

@ -98,7 +98,9 @@ QList<double> tiragesCoherentsAvecLeTotal(const QList<double> &parPhaseW, double
importe += qMax(0.0, w); importe += qMax(0.0, w);
} }
const double manque = totalW - somme; const double manque = totalW - somme;
if (manque <= 0) // Sous le demi-watt, c'est l'arrondi d'une somme de flottants, pas une lecture en retard : la
// corriger changerait des décisions au douzième chiffre sans rien protéger.
if (manque <= 0.5)
return tirages; // les phases disent au moins ce que dit le total : rien à corriger return tirages; // les phases disent au moins ce que dit le total : rien à corriger
for (double &w : tirages) for (double &w : tirages)
w += importe > 0 ? manque * qMax(0.0, w) / importe : manque / tirages.size(); w += importe > 0 ? manque * qMax(0.0, w) / importe : manque / tirages.size();

View File

@ -116,9 +116,10 @@ QString drawCapSourceCode(DrawCapSource s);
* *
* \param parPhaseW Tirage lu sur chaque phase, en watts (import > 0, export < 0). * \param parPhaseW Tirage lu sur chaque phase, en watts (import > 0, export < 0).
* \param totalW Puissance totale du même compteur, en watts (import > 0). * \param totalW Puissance totale du même compteur, en watts (import > 0).
* \return Les mêmes tirages si leur somme atteint le total. Sinon, le MANQUE (total − somme) est * \return Les mêmes tirages si leur somme atteint le total, à un demi-watt près. Sinon, le
* ajouté aux phases qui importent, au prorata de ce qu'elles lisent — ou à parts égales si * MANQUE (total − somme) est ajouté aux phases qui importent, au prorata de ce qu'elles lisent
* aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide : rendue telle quelle. * — ou à parts égales si aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide :
* rendue telle quelle.
* *
* \par Pourquoi * \par Pourquoi
* Les phases d'un compteur triphasé somment à son total : la phase la plus chargée porte AU MOINS * Les phases d'un compteur triphasé somment à son total : la phase la plus chargée porte AU MOINS