Problème de calcul de moyenne sur ScoDoc 9.1.72 sur ancien semestre DUT #334

Closed
opened 2022-03-11 15:26:49 +01:00 by philippe.coste · 2 comments

J'ai repéré un soucis de calcul général en DUT entre la version archivée qui utilisait des formules expérimentales pour les malus et la nouvelle version pour laquelle j'ai saisi les valeurs de malus directement dans la matière Malus.

Avec les formules expérimentales, le malus de cet étudiant était de 7 ce qui lui faisait une moyenne de 5.2

La formule n'étant plus utilisée par scodoc, j'ai saisi manuelle ment ce malus de 7. Sur la copie d'écran, on voit que les moyennes d'UE correspondent entre version archivée et version actuelle, mais la moyenne actuellement calculée qui remonte est de 2.94.

En faisant le calcul à la main avec les coefficients des UE, on devrait trouver 5.2

Le dump de la base a été envoyé via assistance (Cachan).

J'ai repéré un soucis de calcul général en DUT entre la version archivée qui utilisait des formules expérimentales pour les malus et la nouvelle version pour laquelle j'ai saisi les valeurs de malus directement dans la matière Malus. Avec les formules expérimentales, le malus de cet étudiant était de 7 ce qui lui faisait une moyenne de 5.2 La formule n'étant plus utilisée par scodoc, j'ai saisi manuelle ment ce malus de 7. Sur la copie d'écran, on voit que les moyennes d'UE correspondent entre version archivée et version actuelle, mais la moyenne actuellement calculée qui remonte est de 2.94. En faisant le calcul à la main avec les coefficients des UE, on devrait trouver 5.2 Le dump de la base a été envoyé via assistance (Cachan).
Owner

Les moyennes d'UE sans malus sont:

>>> self.etud_moy_ue.loc[etudid]
172    13.000000
173     2.887500
174     3.941667

donc une moyenne générale de

>>> ( 13*12 + 2.89 * 12 + 3.94 * 6 ) / 30.
7.144

Le malus ne porte que sur les UE 42 et 43 (ici 173 et 174):

>>> self.malus.loc[etudid]
172    0.0
173    7.0
174    7.0

Après application du malus, on a les moyennes suivantes:

>>> (self.etud_moy_ue - self.malus).loc[etudid]
172    13.000000
173    -4.112500
174    -3.058333

Ce qui entraine une correction de la moyenne générale de

>>> ( (self.etud_coef_ue_df * self.malus).sum(axis=1)/ self.etud_coef_ue_df.sum(axis=1) ).loc[etudid]
4.2

D'où l'affichage de la moyenne générale:

>>> 7.144 - 4.2
2.944

Si on recalculait la moyenne générale on obtiendrait le même résultat:

>>> ( 13*12 + (-4.112 * 12) + (-3.05 * 6) ) / 30.
2.945

Donc où est l'erreur ?

NB: les moyennes affichées sont toujours dans [0, 20] donc les moyennes d'UE sont ici zéro.

Les moyennes d'UE sans malus sont: ``` >>> self.etud_moy_ue.loc[etudid] 172 13.000000 173 2.887500 174 3.941667 ``` donc une moyenne générale de ``` >>> ( 13*12 + 2.89 * 12 + 3.94 * 6 ) / 30. 7.144 ``` Le malus ne porte que sur les UE 42 et 43 (ici 173 et 174): ``` >>> self.malus.loc[etudid] 172 0.0 173 7.0 174 7.0 ``` Après application du malus, on a les moyennes suivantes: ``` >>> (self.etud_moy_ue - self.malus).loc[etudid] 172 13.000000 173 -4.112500 174 -3.058333 ``` Ce qui entraine une correction de la moyenne générale de ``` >>> ( (self.etud_coef_ue_df * self.malus).sum(axis=1)/ self.etud_coef_ue_df.sum(axis=1) ).loc[etudid] 4.2 ``` D'où l'affichage de la moyenne générale: ``` >>> 7.144 - 4.2 2.944 ``` Si on recalculait la moyenne générale on obtiendrait le même résultat: ``` >>> ( 13*12 + (-4.112 * 12) + (-3.05 * 6) ) / 30. 2.945 ``` Donc où est l'erreur ? NB: les moyennes affichées sont toujours dans `[0, 20]` donc les moyennes d'UE sont ici zéro.
Author

Bonjour Emmanuel,

J'ai compris où est le problème ! Une fois que le malus est appliqué la moyenne d'UE peut devenir négative et scodoc garde la valeur négative pour le calcul de la moyenne générale. C'est là que le bât blesse : mes formules faisaient en sorte qu'une moyenne d'UE soit toujours comprise entre 0 et 20.

Donc la question est : comme pour l'affichage des bulletins où une EU négative a été bloquée à 0, ne doit t'on pas considérer qu'avant de faire le calcul de moyenne générale une moyenne d'UE doit être comprise entre 0 et 20 ?

Ce n'est donc pas un bug, mais un choix de stratégie. Qu'en penses-tu ?

Merci en tous cas pour ton investigation.

Philippe

Bonjour Emmanuel, J'ai compris où est le problème ! Une fois que le malus est appliqué la moyenne d'UE peut devenir négative et scodoc garde la valeur négative pour le calcul de la moyenne générale. C'est là que le bât blesse : mes formules faisaient en sorte qu'une moyenne d'UE soit toujours comprise entre 0 et 20. Donc la question est : comme pour l'affichage des bulletins où une EU négative a été bloquée à 0, ne doit t'on pas considérer qu'avant de faire le calcul de moyenne générale une moyenne d'UE doit être comprise entre 0 et 20 ? Ce n'est donc pas un bug, mais un choix de stratégie. Qu'en penses-tu ? Merci en tous cas pour ton investigation. Philippe
viennet added the
wontfix
label 2022-03-16 18:42:49 +01:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#334
No description provided.