The Higher Education and Research forge

Home My Page Projects Code Snippets Project Openings Développement de WIMS
Summary Activity Forums Tracker Tasks Docs Surveys News SCM Files Listes Sympa

[#7590] type de réponse aset

Date:
2011-03-01 11:22
Priority:
3
State:
Open
Submitted by:
Eric Reyssat (reyssat)
Assigned to:
Nobody (None)
Hardware:
none
Operating System:
none
Version:
none
Severity:
none
Resolution:
none
URL:
état:
Summary:
type de réponse aset

Detailed description
Le fait que le type aset repose sur des calculs approchés induit un effet pervers : la bonne réponse peut parfois être considérée comme mauvaise.

Par exemple si le texte de l'exo contient
\answer{}{100000,100001,100002}{type=aset}
alors (même si on insère la bonne réponse en tant que développeur) la réponse sera presque toujours considérée comme mauvaise.

Si on remplace le premier élément 100000 par 10000 alors la bonne réponse sera généralement comptée comme "mauvaise précision", rarement comme bonne réponse.

Le calcul est fait ainsi dans anstype/aset : on remplace la liste par le produit des (J-élément) où J est une indéterminée, à la fois dans la bonne réponse et dans la réponse de l'utilisateur. Puis on envoie ça à anstype/function qui fait la différence des deux et substitue à J des valeurs réelles aléatoires. Et on décide que la réponse est mauvaise, de mauvaise précision, ou bonne suivant que le résultat du test est beaucoup plus grand, environ égal, ou beaucoup plus petit que 1/precision.

Or, si anstype/function est amené à calculer
((-0.1)-(1000000))*((-0.1)-(2000000)) - ((-0.1)-(1000000))*((-0.1)-(2000000))
qui vaut évidemment 0, il ne trouve pas tout à fait 0.

J'ai mis des grands nombres dans l'exemple, mais l'effet est le même avec des listes un peu longues de petits nombres. Par exemple
\answer{}{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}{type=aset}
donne parfois mauvaise précision et parfois mauvaise réponse.

Eric
Message  ↓
Date: 2011-03-02 11:20
Sender: Eric Reyssat

J'ai changé le type function pour qu'il calcule séparément les nombres issus des réponses (la bonne et celle de l'utilisateur) par substitution de réels aléatoires, PUIS fasse la différence, plutôt que de substituer dans la différence puis faire le calcul.
Avec cette modif (peut-être très légèrement plus coûteuse en temps), si on envoie un bonne réponse elle est reconnue comme bonne (la différence est vraiment nulle).

Il reste que dans certains cas extrêmes, il sera difficile de régler la précision pour que la différence entre mauvaise réponse et mauvaise précision soit correcte. C'est à signaler dans la doc du type function et aset.

Eric

No related tasks

No attached documents

Field Old Value Date By
detailsLe fait que le type aset repose sur des calculs approchés induit un effet pervers : la bonne réponse peut parfois être considérée comme mauvaise. Par exemple si le texte de l\'exo contient \\answer{}{100000,100001,100002}{type=aset} alors (même si on insère la bonne réponse en tant que développeur) la réponse sera presque toujours considérée comme mauvaise. Si on remplace le premier élément 100000 par 10000 alors la bonne réponse sera généralement comptée comme "mauvaise précision", rarement comme bonne réponse. Le calcul est fait ainsi dans anstype/aset : on remplace la liste par le produit des (J-élément) où J est une indéterminée, à la fois dans la bonne réponse et dans la réponse de l\'utilisateur. Puis on envoie ça à anstype/function qui fait la différence des deux et substitue à J des valeurs réelles aléatoires. Et on décide que la réponse est mauvaise, de mauvaise précision, ou bonne suivant que le résultat du test est beaucoup plus grand, environ égal, ou beaucoup plus petit que 1/precision. Or, si anstype/function est amené à calculer ((-0.1)-(1000000))*((-0.1)-(2000000)) - ((-0.1)-(1000000))*((-0.1)-(2000000)) qui vaut évidemment 0, il ne trouve pas tout à fait 0. J\'ai mis des grands nombres dans l\'exemple, mais l\'effet est le même avec des listes un peu longues de petits nombres. Par exemple \\answer{}{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}{type=aset} donne parfois mauvaise précision et parfois mauvaise réponse. Eric 2011-03-02 11:20