Brevet FR2828312A1 — publié le 20030207

DESCRIPTIF TECHNIQUE La présente invention concerne un outil d'aide à la décision pour ordinateur et assimilés, permettant le calcul et donc l'établissement de pronostics personnels, outil dont la fonctionnalité principale calcule et restitue des classements, baptisés auto-pronostics , à partir de connaissances et d'estimations mais également à partir d'informations personnelles dont dispose l'utilisateur de l'invention. Le principe consiste à faire estimer, de manière générale mais également de manière détaillée par l'utilisateur de l'invention, tout ou partie de plusieurs critères d'appréciation, critères qu'il utilise habituellement de manière informelle lorsqu'il prépare son pronostic. L'ordinateur calcule ensuite, à l'aide d'algorithmes spécifiques combinés appelés moteur PROTURF , le nombre de points obtenu par chacune des entités faisant l'objet du pronostic ; le résultat est alors présenté sous la forme de tableau résultat et de tableau récapitulatif donnant dans l'ordre le classement, les écarts correspondants en pourcentages ainsi que, le détail de la notation de chacune des entités. Une autre fonctionnalité offerte à l'utilisateur de l'invention consiste, à partir d'une opération de démontage, à déterminer des notations moyennes types qui auraient permis à celui-ci de trouver le bon classement dans l'ordre exact avec un nombre minimum d'entités, mais aussi à permettre à ce même utilisateur de s'exercer pour trouver ce même bon classement, soit à partir de notations moyennes types issues du calcul des algorithmes de PROTURF, soit à partir d'une notation vierge, soit à partir d'un de ses pronostics personnels établis avec l'invention avant le déroulement de l'événement ayant donné lieu au pronostic. Les notations moyennes types définies par l'ordinateur à partir de systèmes de notations aléatoires itératives, sont validées de manière automatique, dès que le calcul avec les algorithmes de PROTURF (avec le moteur PROTURF ), donne pour résultat le bon classement. Celui-ci est ensuite mis à la disposition de l'utilisateur de l'invention pour consultation et possibilité d'exercices. Une fonction de consultation permet à tout moment à l'utilisateur, avant et après la course, de retrouver ses pronostics personnels. Une autre fonction bien distincte dans l'outil d'aide à la décision, permet à l'utilisateur d'éditer des grilles de notations vierges pour la course qui l'intéresse, l'objectif étant de lui permettre de préparer ses estimations et donc son pronostic en mode déconnecté. Enfin, les informations générales mises à jour selon les besoins, sont proposées à la consultation de l'utilisateur. Une aide en ligne est intégrée à l'ensemble des fonctionnalités de l'invention. 1 i i i Projet PRONOSYS i BSw w wviD Sk > , 5Ng, j ; 0 R4 { E =r I m Procédure globale PCalculPronostic (serveur) PROCEDURE PCalculPronostic (DateR, Reunion, Course, Connexion) //Les tables et variables pour stocker les notes attribuées par le joueur TabNotesResultats est un tableau de 30 par 51 réels TabNotesChevaux est un tableau de 30 entiers courts TabNotesPeres est un tableau de 30 entiers courts TabNotesMeres est un tableau de 30 entiers courts TabNotesJockeys est un tableau de 30 entiers courts TabNotesEntraineurs est un tableau de 30 entiers courts TabNotesProprios est un tableau de 30 entiers courts TabNotesAptitudeDistance est un tableau de 30 entiers courts TabNotesAptitudeTerrain est un tableau de 30 entiers courts TabNotesDotation est un tableau de 30 entiers courts TabNotesDernierePerf est un tableau de 30 entiers courts TabNotesCotesProbables est un tableau de 30 entiers Valeur positive ou négati ve TabNotesPronosticsCompl est un tableau de 20 entiers courts TabClassePronosticsCompl est un tableau de 20 par 10 entiers courts TabCumulPointsPronosticsCompl est un tableau de 30 réels doubles TabClasseCotesDec est un tableau de 30 réels doubles//Table de classement décroi ssant des indices des cotes TabClasseCotesCrois est un tableau de 30 réels doubles Table de classement croissant des indices des cotes CopyTabCotes est un tableau de 30 réels doubles NoteAgeLePlusJeune est un entier court NoteAgeLePlusVieux est un entier court NoteSexeMale est un entier court NoteSexeFemelle est un entier court NoteSexeHongre est un entier court NoteNoALaCordeLePlusPetit est un entier court NoteNoALaCordeLePlusGrand est un entier court NoteAvecOeilleres est un entier court NoteSansOeilleres est un entier court NoteHandicapPlus est un entier court NoteHandicapMoins est un entier court NoteRecordLePlusRapide est un entier court NoteRecordLePlusLent est un entier court NoteSommeDejaGagneeLaPlusPetite est un entier court NoteSommeDejaGagneeLaPlusGrande est un entier court NoteEcartGagnantLePlusPetit est un entier court NoteEcartGagnantLePlusGrand est un entier court NoteEcartPlaceLePlusPetit est un entier court NoteEcartPlaceLePlusGrand est un entier court NoteCitationsLePlusPetit est un entier court NoteCitationsLePlusGrand est un entier court //Tableaux de stockage du résultat TabNotesFinales est un tableau de 30 réels TabClassement est un tableau de 10 entiers courts TabNoChevauxResultat est un tableau de 10 entiers courts TabPointsCalcules est un tableau de 10 réels TabPointsCalculesReels est un tableau de 10 réels TabPourcentageEcarts est un tableau de 10 réels //Tables et variables de stockage des données sur les chevaux de la course //Tables et variables de stockage des données sur la course /-Elles existent dans les variables globales apres execution de PChargeCourse //GIbHippo = le nom de l'hippodrome //GIbPrix = le nom du prix de la course //GIbNombrePartants = nombre de partants de la course //GIbPenetrometre = valeur du pénetromètre de la réunion //Etc. //Tables et variables intermédiaires de travail i est un entier j est un entier k est un entier L est un entier TravAscii est une chaîne TravAscii2 est une chaîne 11------ Lancement du calcul. //------1. Initialisation des données de la course 11------ y compris chargement des données sur les chevaux PChargeCourse (DateR, Reunion, Course) //------2. Chargement des notes saisies par le joueur HAssigne ("chjoueur","fich") HOuvre ("chjoueur", MotDePasseBase) BOUCLE SI pas HDejaBloque () ALORS SORTIR FIN //hbloquefichier ("chjoueur") HLitRecherche ("chjoueur","clepronostic", Connexion) SI h. Trouve ALORS POUR i = 1 à 20 GlbTabNotesGlobales [i] = chjoueur. notesglobales [i] FIN POUR i = 1 à GlbNombrePartants TabNotesChevaux[i] = chjoueur. note~chevaux[i] TabNotesPeres[i] = chjoueur. note~peres[i] TabNotesMeres[i] = chjoueur. note~meres[i] TabNotesJockeys [i] = chjoueur. note jockeys[i] TabNotesEntraineurs [i] = chjoueur. note~entraineurs[i] TabNotesProprios [i] = chjoueur. noteproprios [i] TabNotesAptitudeDistance[i] = chjoueur. note distance[i] TabNotesAptitudeTerrain [i] = chjoueur. note terrain [i] TabNotesDotation [i] = chjoueur. note~dotation [i] TabNotesDernierePerf [i] = chjoueur. note~perf[i] SI chjoueur. note~coteplus[i] 21 ALORS TabNotesCotesProbables [i] = chjoueur. note~coteplus[i] FIN SI chjoueur. note cotemoins [i] 21 ALORS TabNotesCotesProbables [i] = chjoueur. note cotemoins[i]*-1 FIN SI (chjoueur. notecoteplus [i] = 21) et (chjoueur. note~cotemins[i] = 21) ALORS TabNotesCotesProbables [i] = 21 FIN FIN NoteAgeLePlusJeune = chjoueur. note~age~inf NoteAgeLePlusVieux = chjoueur. note âge sup NoteSexeMale = chjoueur. note sexe-male NoteSexeFemelle = chjoueur. note sexe femelle NoteSexeHongre chjoueur. note sexe hongre NoteNoALaCordeLePlusPetit = chjoueur. note corde inf NoteNoALaCordeLePlusGrand = chjoueur. note~corde~sup NoteAvecOeilleres = chjoueur. note~avec~oeilleres NoteSansOeilleres = chjoueur. note~sans~oeillere NoteHandicapPlus = chjoueur. note~handicap~sup NoteHandicapMoins = chjoueur. note handicap inf NoteRecordLePlusRapide = chjoueur.noterecordsup NoteRecordLePlusLent = chjoueur. note record inf NoteSommeDejaGagneeLaPlusPetite = chjoueur. note~somme~inf NoteSommeDejaGagneeLaPlusGrande = chjoueur. note somme sup NoteEcartGagnantLePlusPetit = chjoueur. note~gagnant~inf NoteEcartGagnantLePlusGrand = chjoueur. note~gagnant~sup NoteEcartPlaceLePlusPetit = chjoueur. note place inf NoteEcartPlaceLePlusGrand = chjoueur. note place sup NoteCitationsLePlusPetit = chjoueur. note citation inf NoteCitationsLePlusGrand = chjoueur. note~citation~sup POUR i = 1 à 20 TabNotesPronosticsCompl [i] = chjoueur. note~compl[i] FIN POUR i = 1 à 10 TabClassePronosticsCompl ri] = ch joueur. classe compl1[i] TabClassePronosticsCompl [2] [i] = chjoueur. classe-comp12[i] TabClassePronosticsCompl [3] [i] = chjoueur. classe-compl3[i] TabClassePronosticsCompl zip = chjoueur. classe~comp14[i] TabClassePronosticsCompl [5] [i] = chjoueur. classe compls [il TabClassePronosticsCompl [6] [i] = chjoueur. classecompl6 [i] TabClassePronosticsCompl [7] [i] = chjoueur. classe compl7 [i] TabClassePronosticsCompl [8] [i] = chjoueur. classe-comp18[i] TabClassePronosticsCompl [9] [i] = chjoueur. classe-comp19[i] TabClassePronosticsCompl [10] [i] = chjoueur. classe~compllo [i] TabClassePronosticsCompl [ll] [i] = chjoueur. classe-compl11[i] TabClassePronosticsCompl [12] [i] = chjoueur. classe-compl12[i] TabClassePronosticsCompl [13] [i] = chjoueur. classe compl13[i] TabClassePronosticsCompl [14] [i] = chjoueur. classe~compl14[i] TabClassePronosticsCompl [15] [i] = chjoueur. classe~compl15[i] TabClassePronosticsCompl [16] [i] = chjoueur. classecompll6 [i] TabClassePronosticsCompl [17] [i] = chjoueur. classecompll7 [i] TabClassePronosticsCompl [18] [i] = chjoueur. classecompll8 [i] TabClassePronosticsCompl [19] [i] = chjoueur. classe-compl19[i] TabClassePronosticsCompl [20] [i] = chjoueur. classe=comp120[i] FIN FIN //hdebloquefichier ("chjoueur") HFerme ("chjoueur") //------ 3. Initialisation des variables de travail //------3. 1 Copie de la table des cotes probables des chevaux POUR i = 1 à GlbNombrePartants SI (GlbTabCote [i] = O) ou (GlbTabCote [i] > = 100) ALORS GlbTabCote[i] = 100 FIN CopyTabCotes [i] = GlbTabCote [i] FIN //-----3. 2 Calcul des différences de valeur et de notes DiffValeurAge est un réel DiffNoteAge est un réel DiffValeurCorde est un réel DiffNoteCorde est un réel DiffValeurHandicap est un réel DiffNoteHandicap est un réel DiffValeurRecord est un réel DiffNoteRecord est un réel MinuteRecord1 est un réel SecondeRecord1 est un réel CentiemesRecord1 est un réel MinuteRecord2 est un réel SecondeRecord2 est un réel CentiemesRecord2 est un réel ValeurRefCoursel est un réel ValeurRefCourse2 est un réel //DiffValeurSomme est un monetaire DiffValeurSomme est un réel double DiffNoteSomme est un entier DiffValeurCitations est un réel DiffNoteCitations est un réel DiffValeurEcartGagnant est un réel DiffNoteEcartGagnant est un réel DiffValeurEcartPlace est un réel DiffNoteEcartPlace est un réel ValeurPointMoyen est un réel AmplitudeCote est un réel double ValeurAmplitudeCote est un réel double CoteProbableCalculee est un réel double DifferentielCote est un réel double NoteCoteAjustee est un réel NoteCoteCalculee est un réel CoteProbableDuCheval est un réel double DiffValeurAge = GlbAgePlusVieux-GlbAgePlusJeune DiffNoteAge = NoteAgeLePlusVieux-NoteAgeLePlusJeune DiffValeurCorde = GIbNoCordeGrand-GibNoCordePetit DiffNoteCorde = NoteNoALaCordeLePlusGrand-NoteNoALaCordeLePlusPetit DiffValeurHandicap = GlbGrandHandicap-GlbPetitHandicap DiffNoteHandicap = NoteHandicapPlus-NoteHandicapMoins MinuteRecord1 = Gauche (GlbPetitRecord, 2) SecondeRecord1 = Milieu (GlbPetitRecord, 4, 2) CentiemesRecord1 = Milieu (GlbPetitRecord, 7, 2) CentiemesRecord1 = CentiemesRecord1 + (SecondeRecordl * 100) CentiemesRecord1 = CentiemesRecord1 + ( (MinuteRecord1 * 60) * 100) MinuteRecord2 = Gauche (GlbGrandRecord, 2) SecondeRecord2 = Milieu (GlbGrandRecord, 4, 2) CentiemesRecord2 = Milieu (GlbGrandRecord, 7, 2) CentiemesRecord2 = CentiemesRecord2 + (SecondeRecord2 * 100) CentiemesRecord2 = CentiemesRecord2 + ( (MinuteRecord2 * 60) * 100) //DiffValeurRecord = CentiemesRecord2 - CentiemesRecordl DiffValeurRecord = CentiemesRecord1 - CentiemesRecord2 DiffNoteRecord = NoteRecordLePlusLent-NoteRecordLePlusRapide ValeurRefCoursel = GlbNombrePartants + 1 ValeurRefCourse2 = GlbNombrePartants / 2 DiffValeurSomme = GlbGrandGain-GlbPetitGain //tantque (DiffValeurSomme > 1000) //DiffValeurSomme = DiffValeurSomme/10 //fin DiffNoteSomme = NoteSommeDejaGagneeLaPlusGrande-NoteSommeDejaGagneeLaPlusPetite DiffValeurCitations = GlbGrandCitations-GlbPetitCitations DiffNoteCitations = NoteCitationsLePlusGrand-NoteCitationsLePlusPetit DiffValeurEcartGagnant = GIbGrandEcartGagnant-GibPetitEcartGagnant DiffNoteEcartGagnant = NoteEcartGagnantLePlusGrand-NoteEcartGagnantLe ? lusPetit DiffValeurEcartPlace = GlbGrandEcartPlace-GlbPetitEcartPlace DiffNoteEcartPlace = NoteEcartPlaceLePlusGrand-NoteEcartPlaceLePlusPetit ValeurReferencel est un réel ValeurCalcull est un réel ValeurReferencel = GlbNombrePartants + 1 ValeurCalcull = ValeurReferencel/2 //------4. Préparation du calcul. //------4. 1 Constitution des tableaux de classement des cotes probables 11------ On constitue la table décroissantes des 30 cotes probables CoteMax est un réel double CoteMin est un réel double CoteLaPlusGrande est un réel double CoteMax = 0 CoteMin = 999 i j i = 1 j = 1 L = 1 POUR L = 1 à GlbNombrePartants CoteLaPlusGrande = 0 j = 1 k = 1 POUR j = 1 à GlbNombrePartants SI (CopyTabCotes [j] > = CoteLaPlusGrande) ALORS CoteLaPlusGrande = CopyTabCotes [j] k = j FIN FIN SI (CoteLaPlusGrande > = CoteMax) ALORS CoteMax = CoteLaPlusGrande FIN TabClasseCotesDec[L] = k CopyTabcotes [k] =-1 FIN //-----4. 2 Constitution du tableau de classement croissant des cotes probables POUR j = 1 à GlbNombrePartants i = TabClasseCotesDec [j] TabClasseCotesCrois [i] = GlbNombrePartants-j FIN //---4. 3 Constitution du tableau de classement des notes des cotes probables 11------ Initialisation et ajustement des variables de calcul de cotes ValeurPointMoyen = CoteMax/20 CoteMax = 0 CoteMin = 1000 AmplitudeCote = 0 j = 1 POUR j = 1 à GlbNombrePartants SI (TabNotesCotesProbables [j] 21) et (GlbTabCote [j] 100) ALORS CoteProbableDuCheval = GlbTabCote [j] SI TabNotesCotesProbables [j] NoteCoteCalculee = TabNotesCotesProbables [j] *-1 SINON NoteCoteCalculee = TabNotesCotesProbables [j] FIN NoteCoteAjustee = 20-NoteCoteCalculee DifferentielCote = NoteCoteAjustee * ValeurPointMoyen SI TabNotesCotesProbables [j] FIN GlbTabCote [j] = CoteProbableCalculee SI (CoteProbableCalculee > = CoteMax) ALORS CoteMax = CoteProbableCalculee FIN SI (CoteProbableCalculee CoteMin = CoteProbableCalculee FIN SINON GlbTabCote [j] =-1 FIN//Fin condition : note vide FIN SI (CoteMin 1000) ALORS AmplitudeCote = CoteMax-CoteMin SI (AmplitudeCote 0) ALORS ValeurAmplitudeCote = 20/AmplitudeCote SINON ValeurAmplitudeCote = 0 FIN FIN //------4. 4 Boucle de calcul du résultat //------Pour chaque cheval traité dans la boucle, on calcule les notes de chaque //------critère. 1 note globale pour le critère, et une note détaillée. j = 1 TANTQUE j 21 ALORS TabNotesResultats [1] = GlbTabNotesGlobales [l] SINON TabNotesResultats [1] = 21 FIN TabNotesResultats [j] [26] = TabNotesChevaux [j] //--------.-.-.-----.-----.--. -.------------ //------ 4. 4. 2 L'AGE du cheval //Attention : si l'âge du cheval n'est pas renseigné pour les données de la course, il est stocké à 0 dans le fichier CHEVAUX (age~cheval). AgeDuCheval est un entier ZoneTrav est un réel ValeurAgeParAnnee est un réel AgeDuCheval = GlbTabAge [j] SI (NoteAgeLePlusJeune = 21) ou (NoteAgeLePlusVieux = 21) ou (AgeDuCheval TabNotesResultats [j] [2] = 21 TabNotesResultats [j] [27] = 21 SINON ZoneTrav = DiffNoteAge 1 DiffValeurAge AgeDuCheval = AgeDuCheval-GlbAgePlusJeune ValeurAgeParAnnee = ZoneTrav * AgeDuCheval ValeurAgeParAnnee = ValeurAgeParAnnee + NoteAgeLePlusJeune TabNotesResultats [j] [2] = GlbTabNotesGlobales [2] TabNotesResultats [j] [27] = ValeurAgeParAnnee FIN //-..-..-..-.-.-.-.-...-.-.--.--.--- //----4. 4.3 Le SEXE du cheval SexeDuCheval est une chaîne SexeDuCheval = GlbTabSexe [j] SI (SexeDuCheval ="M") ou (SexeDuCheval ="m") ALORS SI NoteSexeMale = 21 ALORS TabNotesResultats[j] [3] = 21 TabNotesResultats [j] [28] = 21 SINON TabNotesResultats [j] [3] = GlbTabNotesGlobales [3] TabNotesResultats [j] [28] = NoteSexeMale FIN FIN SI (SexeDuCheval ="F") ou (SexeDuCheval ="f") ALORS SI NoteSexeFemelle = 21 TabNotesResultats [3] = 21 TabNotesResultats [j] [28] = 21 SINON TabNotesResultats [3] = GlbTabNotesGlobales[3] TabNotesResultats [j] [28] = NoteSexeFemelle FIN FIN SI (SexeDuCheval ="H") ou (SexeDuCheval ="h") ALORS SI NoteSexeHongre = 21 TabNotesResultats [j] [3] =21 TabNotesResultats [j] [28] = 21 SINON TabNotesResultats [3] = GlbTabNotesGlobales [3] TabNotesResultats [28] = NoteSexeHongre FIN FIN //------------------------------------------- //---4. 4.4 Les ORIGINES du cheval NoteTrav est un réel NoteDuPere est un entier court NoteDeLaMere est un entier court SI (TabNotesPeres [j] = 21) et (TabNotesMeres [j] = 21) ALORS TabNotesResultats [j] [4] = 21 TabNotesResultats [j] [29] = 21 SINON NoteDuPere = TabNotesPeres [j] NoteDeLaMere = TabNotesMeres [j] SI (NoteDuPere = 21) et (NoteDeLaMere 21) ALORS Note Mère servie NoteTrav = NoteDeLaMere FIN SI (NoteDuPere 21) et (NoteDeLaMere = 21) ALORS Note Père servie NoteTrav = NoteDuPere FIN SI (NoteDuPere 21) et (NoteDeLaMere 21) ALORS Notes Mère et Père servies NoteTrav = (NoteDeLaMere + NoteDuPere)/2 FIN TabNotesResultats [j] [4] = GlbTabNotesGlobales [4] TabNotesResultats [j] [29] = NoteTrav FIN 11-------------------------------------------------------- //----4. 4. 5 Le NUMERO A LA CORDE du cheval ValeurNoteALaCorde est un réel ValeurCordeCalculee est un réel NoALaCorde est un entier NoALaCorde = GlbTabNoCorde [j] SI (NoteNoALaCordeLePlusPetit = 21) ou (NoteNoALaCordeLePlusGrand = 21) ou (NoALaC orde TabNotesResultats [j] [5] = 21 TabNotesResultats [j] [30] = 21 SINON ValeurNoteALaCorde = DiffNoteCorde/DiffValeurCorde //NoALaCorde = NoALaCorde-NoteNoALaCordeLePlusPetit NoALaCorde = NoALaCorde-GIbNoCordePetit ValeurCordeCalculee = ValeurNoteALaCorde * NoALaCorde ValeurCordeCalculee = ValeurCordeCalculee + NoteNoALaCordeLePlusPetit TabNotesResultats [5] = GlbTabNotesGlobales[5] TabNotesResultats [j] [30] = ValeurCordeCalculee FIN FIN //------4. 4. 6 Le PORT D'OEILLERES PortDOeilleres est un booléen PortDOeilleres = GlbTabOeillere [j] SI PortDOeilleres = Faux ALORS SI (NoteSansOeilleres = 21) ALORS TabNotesResultats [j] [6] = 21 TabNotesResultats [j] [31] = 21 SINON TabNotesResultats [j] [6] = GlbTabNotesGlobales [6] TabNotesResultats [j] [31] = NoteSansOeilleres FIN FIN SI PortDOeilleres = Vrai ALORS SI (NoteAvecOeilleres = 21) ALORS TabNotesResultats [j] [6] = 21 TabNotesResultats [j] [31] = 21 SINON TabNotesResultats [6] = GlbTabNotesGlobales [6] TabNotesResultats [j] [31] = NoteAvecOeilleres FIN FIN //-------------------------------------------------------- /1------ 4. 4. 7 Le HANDICAP du cheval ValeurHandicap est un entier ValeurNotationHandicap est un réel ValeurCalculHandicap est un réel ValeurHandicap = GlbTabValHand [j] SI (NoteHandicapMoins = 21) ou (NoteHandicapPlus = 21) ou (ValeurHandicap TabNotesResultats [j] [7] = 21 TabNotesResultats [j] [32] = 21 SINON ValeurNotationHandicap = DiffNoteHandicap/DiffValeurHandicap //ValeurHandicap = ValeurHandicap-GlbGrandHandicap ValeurHandicap = ValeurHandicap-GlbPetitHandicap ValeurCalculHandicap = ValeurNotationHandicap * ValeurHandicap ValeurCalculHandicap = ValeurCalculHandicap + NoteHandicapMoins TabNotesResultats [j] [7] = GlbTabNotesGlobales [7] TabNotesResultats [j] [32] = ValeurCalculHandicap FIN FIN //------ 4. 4. 8 Le JOCKEY du cheval SI (TabNotesJockeys [j] 21) ALORS TabNotesResultats [j] [8] = GlbTabNotesGlobales [8] SINON TabNotesResultats [j] [8] = 21 FIN TabNotesResultats [j] [33] = TabNotesJockeys [j] -------------------------------------------------------- //------ 4. 4. 9 L'ENTRAINEUR du cheval SI (TabNotesEntraineurs [j] 21) ALORS TabNotesResultats [j] [9] == GlbTabNotesGlobales [9] SINON TabNotesResultats [j] [9] =21 FIN TabNotesResultats [j] [34] = TabNotesEntraineurs [j] //--.-.-..--. -.--------- //---4. 4. 10 Le PROPRIETAIRE du cheval SI (TabNotesProprios [j] 21) ALORS TabNotesResultats [j] [10] = GlbTabNotesGlobales [10] SINON TabNotesResultats [j] [10] = 21 FIN TabNotesResultats [j] [35] = TabNotesProprios [j] //---------.. -.-.-.----------------- //---4. 4. 11 APTITUDE A LA DISTANCE du cheval SI (TabNotesAptitudeDistance [j] 21) ALORS TabNotesResultats [j] [11] = GlbTabNotesGlobales [ll] SINON TabNotesResultats [j] [11] = 21 FIN TabNotesResultats [j] [36] = TabNotesAptitudeDistance [j] //-.-.--.-------.-.-.-.-.-------------- //----4. 4. 12 APTITUDE A L'ETAT DU TERRAIN du cheval SI (TabNotesAptitudeTerrain [j] 21) ALORS TabNotesResultats [j] [12] = GlbTabNotesGlobales [12] SINON TabNotesResultats [j] [12] = 21 FIN TabNotesResultats [j] [37] = TabNotesAptitudeTerrain [j] //----.-.--.---.---.--.-.------------ //---4. 4. 13 DOTATION DE LA COURSE pour le cheval SI (TabNotesDotation [j] 21) ALORS TabNotesResultats [j] [13] = GlbTabNotesGlobales [13] SINON TabNotesResultats [j] [13] = 21 FIN TabNotesResultats [j] [38] = TabNotesDotation [j] //.--.-.-.----.-.-..--.-----.-.-.-------- //----4. 4. 14 RECORD DE VITESSE au Km de ce cheval RecordDeVitesse est une chaîne ValeurRecord est un réel ValeurCalculRecord est un réel MinutesRecord est un réel SecondesRecord est un réel CentiemesRecord est un réel RecordDeVitesse = GlbTabRecordKm [j] SI (RecordDeVitesse ="") ou (RecordDeVitesse ="00 : 00 : 00") ALORS RecordDeVitesse = itit FIN SI (NoteRecordLePlusRapide = 21) ou (NoteRecordLePlusLent = 21) ou (RecordDeVitess e ="") ALORS TabNotesResultats [j] [14] =21 TabNotesResultats [j] [39] = 21 SINON ValeurRecord = DiffNoteRecord 1 DiffValeurRecord MinutesRecord = Gauche (GlbTabRecordKm [j], 2) SecondesRecord = Milieu (GlbTabRecordKm [j], 4, 2) CentiemesRecord = Milieu (GlbTabRecordKm [j], 7,2) CentiemesRecord = CentiemesRecord + (SecondesRecord * 100) CentiemesRecord = CentiemesRecord + ( (MinutesRecord * 60) * 100) CentiemesRecord CentiemesRecord-CentiemesRecordl CentiemesRecord = CentiemesRecord-CentiemesRecord2 ValeurCalculRecord = ValeurRecord * CentiemesRecord ValeurCalculRecord = ValeurCalculRecord + NoteRecordLePlusRapide TabNotesResultats [j] [14] = GlbTabNotesGlobales [14] TabNotesResultats [j] [39] = ValeurCalculRecord FIN fin //----4. 4. 15 DERNIERE PERFORMANCE REALISEE de ce cheval DernierePerf est un entier ValeurDernierePerf est un réel NoteDernierePerf est un réel NombreDePointsCalcules est un réel ValeurIntermediaire est un réel DernierePerf = GlbTabPlacePerf [j] SI (TabNotesDernierePerf[j] = 21) ALORS TabNotesResultats [j] [15] = 21 TabNotesResultats [40] = 21 FIN SI (TabNotesDernierePerf [j] 21) et (DernierePerf 21) et (DernierePerf > -1) ALORS ValeurDernierePerf = DernierePerf SI (ValeurDernierePerf > GlbNombrePartants) ALORS ValeurDernierePerf = GlbNombrePartants FIN NombreDePointsCalcules = (GlbNombrePartants+1)-ValeurDernierePerf NoteDernierePerf = TabNotesDernierePerf [j] SI (NoteDernierePerf NombreDePointsCalcules = (GlbNombrePartants+1) - NombreDePointsCalcule s NoteDernierePerf = 20-NoteDernierePerf SINON SI (ValeurDernierePerf > ValeurCalcull) ALORS NoteDernierePerf = 20-NoteDernierePerf FIN FIN ValeurIntermediaire = GlbNombrePartants 1 20 NombreDePointsCalcules = NombreDePointsCalcules 1 ValeurIntermediaire NoteDernierePerf = (NoteDernierePerf * NombreDePointsCalcules)/20 TabNotesResultats [j] [15] = GlbTabNotesGlobales [15] TabNotesResultats[j] [40] = NoteDernierePerf FIN -------------------------------------------------------- //-----4. 4. 16 SOMME DEJA GAGNEE de ce cheval SommeDejaGagnee est un réel double ValeurSomme est un réel double ValeurNoteSomme est un réel double SommeDejaGagnee = GlbTabGains [j] SI (NoteSommeDejaGagneeLaPlusPetite = 21) ou (NoteSommeDejaGagneeLaPlusGrande = 21) ou (SommeDejaGagnee ValeurSomme = DiffNoteSomme / DiffValeurSomme SoinmeDejaGagnee = SommeDejaGagnee - GlbPetitGain ValeurNotesomme = ValeurSomme * SommeDejaGagnee ValeurNoteSomme = ValeurNoteSomme + NoteSommeDejaGagneeLaPlusPetite : abNotesResultats[j] [16] = GlbTabNotesGlobales [16] : abNotesResultats[j] [41] = ValeurNoteSomme FIN -------------------------------------------------------- //------ 4. 4. 17 COTE PROBABLE de ce cheval NoteCoteProbable est un réel double NoteCalculCote est un réel double SI (TabNotesCotesProbables[j] = 21) ALORS TabNotesResultats[j] [17] = 21 TabNOtesResultats[j] [42] = 21 FIN SI (TabNotesCotesProbables [j] 21) et (GlbTabCote [j] =-1) ALORS : abNotesResultats[j] [17] = GlbTabNotesGlobales[17] 5 : (TabNotesCotesProbables[j] TabNotesResultats [j] [42] = TabNotesCotesProbables[j] * (-1) SINON TabNotesResultats [j] [42] = TabNotesCotesProbables [j] F FIN SI (TabNotesCotesProbables [j] 21) et (GlbTabCote [j] -1) ALORS otecoteProbable = GlbTabCote [j]-CoteMin KoteCalculCote = NoteCoteProbable * ValeurAmplitudeCote NoteCalculCote = 20-NoteCalculCote : abNotesResultats[j] [17] = GlbTabNotesGlobales [17] : abNotesResultats[j] [42] = NoteCalculCote FIN //-------------------------------------------------------- //------ 4. 4.18 ECARTS GAGNANTS et PLACES de ce cheval EcartGagnant est un entier ValeurEcartGagnant est un réel ValeurCalculEcartGagnant est un réel NoteEcartGagnantIntermediaire est un réel Ecart ? lace est un entier ValeurEcartPlace est un réel ValeurCalculEcartPlace est un réel NoteEcartPlaceIntermediaire est un réel EcartGagnant = GlbTabEcartGagnant [j] Encart lace = GlbTabEcartPlace [j] SI (NoteEcartGagnantLePlusPetit = 21) ou (NoteEcartGagnantLePlusGrand = 21) ou (Ec artGagnant =-1) ALORS NoteEcartGagnantIntermediaire = 21 SINON ValeurEcartGagnant = DiffNoteEcartGagnant/DiffValeurEcartGagnant EcartGagnant = EcartGagnant-GlbPetitEcartGagnant ValeurCalculEcartGagnant = ValeurEcartGagnant * EcartGagnant ValeurCalculEcartGagnant = ValeurCalculEcartGagnant + NoteEcartGagnanrLePl usPetit NoteEcartGagnantIntermediaire = ValeurCalculEcartGagnant FIN SI (NoteEcartPlaceLePlusPetit = 21) ou (NoteEcartPlaceLePlusGrand = 21) ou (Ec artPlace =-1) ALORS NoteEcartPlaceIntermediaire = 21 SINON ValeurEcartPlace = DiffNoteEcartPlace/DiffValeurEcartPlace EcartPlace = EcartPlace-GIbPetitEcartPlace ValeurCalculEcartPlace = ValeurEcartPlace * EcartPlace ValeurCalculEcartPlace = ValeurCalculEcartPlace + NoteEcartPlaceLePlus ? eti t NoteEcartPlaceIntermediaire = ValeurCalculEcartPlace FIN SI (NoteEcartGagnantIntermediaire = 21) et (NoteEcartPlaceIntermediaire = zu ALORS TabNotesResultats [j] [18] =21 TabNotesResultats [j] [43] = 21 FIN SI (NoteEcartGagnantIntermediaire 21) et (NoteEcartPlaceIntermediaire = 21) ALORS TabNotesResultats [18] = GlbTabNotesGlobales[18] TabNotesResultats [j] [43] = NoteEcartGagnantIntermediaire FIN SI (NoteEcartGagnantIntermediaire = 21) et (NoteEcartPlaceIntermediaire 21) ALORS TabNotesResultats [j] [18] = GlbTabNotesGlobales [18] TabNotesResultats [j] [43] = NoteEcartPlaceIntermediaire FIN SI (NoteEcartGagnantIntermediaire 21) et (NoteEcartPlaceIntermediaire 21) ALORS TabNotesResultats [j] [18] = GlbTabNotesGlobales [18] TabNotesResultats [j] [43] = (NoteEcartGagnantIntermediaire + NoteEcart ? lace Intermédiaire)/2 FIN FIN //----4. 4.19 NOMBRE DE CITATIONS JOURNAUX pour ce cheval NombreCitations est un reel NombreCitations est un entier ValeurCitations est un réel ValeurCalculCitations est un réel NombreCitations = GlbTabCitations [j] SI (NoteCitationsLePlusPetit = 21) ou (NoteCitationsLePlusGrand = 21) ou (NoirbreCi tations TabNotesResultats [19] = 21 TabNotesResultats [j] [44] = 21 SINON ValeurCitations = DiffNoteCitations/DiffValeurCitations SI (NombreCitations = 0) ALORS ValeurCalculCitations = 0 SINON NombreCitations = NombreCitations-GlbPetitCitations ValeurCalculCitations = ValeurCitations * NombreCitations ValeurCalculCitations = ValeurCalculCitations + NoteCitationsLePlusPet it FIN TabNotesResultats [j] [19] = GlbTabNotesGlobales [19] TabNotesResultats [j] [44] = ValeurCalculCitations FIN FIN //Fin du processus de calcul pour 1 cheval //Incrément de l'indice de la table de lecture des valeurs Chevaux //pour calculer le cheval suivant. J += 1 FIN//Fin de la boucle globale de calcul sur les 30 chevaux -------------------------------------------------------- //---4. 5 Calcul spécifique aux PRONOSTICS COMPLEMENTAIRES //------On boucle sur les 10 pronostics en cumulant en table les points 11------ de chaque cheval correspondant à sa place dans le pronostic. NoteDuPronostic est un réel NombreDePronostics est un entier court NombreDePoints est un réel double IndiceCheval est un entier NombreDePronostics = 0 POUR L = 1 à 30 TabCumulPointsPronosticsCompl [L] = 0 FIN //-----4. 5.1 Cumul des points par cheval 11------ La valeur 31 signifie que la case a été laissée vide L = 1 POUR L = 1 à 20 NoteDuPronostic = TabNotesPronosticsCompl [L] SI (NoteDuPronostic 21) ALORS NombreDePronostics +=1 POUR k = 1 à 10 NombreDePoints = 20- (k-1) NombreDePoints = NombreDePoints * (NoteDuPronostic/20) IndiceCheval = TabClassePronosticsCompl [L] [k] SI (TabClassePronosticsCompl [L] [k] 31) ALORS TabCumulPointsPronosticsCompl[IndiceCheval] = TabCumulPointsProno sticsCompl[IndiceCheval] + NombreDePoints FIN FIN//Fin boucle sur les 10 notes du pronostic en cours FIN FIN//Fin boucle sur les 20 pronotics //------4. 5.2 Affectation des notes des pronostics complémentaires par cheval POUR j = 1 à GlbNombrePartants SI (NombreDePronostics = 0) ALORS TabNotesResultats [j] [20] = 21 TabNotesResultats [j] [45] = 21 SINON TabNotesResultats [j] [20] = GlbTabNotesGlobales [20] TabCumulPointsPronosticsCompl [j] = TabCumulPoitnsProncsticsCompl[J] / NombreDePronostics TabNotesResultats [j] [45] = TabCumulPointsPronosticsCompl[j] FIN FIN //------.------------.---.--------.-.--------- //------4. 6 Pondération des notes des critères généraux ValeurCritere est un entier CoefficientCritere est un réel POUR j = 1 à GlbNombrePartants ValeurCritere = 0 POUR k = 1 à 20 SI (TabNotesResultats [j] [k] 21) ALORS ValeurCritere = ValeurCritere+TabNotesResultats [j- : : FIN FIN CoefficientCritere = 0 SI (ValeurCritere 0) ALORS CoefficientCritere = 20/ValeurCritere FIN POUR k = 1 à 20 SI (TabNotesResultats [j] [k] 21) ALORS TabNotesResultats [j] [k] = TabNotesResultats [j] [k]'CoefficientCritere FIN FIN FIN //---...-.-------------------.----------- //------4. 7 Calcul de la note finale pour chaque cheval ValeurNoteDetail est un réel IndiceNote est un entier court POUR j = 1 à 30 TabNotesFinales [j] = 21 FIN POUR j = 1 à GlbNombrePartants ValeurNoteDetail = 0 IndiceNote = 0 POUR k = 1 à 20 SI (TabNotesResultats [j] [k] 21) ALORS ValeurNoteDetail = ValeurNoteDetail + (TabNotesResulats [jHk] * TabNotesResultats [j] [k+25])/20 IndiceNote = 1 FIN FIN SI (IndiceNote 0) ALORS TabNotesFinales [j] = ValeurNoteDetail FIN FIN //-------------------------------------------------------- //------4. 8 Recherche des 10 lers chevaux du pronostic NombreTraites est un entier IndicateurMax est un entier court NumeroCheval est un entier NoteMaximum est un réel m est un entier POUR k = 1 à 10 TabNoChevauxResultat [k] = 21 TabPointsCalcules [k] = 0 TabPointsCalculesReels [k] = 0 TabPourcentageEcarts [k] = 0 FIN NombreTraites = 0 j = 1 TANTQUE j NoteMaximum =-1 NumeroCheval = 0 IndicateurMax = 0 POUR m = 1 à 30 SI (TabNotesFinales [m] 21) et (TabNotesFinales [m] > NoteMaximum) ALORS NoteMaximum = TabNotesFinales [m] NumeroCheval = m IndicateurMax = 1 FIN FIN SI (IndicateurMax 0) ALORS NombreTraites++ TabNoChevauxResultat [NombreTraites] = NumeroCheval TravAscii = NumériqueVersChaîne (NoteMaximum, "8. 7f") TravAscii2 = Gauche (TravAscii, Taille (TravAscii)-3) TabPointsCalculesReels [NombreTraites] = NoteMaximum TabPointsCalcules [NombreTraites] = Val (TravAscii2) TabNotesFinales [NumeroCheval] =-1 FIN SI (NombreTraites = 10) ALORS j = GlbNombrePartants +1//pour sortir de la boucle des que les 10 gagnants sont trouvés FIN j += 1 FIN //----------.-------...----------------- //------4. 9 Calcul des pourcentages d'écarts DifferenceNote est un réel PourcentageEcart est un réel double m = 2 TANTQUE m //si (TabPointsCalcules [m] > -1) alors SI (TabNoChevauxResultat [m] 0) ALORS DifferenceNote = TabPointsCalculesReels [m-1]-TabPointsCalculesReels [m] SI (TabPointsCalculesReels [m] 0) ALORS PourcentageEcart = DifferenceNote/TabPointsCalculesReels [m] PourcentageEcart = PourcentageEcart * 100 SINON SI (TabPointsCalculesReels [m-1] 0) ALORS PourcentageEcart = 1000 SINON PourcentageEcart = 0 FIN //PourcentageEcart = TabPointsCalculesReels [m-1] //PourcentageEcart == PourcentageEcart * 100 FIN TravAscii = NumériqueVersChaîne (PourcentageEcart,"12. 7f") TravAscii2 = Gauche (TravAscii, Taille (TravAscii)-4) PourcentageEcart = Val (TravAscii2) SI (PourcentageEcart > 1000) ALORS TabPourcentageEcarts [m] = 1000 SINON TabPourcentageEcarts [m] = PourcentageEcart FIN SINON m = 10//Pour sortir de la boucle FIN m +== 1 FIN FIN 1/------ LE CALCUL DU PRONOSTIC est TERMINE ! //------5. Préparation de l'affichage du résultat : sauvegarde du résultat HAssigne ("rsjoueur","fich") HOuvre ("rsjoueur", MotDePasseBase) BOUCLE SI pas HDejaBloque () ALORS SORTIR FIN HBloqueFichier ("rsjoueur") HLitRecherche ("rsjoueur","clepronostic", Connexion) SI h. Trouve ALORS POUR i = 1 à NombreTraites rsjoueur. resultat~ordres[i] = TabNoChevauxResultat [i] rsjoueur. resultat~points[i] = TabPointsCalcules [i] rsjoueur. resultat ecarts [i] = TabPourcentageEcarts [i] FIN SI (NombreTraites POUR i = NombreTraites+1 à 10 rsjoueur. resultat~ordres[i] = 0 rsjoueur. resultat~points[i] = 0 rsjoueur. résultat écarts [i] = 0 FIN FIN HModifie ("rsjoueur") SI HDoublon() ALORS FIN SINON rsjoueur. clepronostic = Connexion rsjoueur. date = DateR rsjoueur. reunion = Reunion rsjoueur. course = Course rsjoueur. code~joueur = Droite (Connexion, 10) POUR i = 1 à NombreTraites rsjoueur. resultat ordres[i] = TabNoChevauxResultat rsjoueur. resultatpoints [i] = TabPointsCalcules [i] rsjoueur. resultat=ecarts[i] = TabPourcentageEcarts [i] FIN SI (NombreTraites POUR i = NombreTraites+1 à 10 rsjoueur. resultat ordres [i] = 0 rsjoueur. resultat~points [i] = 0 rsjoueur. resultat~ecarts[i] = 0 FIN FIN HAjoute ("rsjoueur") FIN HDebloqueFichier ("rsjoueur") //------6. Affichage de la page de résultat //La page est affichée par la page appelante (Criteres~Pronostic) Liste des 20 critères généraux 1 : Le cheval 2 : L'âge du cheval 3 : Le sexe 4 : Les origines du cheval 5 : Le ? à la corde 6 : Le port d'oeillères 7 : Le handicap de distance 8 : Le jockey 9 : L'entraîneur 10 : Le propriétaire 11 : Aptitude à la distance 12 : Aptitude à l'état du terrain 13 : Dotation de la course 14 : Record de vitesse 15 Dernière performance 16 : Somme déjà gagnée 17 : La cote probable 18 : Les Ecarts gagnants et placés 19 : Nombre de citation journaux 20 : Pronostics complémentaires REVENDICATIONS 1) Dispositif d'outil d'aide à la décision pour l'établissement de pronostics dont la fonctionnalité principale permet de calculer des pronostics personnels, baptisés auto-pronostics , à partir de données connues mais également à partir de données estimées. 2) Dispositif selon la revendication 1 caractérisé en ce que les données estimées font l'objet d'une estimation portant surtout ou partie de plusieurs critères d'appréciation, critères utilisés habituellement de manière informelle lors de la préparation d'un pronostic. 3) Dispositif selon la revendication 1 ou la revendication 2 caractérisé en ce que des algorithmes spécifiques, calculent le nombre de points obtenu par chacune des entités faisant l'objet du pronostic ; le résultat est alors présenté sous la forme de classement et de récapitulatif donnant dans l'ordre le classement, les écarts correspondants en pourcentages ainsi que le détail de la notation de chacune des entités. 4) Dispositif selon l'une quelconque des revendications précédentes caractérisé par une opération de démontage dans laquelle est déterminée avec les algorithmes spécifiques une ou plusieurs notations moyennes types qui auraient permis de trouver le classement exact des entités ayant fait l'objet du pronostic. 5) Dispositif reprenant la totalité des revendications précédentes caractérisé par la gestion d'exercices personnels de notation pour trouver le bon classement, soit à partir des notations moyennes issues du calcul des algorithmes spécifiques, soit à partir d'une notation vierge, soit à partir de pronostics personnels établis avec les dispositifs correspondant aux revendications 1 et 2 et 3 avant le déroulement de l'événement ayant donné lieu au pronostic. 6) Dispositif reprenant la revendications 1 ou la revendication 4 caractérisé par le calcul de notations moyennes types définies à partir de systèmes de notations aléatoires itératives, validées de manière automatique, dès que le calcul avec les algorithmes spécifiques, donne pour résultat le bon classement des entités ayant fait l'objet du pronostic. 7) Dispositif selon l'une quelconque des revendications précédentes caractérisé par la consultation à tout moment, avant et après l'événement ayant donné lieu au pronostic des pronostics personnels précédemment établis. 8) Dispositif selon l'une quelconque des revendications précédentes caractérisé par l'édition de grilles de notations vierges pour un évènement faisant l'objet d'un pronostic. 9) Dispositif selon l'une quelconque des revendications précédentes caractérisé par la mise à disposition pour consultation d'informations générales mises à jour selon les besoins. 10) Dispositif complémentaire à chacune des revendications précédentes caractérisé par la consultation à tout moment de l'aide en ligne correspondante.