FR 3028076 A1 20160506 FR 1460382 A 20141029 3028076 ARCHITECTURE LOGICIELLE POUR SYSTEME EXPERT Domaine de l'invention L'invention concerne le domaine de l'intelligence artificielle en général et le domaine des systèmes experts à base de règles en particulier, notamment fondés sur la logique floue. Etat de la Technique Les Systèmes Intelligents Flous (SIF) - ou systèmes experts flous - sont des systèmes qui intègrent ou implémentent de l'expertise humaine et qui visent à automatiser ou imiter le raisonnement d'experts humains face à des systèmes complexes. Ces systèmes éminemment techniques peuvent se fonder sur différentes aspects de la logique mathématique et en particulier sur la logique dite "logique floue". Les systèmes experts dits "flous" nécessitent généralement plus de calculs que les systèmes experts standards ou classiques. Par ailleurs, ces systèmes requièrent généralement de réitérer dans le temps ces calculs significatifs (par exemple lorsqu'ils sont appliqués à des systèmes dynamiques qui changent au cours du temps). Les systèmes experts dits "flous" nécessitent généralement de la puissance de calcul. Les scientifiques développant des systèmes experts flous sont généralement amenés à construire des opérateurs de plus en plus complexes et "riches". Le temps de calcul peut alors devenir plus important que les conjonctions, disjonctions et négations que l'on trouve généralement avec les systèmes experts classiques. 2 3028076 Par ailleurs, les systèmes experts flous nécessitent la répétition de ces calculs. En effet, dans les systèmes experts classiques, seules certaines règles sont activées à un moment donné alors qu'avec les systèmes experts flous, toutes les règles doivent être recalculées (à tout le moins 5 une grande partie d'entre elles). Selon l'état de l'art des systèmes experts actuellement commercialisés (e.g. offerts au téléchargement ou à l'achat), le seul moyen disponible actuellement afin de gérer un flux de données d'entrée (c'est-à-dire de multiples données reçues au cours du temps) consiste à relancer l'évaluation à chaque pas de temps. Cette approche 10 nécessite en particulier de réévaluer les règles mises en oeuvre dans un tel système expert flou et de manière répétée dans le temps (par exemple toutes les secondes). Cette approche produit l'effet d'une prise de décision continue (e.g. "au fil de l'eau" ou "progressivement" ou "au fur et à mesure" ou "de manière continue", voire dans certains cas une décision 15 "interactive" ou même "temps-réel" ou "quasi-temps réel" ou "en flux tendu"). Un problème technique qui se pose est que toutes les règles doivent être réévaluées à chaque itération, y compris celles dont les entrées n'ont pas changées. Cela est d'autant plus coûteux en termes de calcul que des opérateurs dont l'évaluation peut être fort complexe 20 peuvent être impliqués dans ces calculs. Cette situation sous-optimisée est en soi insatisfaisante. En pratique également, les dispositifs et appareils impliqués peuvent ne pas disposer de la puissance de calcul suffisante, quand bien même le calcul serait-il distribué entre plusieurs appareils coopérant les uns avec les autres. Dans un cadre d'utilisation 25 particulier, celui de l'Internet des objets, il est par exemple généralement prévu un très grand nombre d'objets en interaction mais ces objets ne disposent pas nécessairement de moyens de calcul appropriés. Afin de résoudre ces différents aspects, la littérature brevet reste 30 silencieuse en matière de logique floue. De rares documents de brevet traitent du problème technique initial mais dans le cadre de systèmes 3 3028076 experts classiques, c'est-à-dire sans prendre en compte les spécificités relatives à la logique floue. Dans le cadre classique, le document US8214316 enseigne que l'évaluation des règles (e.g. "forward chaining") peut être soumise à une notification des entrées changées. Les autres 5 documents connus ne traitent pas de logique floue. L'invention proposée dans le présent document permet de répondre à ces besoins ou limitations, au moins en partie. 10 Résumé de l'invention Il est divulgué un procédé mis en oeuvre sur ordinateur comprenant les étapes consistant à recevoir une valeur d'entrée à évaluer; enfiler la valeur d'entrée dans une file d'attente; sélectionner au sein de la file 15 d'attente une valeur d'entrée en attente; déterminer une valeur de sortie en évaluant par inférence au moyen de la base de règles la valeur d'entrée en attente sélectionnée. Des développements décrivent la diffusion d'une ou plusieurs valeurs de sortie, la planification dans le temps et/ou dans l'espace des évaluations des valeurs d'entrées en 20 attente (notamment en matière de ressources de calcul), l'évaluation sélective de valeurs d'entrée, l'utilisation d'un graphe de dépendance, des paramètres d'expiration de parties de règles dans le temps, l'utilisation de l'inférence selon la logique floue. Des aspects de système, notamment de composants, et de logiciels sont décrits. 25 Selon un aspect général de l'invention, il est divulgué une architecture logicielle permettant d'obtenir des performances optimisées, visant à identifier les différentes données en sortie en fonction des règles et des données en entrée. 30 4 3028076 Plus précisément, selon un mode de réalisation de l'invention, il est divulgué un système expert flou capable de gérer un flux (continu ou régulier ou discontinu ou irrégulier ou périodique ou apériodique ou intermittent) d'entrées et de restituer progressivement (e.g. "au fil de 5 l'eau") les valeurs des sorties correspondantes. Les différents modes de réalisation de l'invention sont avantageusement utilisés dans des domaines techniques tels que la domotique ou la régulation industrielle. De manière générale, l'invention trouvera 10 application pour surveiller ("monitoring") un système ou un objet donné au moyen de plusieurs capteurs ("senseurs") qui mesurent différents phénomènes en continu (ou à des fréquences éventuellement différentes, par intermittence ou de manière périodique). Des procédés et des systèmes selon l'invention peuvent permettre d'implémenter un système 15 de régulation en domotique. Par exemple, un système expert flou selon l'invention peut mesurer au cours du temps (de manière discrète ou en continu) les variations de températures, de luminosité et d'occupation des pièces pour déduire et/ou actionner des commandes correspondantes (par exemple d'ouverture des volets). 20 Avantageusement, mais de manière facultative, l'écriture des règles selon l'invention s'effectue en langage naturel (plutôt qu'au moyen d'opérateurs mathématiques). Cela permet de cacher - au moins pour partie - à l'opérateur qui saisit ses règles expertes la complexité mathématique 25 sous-jacente au modèle en cours d'exécution. L'utilisation du langage naturel permet également d'améliorer l'expressivité du système expert. Cette caractéristique permet d'obtenir une meilleure couverture des situations réelles par les règles. En d'autres termes, un système expert flou fondé sur des règles exprimées en langage naturel permet in fine une 30 meilleure "capture" du réel. En d'autres termes, certains modes de réalisation manipule avantageusement des règles ou expressions utilisant 5 3028076 le vocabulaire du langage naturel, améliorant la compréhension (et donc la manipulation ultérieure) des dites règles ou expressions. Cet avantage est inhérent à la logique floue, comme indiqué dans « The 5 concept of a linguistic variable and its applications » de L.A. Zadeh. L'invention trouve avantageusement application pour des systèmes experts tant "classiques" que "flous". 10 La logique floue ("fuzzy logic" en anglais) est une extension de la logique classique aux raisonnements approchés. Par ses aspects numériques, elle s'oppose aux logiques modales. A l'inverse de l'algèbre de Boole, la logique floue autorise la valeur de vérité d'une condition à parcourir un autre domaine que la paire {vrai, faux}. En logique floue, il existe des 15 degrés dans la satisfaction d'une condition. La logique floue attribue des degrés de vérité à une relation du style x est_plus_près_de y que_de z, construite et/ou affinée par apprentissage. De façon générale, les relations floues permettront de coder des connaissances graduées, empiriques ou typiques, acquises directement ou par des heuristiques, 20 des inductions, etc. Les transitions utilisées peuvent être de type linéaire, hyperbolique (e.g. sigmoïde ou tangente hyperbolique), exponentielle, gaussienne, etc. Les procédés et systèmes selon l'invention facilitent de manière générale 25 les interactions homme-machine. En particulier, ils peuvent permettre de décharger l'utilisateur de manipulations fastidieuses, parfois répétitives et souvent complexes. Généralement, les différents modes de réalisation de l'invention conduisent à l'optimisation de l'effort cognitif à fournir par l'utilisateur lors de l'utilisation du système expert selon l'invention. En 30 d'autres termes, les effets techniques liés à certains aspects de l'invention correspondent à une réduction de la charge cognitive de l'utilisateur. 6 3028076 Description des figures Différents aspects et avantages de l'invention vont apparaitre en appui de la description d'un mode préféré d'implémentation de l'invention mais non 5 limitatif, avec référence aux figures ci-dessous : La figure 1 schématise l'architecture générale d'un exemple de procédé selon l'invention; 10 La figure 2 illustre un exemple de règle représentée sous forme de graphe; La figure 3 illustre un exemple de graphe avec des noeuds présentant des priorités. 15 Description détaillée de l'invention D'une manière générale, un système à base de règles est un outil capable de reproduire les mécanismes cognitifs d'un expert, dans un 20 domaine particulier. Plus précisément, un système expert est un logiciel capable de répondre à des questions, en effectuant un raisonnement à partir de faits et de règles connus. Il peut servir notamment comme outil d'aide à la décision. Un système expert se compose de trois parties: une base de faits, une base de règles et un moteur d'inférence. Le moteur 25 d'inférence est capable d'utiliser faits et règles pour produire de nouveaux faits, jusqu'à parvenir à la réponse à la question experte posée. Un système expert peut reposer sur des mécanismes de logique formelle et utilisent le raisonnement déductif. Il peut par exemple s'appuyer sur la logique des propositions (« logique d'ordre 0 »), ou bien la logique des 7 3028076 prédicats du premier ordre (« logique d'ordre 1 »). Des techniques de logique floue peuvent aussi être utilisées. Les algorithmes pour réaliser le calcul par inférence sont divers et 5 peuvent notamment être spécifiques à la nature de la logique qui est implémentée. Par exemple, pour la logique d'ordre 0 - utilisée entre autres par les systèmes de gestion de règles business (« Business Rule Management Systems » ou BRMS) -, les algorithmes de chaînage avant ou arrière (« forward chaining » ou « backward chaining ») permettent de 10 partir des faits et d'en déduire les conclusions (ou inversement de partir des conclusions pour connaître les faits qui en sont à l'origine). Dans les années 80, les algorithmes Rete et Novel ont remplacé ces algorithmes de chaînage en proposant une étape de filtrage des règles impactés par les faits. Pour la logique d'ordre 1, les algorithmes de chaînage sont 15 utilisés conjointement avec un algorithme d'unification qui permet d'instancier un prédicat pour un ou plusieurs individus dans l'espace considéré. Enfin en logique floue, les méthodes d'inférence de Zadeh, Mamdani et Sugeno peuvent être utilisées. 20 Dans les systèmes à base de connaissances exprimées en langage naturel, une connaissance est généralement représentée par des règles de la forme : "si une grandeur est [adjectif] et une autre grandeur est [adjectif] alors la grandeur de la sortie est [adjectifT. Par exemple: "si la température extérieure est très froide et que la pluie est fine alors le 25 risque de verglas est grand'. Les procédés et systèmes selon l'invention effectuent une ou plusieurs opérations ou étapes, parmi lesquelles des étapes de a) stockage b) de mesure ou d'observation c) de planification de l'évaluation d) d'évaluation 30 proprement dite et e) de diffusion. 8 3028076 Plus spécifiquement, le procédé comprend une ou plusieurs étapes parmi - a) des étapes de stockage; les modifications observées quant aux entrées peuvent être stockées dans une file d'attente (cette file d'attente ou "buffer" permet avantageusement de manipuler des données en 5 entrées qui pourraient changer ou s'accumuler plus vite que les capacités de traitement du système ne le permettent). Eventuellement, en application de sa politique propre, la file d'attente selon l'invention peut supprimer, et/ou fusionner des éléments (par exemple si la fréquence de rafraîchissement des entrées est trop élevée). En d'autres termes, la file 10 d'attente peut ne pas être "passive" (au sens d'un simple espace de stockage temporaire) mais au contraire être "active", i.e. participer activement au système global; - b) des étapes de mesure ou d'observation ou de surveillance ou de suivi du contexte courant (comprenant et non limité à la surveillance de l'état 15 de la machine, i.e. charge ou activité processeur ou moyens de calcul, utilisation instantanée de la mémoire, etc); de surcroît, ces étapes peuvent en outre comprendre des étapes de sélection de certains éléments à retirer de la file d'attente, par exemple en vue de leur traitement (selon la politique implémentée); 20 - c) des étapes de planification quant à l'évaluation des éléments sélectionnés sur les différents moyens de calculs physiques (suivant les différents niveaux de granularité accessibles, depuis les grappes de serveurs, les serveurs, les processeurs au sein des serveurs, les coeurs au sein des processeurs; également la subdivision des tâches de calcul, 25 par exemple les threads de calcul, etc). Par exemple, si les éléments sont indépendants (c'est-à-dire qu'ils n'influent pas sur les mêmes sorties), il est possible dans certains cas de procéder à des calculs en parallèle. En d'autres termes, le composant de planification peut sélectionner une ou plusieurs entrées (ou un groupe d'entrées) ayant changées ou ayant été 30 modifiées et peut décider d'affecter son évaluation à une entité (un coeur, un calculateur) et/ou peut simplement ne pas prendre en compte un 9 302 80 76 groupe d'entrées s'il juge que la machine est trop occupée et/ou que ces modifications ne sont pas informatives ou redondantes. - d) des étapes d'évaluation des sorties à partir des éléments sélectionnés en amont; 5 - e) des étapes de diffusion des nouvelles valeurs de sortie (en considération de la politique de diffusion définie localement); les modalités de ladite diffusion peuvent s'effectuer de diverses manières et à l'intention soit de diverses sous-entités (généralement vers l'extérieur du système expert flou, mais dans des cas particuliers vers des composants 10 internes à ce système). De manière générale, il est divulgué un procédé mis en oeuvre sur ordinateur de gestion d'une base de règles 150 le procédé comprenant les étapes consistant à recevoir une valeur d'entrée 101 à évaluer; 15 évaluer par inférence au moyen de la base de règles 150 une valeur de sortie 102 correspondant à la valeur d'entrée 101; caractérisé en ce que le procédé comprend les étapes consistant à enfiler la valeur d'entrée dans une file d'attente 110; sélectionner 112 au sein de la file d'attente 110 une valeur d'entrée en attente; et déterminer une valeur de sortie 102 20 en évaluant par inférence au moyen de la base de règles 150 la valeur d'entrée en attente sélectionnée. Une valeur d'entrée peut être une valeur numérique (par exemple "38") ou une donnée symbolique ou bien une variable (par exemple "a") ou 25 bien encore une suite de caractères (par exemple "38°C"). La base de règles 150 comprend des règles. Une règle - au sens de l'invention - est constituée de plusieurs éléments: 30 des propositions, des expressions (unaires, binaires, ...) et des conclusions. Les propositions peuvent comprendre des variables 10 3028076 linguistiques dans le cadre de la logique floue. Une règle comprend plusieurs expressions (prémices, conclusions) et un ou plusieurs opérateurs (par exemple des opérateurs logiques prédéfinis standard "si", "alors", etc. ainsi que des opérateurs spécifiques "avant", "après", "tant 5 que"). Par exemple une règle peut être "si la température est haute alors ouvrir la fenêtre"). Une expression peut notamment comprendre une suite de caractères (par exemple "si la température est haute" ou "ouvrir la fenêtre"). Une expression peut être une expression régulière. Une expression peut être une expression rationnelle. Une expression peut être 10 une expression formelle. Avantageusement une règle ou une expression manipulée par le procédé selon l'invention comprend du vocabulaire appartenant au langage naturel (i.e. les mots ou suites de caractères sont des mots du langage naturel), 15 améliorant la compréhension des règles par l'utilisateur et renforçant l'expressivité de ces mêmes règles (e.g. leur capacité de "capture" du monde réel). Une valeur d'entrée selon l'invention est "enfilée" ("to queue" en anglais) 20 ou "placée dans une file d'attente". Une valeur d'entrée est ensuite sélectionnée parmi les valeurs en attente. Spécifiquement, cette sélection peut être du fait de la file d'attente elle- 25 même (par exemple lorsque la capacité de stockage de la file d'attente est atteinte, cette dernière peut "pousser" une ou plusieurs valeurs d'entrée vers l'évaluation ou vers d'autres composants du système). De manière générale, la sélection est du fait du module de planification 30 (i.e. des étapes consistant à planifier les évaluations), par exemple selon 11 3028076 un mode "pull". Le composant de planification (les étapes de planification) participe du contrôle du système ainsi défini. Dans certains modes de réalisation, l'enfilage peut être du type "First In 5 First Out'. Dans certains modes de réalisation, la mise en file d'attente peut impliquer des traitements sur les valeurs. La file d'attente peut en effet être associée à une "politique", c'est-à-dire un ensemble de règles. Ces règles sont prédéfinies. Elles peuvent être de type logique (selon diverses modalités, par exemple logique classique. Elles sont parfois 10 configurables (de manière préalable et/ou à la demande i.e. en cours d'exécution du procédé ou système global). En l'espèce, en matière de file d'attente, les valeurs d'attente peuvent être "ordonnées" et/ou "triées" et/ou "regroupées" et/ou "effacées". Les critères de traitement sont variables (pondérations, corrélations, scoring, etc.). 15 L'étape de mise en file (i.e. le composant de mise en file des entrées) peut placer les modifications perçues des entrées dans une file d'attente de manière à ne perdre aucune information. Dans un mode de réalisation la file d'attente (ou le composant système correspondant) n'est en effet 20 pas nécessairement de capacité limitée comme un buffer peut l'être; une file d'attente selon l'invention peut éventuellement être adaptée à la gestion d'une grande quantité de données. En fonction de sa politique, le composant de mise en file des entrées peut supprimer des éléments ou les fusionner, par exemple si une entrée change de valeurs sans que le 25 changement soit significatif. Dans un autre exemple, il permet aussi de les regrouper par heure d'arrivée. Activement sollicitée par l'étape de planification ou poussée par la gestion de la file d'attente, une valeur d'entrée est sélectionnée. 30 12 3028076 Par la suite la valeur d'entrée est "exécutée" (i.e. "l'expression ou la règle est évaluée"). En d'autres termes, selon une vue systémique, le composant d'évaluation reçoit un groupe d'entrées modifiées et par inférence par rapport à la base de règles calcule les sorties. 5 Par exemple, la valeur de l'entrée vitesse (« La vitesse est-elle élevée ? ») peut être évaluée: une valeur peut être déterminée en sortie. En considérant la règle ou commande floue «si la fièvre est forte, alors administrer de l'aspirine", une entrée sera une valeur de température (par 10 exemple "41°C"). Il peut être considéré qu'une fiè\re n'est pas forte en dessous de 38 °C, et qu'elle est forte au-dessus de40 °C selon la base de règles (i.e. graduellement de plus en plus forte entre 38°C et 40°C (linéairement, exponentiellement, ou selon des fonctions continues). Une valeur de sortie sera une expression «administrer de l'aspirine » ou une 15 valeur/quantification par exemple "X" milligrammes d'aspirine. L'évaluation proprement dite s'effectue par inférence. L'inférence est un mouvement de la pensée qui va des principes à la conclusion. Le terme désigne les actions de mise en relation d'un ensemble de propositions, 20 aboutissant à une démonstration de vérité, de fausseté ou de probabilité, sous la forme d'une proposition appelée conclusion. Selon l'invention, l'inférence peut être déductive ou inductive ou bien encore abductive. Dans un développement, le procédé comprend en outre une étape 25 consistant à diffuser une ou plusieurs valeurs de sortie 102. En termes de système, le composant de planification, en application de sa politique, peut sélectionner une valeur de sortie particulière. 13 3028076 Le composant de diffusion peut, également en fonction de sa politique, sur-sélectionner des valeurs avant de les communiquer (i.e. sélectionner des valeurs préalablement sélectionnées). 5 Par exemple, le composant de diffusion peut communiquer ou diffuser des valeurs de sortie à intervalle régulier dans le temps et/ou quand un événement particulier se produit et/ou si certaines conditions sont satisfaites, etc. La prise en compte de l'historique peut par exemple contribuer à la fusion ou à l'assimilation des valeurs d'entrée; la prise en 10 compte de certains seuils prédéfinis peut conduire le composant de diffusion à ne pas réitérer la diffusion d'un résultat associé à une entrée si une valeur très proche (e.g. dans les limites de seuils prédéfinis) a déjà été communiquée par le passé, à tout le moins au cours d'une fenêtre temporelle également prédéfinie etc. .... 15 En d'autres termes, l'étape de diffusion (respectivement le composant de diffusion) comprend une étape consistant à communiquer les valeurs des sorties à l'extérieur du système expert flou en fonction de sa politique. Il peut ainsi diffuser les valeurs des seules sorties ayant changées de 20 valeurs et/ou d'y joindre les informations d'interprétation (tout ou partie des les valeurs permettant de retracer l'inférence par exemple) et/ou de communiquer les valeurs des sorties ayant connues un changement significatif (supérieur à un seuil) et/ou les valeurs des sorties qui n'ont pas changé pas de valeur mais dont les informations d'interprétation sont 25 différentes. Le composant ou unité ou organe en charge de la "diffusion" ou "communication" ou "publication" proprement dite de cette valeur de sortie 102 peut être le composant 130 par exemple. Par "diffusion" ou 30 "communication" ou "publication" il est signifié une diffusion ou communication extérieure ou externe (les autres échanges ou passages 14 3028076 de message s'effectuent de manière interne au système 100. Le système 100 du point de vue de l'utilisateur ou d'un point de vue systémique apparaît comme une "boite noire", qui traite (selon une régulation ou des traitements internes propres) un certain nombre de données et publie 5 certaines valeurs en sortie. Les modalités de communications sont nombreuses: affichage visuel (écran LCD, flash lumineux, etc), transmission de données ou passage de messages (e.g. email, canal données, flux RSS), signal ou émission audio, signal vibratile (ou selon une combinaison de ces modalités de communication). 10 Dans un développement, l'étape consistant à évaluer une valeur d'entrée en attente sélectionnée comprend une étape consistant à planifier dans le temps et/ou dans l'espace les évaluations des valeurs d'entrées en attente. 15 Il est souligné qu'au moins une valeur d'entrée en attente sélectionnée en amont peut être évaluée. L'étape d'évaluation peut en effet comprendre des étapes consistant à allouer les tâches de calcul aux différents moyens de calcul (répartition physique et également temporelle). Le 20 terme "planifier" veut dire "organiser" (i.e. ordonnancement dans le temps et dans l'espace). La planification dans le temps et/ou l'espace consiste notamment et par exemple à ordonner ou organiser ou orchestrer les calculs (par exemple les "threads" ou selon toute autre sous-tâche de calcul correspondant à des niveaux de granularité différents) ainsi qu'à 25 les assigner à des unités de calculs, c'est-à-dire une allocation des tâches de calcul dans l'espace (de manière physique entre les différents processeurs ou coeurs de processeur, CPU multicore ou manycore). Dans un développement, une sélection de valeurs d'entrée (ayant été 30 sélectionnées) est évaluée à son tour. 15 3028076 L'évaluation ou exécution peut être sélective. Parmi les valeurs d'entrée sélectionnées dans la file d'attente, par exemple par le composant de planification, seule une fraction peut être 5 éventuellement évaluée in fine. En d'autres termes, une sélection de valeurs d'entrées préalablement sélectionnées peut être évaluée. Le procédé selon l'invention peut en effet ne pas calculer ou évaluer certaines valeurs d'entrée. De manière positive, seules certaines 10 expressions ou valeurs d'entrées sont évaluées. Cette sélection peut se faire en raison de différentes contraintes ou raisons (e.g. économie de calculs, vitesse, etc.). Selon un aspect de l'invention, le procédé est économe en calculs. 15 La manière de sélectionner les expressions ou valeurs qui seront seules évaluées peut se faire de différentes manières (e.g. critères de pertinence, seuils, etc.). 20 Le procédé peut n'évaluer une ou plusieurs valeurs d'entrée que lorsque cela est nécessaire. Dans un mode de réalisation, l'étape ou unité d'enfilage peut regrouper des entrées par exemple en fonction du contexte de modification (par 25 exemple, l'heure à laquelle les entrées ont changé) et l'étape de planification ou le planificateur peut récupérer un groupe d'entrées associé à ce même contexte. Dans une variante, le contexte peut être le lieu où les entrées ont changé. D'autres variantes utilisent des combinaisons de date et de lieu etc. 30 16 3028076 Dans un développement, le procédé comprend en outre une étape consistant à disjoindre le graphe correspondant à la base de règles 150 en plusieurs sous-graphes disjoints, une étape consistant à sélectionner au moins un sous-graphe comprenant un noeud correspondant à une 5 valeur d'entrée en attente sélectionnée et une étape consistant à évaluer ledit sous-graphe sélectionné. Afin de déterminer quelles sont les valeurs d'entrée dont l'évaluation est nécessaire, il est avantageux de représenter la dépendance entre tous les 10 éléments qui composent la règle ou l'expression. De la sorte des optimisations peuvent être conduites (suppressions des redondances, calculs restreints aux seuls calculs nécessaires, etc.). Deux méthodes sont décrites ci-après. 15 Dans un mode de réalisation particulier, une représentation des règles sous forme de graphe permet d'isoler les noeuds (correspondant aux différentes règles ou expressions composant ces règles) dont il est avantageux de procéder à la réévaluation. 20 La base de règles peut être représentée sous la forme d'un graphe plutôt que sous la forme d'une forêt (un ensemble d'arbres) car ce faisant il est possible de s'assurer de l'unicité des noeuds. Selon cet aspect, une partie d'une règle (une proposition, une expression, une conclusion, une entrée, 25 une sortie...) ne peut être représentée que par un seul noeud. En d'autres termes, il existe une bijection des noeuds vers les parties de règles et les règles elles-mêmes. Ainsi, si une même partie de règle apparaît plusieurs fois dans différentes règles, elle peut n'être évaluée qu'une seule fois. 30 Lorsqu'un certain sous-ensemble des entrées change à un temps t, seuls les noeuds qui sont affectés peuvent en effet être réévalués. 17 3028076 Il est avantageux d'identifier différents sous-graphes disjoints du graphe (lequel représente toute la base de règles). Concrètement, le graphe G correspondant à la base de toutes les règles sera disjoint en plusieurs 5 graphes Gi connexes pour lesquels il n'existe pas d'arête commune entre ces différents Gi. Les graphes disjoints n'ont ainsi aucun noeud en commun, donc aucune partie en commun donc aucune entrée ou sortie en commun. Ainsi, il devient possible d'évaluer parallèlement les différents sous graphes disjoints du graphe global. 10 Le graphe est orienté (par exemple, le noeud A orienté vers le noeud B). L'évaluation d'un noeud donné peut avoir une conséquence sur l'évaluation d'un noeud qui en dépend. Pour procéder à l'évaluation des noeuds du graphe, ledit graphe peut être parcouru. Au chargement de la 15 base de règles, lors de la construction du graphe, chaque noeud est associé à une certaine "priorité" d'évaluation relative à sa profondeur dans le graphe (dans un mode de réalisation, les valeurs d'entrée peuvent être associées avec une priorité égale à zéro ; d'autres noeuds peuvent avoir une même priorité mais généralement les différents noeuds 20 sont associés à des priorités différentes). Une fois les différentes priorités (ou profondeurs) déterminées, certains noeuds - déterminés par les chemins les reliant aux noeuds représentant une entrée du système - sont recalculés. Les noeuds sont évalués tour à tour uniquement si au moins un de leurs prédécesseurs a changé de valeur. Si un noeud ne 25 change pas de valeur, l'évaluation des chemins partant de lui-même ne s'effectue pas. Le graphe global associé ou représentant la base de règles est d'abord disjoint en plusieurs sous-graphes disjoints, ce qui permet des traitements 30 ou des analyses en parallèle (les sous-graphes sont "indépendants"). Le procédé sélectionne ensuite un ou plusieurs sous-graphes. Un critère de 18 3028076 sélection comprend le fait de détecter un ou plusieurs noeuds représentant par exemple les seules valeurs d'entrée ayant changé suffisamment i.e. qui sont été sélectionnées par le planificateur parmi la file d'attente contenant les valeurs d'entrée. Enfin, le sous-graphe est 5 évalué. Disjoindre le graphe en plusieurs sous-graphes permet par suite de paralléliser les calculs et d'allouer ces calculs à des coeurs et/ou threads indépendants. Avantageusement, cette parallélisation amoindrit les 10 possibilités d'erreurs dans les calculs, améliore la vitesse de traitement, optimise l'utilisation des ressources ou moyens de calcul, etc. Dans un développement, l'étape consistant à évaluer un sous-graphe comprend une étape consistant à parcourir ledit sous-graphe, une étape 15 consistant à associer récursivement une priorité à chaque noeud du sous- graphe et une étape consistant à évaluer les noeuds par priorité croissante. La priorité est de manière plus générale un coefficient ou un paramètre ou 20 une valeur. D'autres modes de réalisation de l'invention font intervenir non pas une valeur de priorité mais une "profondeur". Il existe diverses manières d'annoter le graphe. Il est possible dans un mode de réalisation d'associer les entrées à une valeur égale à zéro et de procéder par incrémentation à mesure que le graphe est parcouru (les noeuds associés 25 aux valeurs de priorité les plus faibles étant alors traitées en premier lieu).D'autres modes de réalisation de l'invention peuvent utiliser d'autres techniques de pondération ou de scoring. Dans un développement, le procédé comprend en outre une étape 30 consistant à comparer les chaines de caractères composant les expressions composant les règles de la base de règles, une étape 19 3028076 consistant à supprimer les redondances entre lesdites expressions de manière à obtenir des expressions uniques et une étape consistant à évaluer lesdites expressions uniques. 5 Alternativement à la représentation sous forme de graphe, i.e. sans recourir à un mode de représentation et/ou d'analyse des données sous forme de graphe (i.e. représentation seule, analyse seule, ou représentation et analyse sous forme de graphe), il est possible de procéder à des comparaisons de chaînes de caractères. 10 Une expression peut être présente dans plusieurs règles. Par exemple l'expression "la température est haute" peut être présente dans une première règle "si la température est haute alors ouvrir la fenêtre" et une seconde règle "si la température est haute alors administrer de l'aspirine". 15 II est possible de représenter de manière unique des expressions apparaissant plusieurs fois dans la base de règles. Une façon de faire comprend des opérations de comparaison de chaines de caractères composant les expressions ou règles. Les redondances peuvent être partiellement ou totalement supprimées. 20 Dans un développement, une partie d'une règle de la base de règles 150 est associée à une paramètre/valeur d'expiration dans le temps. Dans certains modes de réalisation, aucune règle (ou a fortiori partie de 25 règle) n'expire, i.e. la validité de la règle est persistante dans le temps. Dans d'autres modes de réalisation, une ou plusieurs règles (ou parties de règles) peuvent expirer dans le temps (selon divers paramétrages) Selon un aspect de l'invention, une partie ou portion de règle peut expirer 30 dans le temps ("se périmer", devenir "obsolète" ou "caduque" ou "non actionnable" ou "sans effet"). Une partie de règle peut être une 20 3028076 proposition ou une expression par exemple. Les parties de règles expirables sont donc des objets qui ont une durée de vie limitée dans le temps (ou dont la valeur calculée a une durée limitée dans le temps). Lorsque cette durée est dépassée, i.e. expirée ou périmée, le 5 planificateur (entre autres unités du système) peut prendre la décision de ne pas évaluer la partie de règle en question. En pratique, le planificateur peut vérifier si l'expression expirée est utilisée dans un des calculs tels que planifiés dans le temps et/ou l'espace. Le cas échéant, l'expression est évaluée; à défaut, l'expression est laissée inchangée avec sa valeur 10 expirée. Dans certains cas, l'expression expirée est supprimée. Par exemple si une règle est de la forme « si demain il fera beau et qu'aujourd'hui il pleut alors retarder la lessive », l'expression « demain il fera beau » peut changer de valeur pour deux raisons: soit les prévisions 15 météorologiques ont changé (dans ce cas il ne s'agit pas véritablement d'une expiration mais d'un simple changement de valeur en fonction des entrées du système) soit la valeur change (par exemple du fait du passage de la journée de mercredi minuit à jeudi). Même si la valeur de la prévision météorologique pour mercredi demeure inchangée, l'expression 20 va expirer (en l'espèce, elle expire toutes les 24h). De manière générale chaque expression peut expirer selon des paramètres temporels différents. Dans certains modes de réalisation, des paramètres temporels avancés sont utilisés (intervalles de temps mais 25 également et par exemple selon les dérivées de temps, i.e. accélération de tendances etc). Des expressions ou parties de règles peuvent expirer selon des échelles de temps très diverses (e.g. toutes les secondes ou toutes les millisecondes pour des systèmes réactifs). 30 L'expiration de la validité des parties de règles peut être modulée de manière plus sophistiquée, par exemple en fonction de paramètres, de 21 3028076 tests, de circonstances ou de conditions diverses. Par exemple, des paramètres d'espace peuvent être pris en compte pour déterminer l'expiration ou la non-expiration d'une règle (e.g. conditions de géo localisation ou de "geofencing", etc). 5 Dans un développement, deux valeurs d'entrées sensiblement concomitantes sont assimilées à une seule et même entrée. Dans modes de réalisation, il est possible de considérer que les 10 modifications de deux entrées différentes intervenant à quelques millisecondes d'intervalles sont en fait concomitantes ("sensiblement" concomitantes) et par suite les fusionner ou les assimiler. L'emploi optionnel de seuils prédéfinis permet ladite assimilation. 15 Dans un développement, au moins une règle est exprimée en langage naturel. L'avantage associé au fait qu'une règle s'exprime en langage naturel, par opposition à un langage formel, réside dans l'expressivité de la base de 20 règles ainsi constituée. En outre, dans un contexte d'édition de ces règles, cette forme est avantageuse car compréhensible pour l'utilisateur. Dans un développement, l'évaluation par inférence s'effectue selon la logique d'ordre 0 ou la logique d'ordre 1 ou selon la logique floue. 25 Différentes familles d'algorithmes existent pour la mise en oeuvre de l'évaluation par inférence dans le procédé selon l'invention. L'une ou l'autre des logiques citées peut être utilisée selon les avantages associés à ces différentes logiques et aux contextes d'utilisation. 30 22 3028076 Il est divulgué un produit programme d'ordinateur, ledit programme d'ordinateur comprenant des instructions de code permettant d'effectuer une ou plusieurs des étapes du procédé, lorsque ledit programme est exécuté sur un ordinateur. 5 Il est divulgué un système comprenant des moyens pour la mise en oeuvre d'une ou plusieurs des étapes du procédé. Dans un développement, le système comprend des moyens de réception 10 d'une valeur d'entrée 101 à évaluer; des moyens d'évaluation par inférence au moyen de la base de règles 150 d'une valeur de sortie 102 correspondant à la valeur d'entrée 101; et est caractérisé en ce que le système comprend des moyens de stockage pour enfiler la valeur d'entrée 101; des moyens de calcul pour sélectionner une valeur d'entrée 15 enfilée et pour planifier dans le temps et/ou dans l'espace les évaluations d'une ou de plusieurs valeurs d'entrées en attente; des moyens de calcul pour évaluer la valeur d'entrée en attente sélectionnée enfilée en une valeur de sortie 102; des moyens d'entrée/sortie pour diffuser une ou de plusieurs valeurs de sortie 102; 20 Les moyens de stockage désignent par exemple des mémoires volatiles ou persistantes (e.g. mémoire flash, disque dur, DDRAM, SRAM, etc). Les moyens de calcul sont des processeurs ou des coeurs de processeurs. Les moyens d'entrée/sortie (ou "E/S" ou "I/O" pour 25 "Input/output" en anglais) sont des moyens de communication de différents types (radio, sans-fil, câblé e.g. Ethernet; utilisant une variété de protocoles TCP/IP ou autres). Dans un développement, le système comprend un composant 30 d'entrée/sortie pour recevoir une ou plusieurs valeurs d'entrée; un composant d'enfilage adapté pour effectuer une ou plusieurs des étapes 23 3028076 parmi celles consistant à stocker, regrouper, fusionner et supprimer des valeurs d'entrées; un composant de planification adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à sélectionner, supprimer 7 regrouper, fusionner, allouer des valeurs d'entrées enfilées; 5 un composant d'évaluation adapté pour évaluer une ou plusieurs valeurs d'entrée enfilées et manipulées par le composant de planification par inférence au moyen de la base de règles; un composant de diffusion adapté pour sélectionner et communiquer une ou plusieurs valeurs d'entrées. 10 Une politique ("poney' en anglais) associée à un composant ou à une unité correspond à un ensemble de règles "internes" au composant ou à l'unité. Une politique peut être statique, i.e. prédéfinie et constante au cours du temps. Une politique peut aussi être dynamique, i.e. variable au 15 cours du temps. Parlant d'un système composé d'un ensemble de composants associé chacun avec de telles "politiques", une politique « générale » peut se dégager, au sens d'une émergence ou d'une constatation, résultant de la combinaison des différentes politiques mis en oeuvre de manière effective localement pour chaque composant. En 20 d'autres termes, l'ensemble des politiques des différents composants peuvent paramétrer le comportement global du système global. En particulier, différents fichiers de configuration des politiques mises en oeuvre dans les différents composants peuvent être mis à disposition (e.g. définis par l'utilisateur, l'opérateur du service de surveillance, via le 25 réseau etc). Les différentes politiques sont généralement exprimées par des règles liant des attributs descriptifs du problème ou de l'aspect du système à surveiller (e.g. en matière de temps de rafraichissement des entrées, 30 fréquence de rafraichissement des sorties...) ou des attributs descriptifs de la plateforme sur laquelle le système s'exécute (e.g. nombre et 24 3028076 occupation des processeurs, quantité de mémoire disponible et utilisée...) et des seuils. Par exemple pour le composant de mise en file, une règle peut-être que si une entrée change de valeur plusieurs fois en moins d'une seconde, seule la dernière valeur sera sélectionnée. Pour le 5 composant de planification, si la plateforme dispose de plusieurs coeurs disponibles, l'exécution pourra être parallélisée. Pour le composant d'évaluation, si un opérateur « AVANT» est utilisé par exemple, une « version » de l'opérateur - spécifique au problème ou à l'aspect du système surveillé -, par exemple une variante de l'implémentation de 10 l'opérateur pourra être mise en oeuvre. Pour le composant de diffusion, une politique pourra consister à diffuser les modifications toutes les secondes par exemple. En particulier, concernant l'aspect temporel, une politique de composant 15 peut considérer que des modifications relatives à deux entrées différentes intervenant à quelques millisecondes d'intervalles sont en fait concomitantes ("sensiblement" concomitantes) et seront donc assimilées à une seule et même entrée. Une politique peut configurer ou prédéfinir des assimilations ou fusions ou agrégations de données. Une politique de 20 fusion ou agrégation ou assimilation de données peut avantageusement être utilisée lorsqu'on sait que les valeurs des entrées sont apportées par un moyen de communication avec une certaine latence (réseau...). Une politique est donc un moyen de configurer ou de paramétrer un 25 composant par rapport à une application donnée. Le composant de planification peut « sélectionner » et « allouer » des valeurs d'entrées préalablement enfilées : en d'autres termes il peut « propager » des valeurs d'entrée particulières (il peut notamment 30 sélectionner ces valeurs de par la connaissance du graphe de 25 3028076 dépendance). Le composant de diffusion peut effectuer la communication à un temps ultérieur et donc « différer » la communication ou la diffusion. Une politique de composant comprend un ensemble de règles en relation 5 avec des moyens d'exécution tangibles pour exécuter ces règles. La politique associée à un composant permet de paramétrer et de modifier le comportement ("émergent") du composant auquel il s'applique. Une politique comprend généralement un ensemble d'opérations choisies 10 parmi les opérations consistant à filtrer, ordonner, trier, segmenter, diviser, fusionner, supprimer, ignorer, ajouter, substituer, concaténer, compresser, stocker une ou plusieurs valeurs d'entrée. Une politique peut être paramétrée (e.g. préalablement) ou paramétrable 15 (e.g. en fonction de variables par exemple...). En d'autres termes, une politique peut être configurée ou configurable. Dans un mode de réalisation, une politique peut être "universelle", au sens où les différentes politiques associées aux différents composants 20 peuvent être interchangeables. Dans un autre mode de réalisation, les politiques peuvent précisément ne pas être interchangeables entre les différents composants. Par exemple, concernant l'opération consistant à filtrer, l'unité d'enfilage n'appliquera pas le même type de filtrage que l'unité de diffusion ou bien encore que le planificateur. 25 Certains modes de réalisation particuliers associent préférentiellement certains types opérations à certains composants. Dans ces modes de réalisation particuliers, le composant d'enfilage est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à stocker, regrouper, 30 fusionner et supprimer des valeurs d'entrées ou des données; le composant de planification est adapté pour effectuer une ou plusieurs des 26 3028076 étapes parmi celles consistant à supprimer, annuler, sauter, fusionner, allouer (vers des ressources de calcul par exemple), associer ou annoter (e.g. par des valeurs d'état) des valeurs d'entrées; le composant de diffusion est adapté pour effectuer une ou plusieurs des étapes parmi 5 celles consistant à sélectionner (e.g. selon des critères ou des seuils prédéfinis), regrouper, différer, choisir des instants dans le temps, annuler des valeurs d'entrées ou des données; le composant d'évaluation est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à restreindre ou étendre les opérateurs évaluables (en choisissant des 10 variantes d'implémentation prédéfinies par exemple, i.e. changer la sémantique des operateurs) La figure 1 schématise l'architecture générale d'un exemple de procédé selon l'invention. 15 L'architecture d'un système expert flou 100 est composée d'une base de règles 150, d'un ensemble d'entrées 101 (ou "I" pour "input") et d'un ensemble de sorties 102 (ou "0" pour "Output"). Lorsque les entrées 101 changent, les sorties 102 sont calculées en fonction de la base de règles 20 150. Cette architecture est celle d'un système expert flou "classique". Selon l'invention, il est ajouté trois composants spécifiques à cette architecture. 25 Le composant 110 est un composant de mise en file ("enfilage" ou "Q" pour "queueing") des entrées 101. Dans le cadre d'un système dont les entrées changent de valeur au cours du temps, e.g. progressivement ou "au fil de l'eau", ce composant permet de capturer ces changements. Dans certains modes de réalisation, ce composant peut appliquer 30 différentes politiques de mise en file. Par exemple, certaines règles - ou politiques ("poney' en anglais) - de filtrage peuvent tenir compte des 27 3028076 capacités de la machine (e.g. de la machine-hôte ou de la machine monitorée) et/ou de la nature même des changements (par exemple si la valeur d'une sortie n'a changé de moins de 1%, il n'est pas utile de considérer sa nouvelle valeur), ou bien encore grouper les modifications 5 (non exhaustif). Le composant 130 est un composant de diffusion des sorties. Les sorties 102 changent au cours du temps. Ce composant selon l'invention permet avantageusement de "diffuser" (ou "notifier" ou "communiquer" ou 10 "transmettre") les nouvelles valeurs en sortie 102. Dans certains modes de réalisation, des explications sur le changement des valeurs des sorties peuvent être également communiquées. Le composant 130 à l'instar du composant 110 peut appliquer différentes politiques prédéfinies. Par exemple, le composant 110 peut informer des changements de valeur 15 des sorties 102 à un intervalle temporel prédéfini (par exemple toutes les N secondes) et/ou informer dès qu'une valeur d'activation a changé, selon des seuils ou des plages de seuils (non exhaustif). Le composant 120 est un composant de planification des calculs. Ce 20 composant 120 est informé ou notifier à l'étape 112 de l'arrivée d'un ou de plusieurs changements par le composant unité d'enfilage 110. Le composant 120 peut alors déclencher ou actionner ou solliciter ou commander le composant le composant 130 de diffusion des sorties. En fonction de l'état courant de la machine ou de l'ensemble des machines, 25 le composant 120 est capable d'affecter les calculs à un processeur ou à un coeur sur une machine en particulier, de prioriser un calcul ou une sous-tâche de calcul (e.g. thread), etc... Comme le montre la figure 1, à chaque instant t, l'ensemble des entrées 30 101 ayant changées sont mises en file par l'unité d'enfilage 110 (éventuellement traitée selon sa politique). Pendant l'évaluation 140, si de 28 3028076 nouvelles modifications des valeurs d'entrée 101 arrivent, ces dernières ne seront pas perdues mais mise à la suite de la file au sein du composant 110. L'unité d'enfilage notifie ensuite à l'étape 112 l'unité de planification 120 que de nouvelles entrées sont disponibles. Cette unité 5 de planification 120 applique alors sa politique et fait appel à l'unité d'évaluation 140 a l'étape 122. L'unité d'évaluation 140, à la fin du calcul, informe ou notifie en retour (étape 123) l'unité de planification 120 que l'évaluation est terminée. Le composant 120 informe a l'étape 121 l'unité de diffusion 130 qu'elle peut diffuser les modifications des sorties (s'il y a 10 lieu). Le composant 120 exécute également sa propre politique, le cas échéant. La figure 2 représente un exemple de règle sous forme de graphe. 15 Selon un aspect de l'invention, la base de règles du système expert peut être optimisée, en particulier la représentation de cette base de règles. En outre, selon un autre aspect de l'invention, l'unité d'évaluation peut également être optimisée. En particulier, l'évaluation 140 peut être 20 sélective, c'est-à-dire procéder à l'évaluation des seules expressions impactées par le changement constaté quant à certaines entrées 101. Avantageusement, le procédé selon l'invention vise à optimiser les calculs ou opérations arithmétiques aux seules opérations ou calculs 25 nécessaires. En particulier, le procédé évite l'exécution d'une portion de code dont les résultats ne sont pas (réellement ou strictement) nécessaires. (e.g. il est inutile de calculer un résultat qui n'est pas utilisé). Le procédé selon l'invention est avantageusement économe en calcul, améliorant les temps de réponse associés. 30 29 3028076 Concrètement, le procédé selon l'invention pour calculer une expression ou règle du système expert uniquement lorsque cela est nécessaire, il est avantageux de représenter la dépendance entre tous les éléments qui composent la règle ou l'expression. De la sorte des optimisations peuvent 5 être conduites (suppressions des redondances, calculs restreints aux seuls calculs nécessaires, etc). Une règle - au sens de l'invention - est constituée de plusieurs éléments: des propositions, des expressions (unaires, binaires, ...) et des 10 conclusions. Les propositions peuvent comprendre des entrées (par exemple des variables linguistiques dans le cadre de la logique floue). Par exemple, sur la figure 2, dans la règle ou expression 230 «si la température est chaude et que l'air n'est pas humide alors le risque est 15 nul», l'expression 215 B, indique que l'évaluation de B dépend de l'évaluation de A. Autrement dit, lorsque A change de valeur, la valeur de B doit être recalculée. Ainsi, lorsqu'un certain sous-ensemble des entrées change à un temps t, seuls les noeuds affectés sont réévalués. 5 Dans la plupart des systèmes existants, une règle est représentée par un arbre et donc une base de règles correspond à une forêt d'arbres. Dans le cadre de l'invention, une arborescence ne suffit pas car il est possible que des règles partagent des entités (par exemple une même 10 proposition). La représentation en graphe permet avantageusement d'obtenir l'unicité de la représentation de chaque expression ou entité. Cette unicité évite la redondance des calculs. Au moyen d'une représentation par graphe, il suffit de vérifier dans l'ensemble des noeuds du graphe si aucun d'eux n'est porteur de la même information. 15 Cette représentation de la base de règles sous forme de graphe combinée avec des règles exprimées en langage naturel est particulièrement avantageuse pour la manipulation d'un système expert flou. En effet, pour une même variable physique, en fonction de la 20 fonction d'appartenance, la même valeur floue peut être associée à différentes valeurs après "fuzzyfication", i.e. application des techniques de logique floue. Par exemple, pour si la variable considérée est la température, si la fonction d'appartenance est un trapèze dont la petite base se trouve entre les valeurs 15° et 25° et à 1sur les ordonnées, alors 25 toutes les valeurs de température entre 15° et 25°ont pour valeur 1 après fuzzyfication. Dans ce cas-là, il n'y aura aucun calcul au-delà de la fuzzyfication de la température. Cet aspect rend la mise en oeuvre du procédé pratique les capteurs fournissent des valeurs qui oscillent légèrement ou de manière limitée. Selon cette implémentation, si la valeur 30 d'un noeud ne change pas, ses noeuds voisins ne sont pas réévalués, économisant des calculs. 31 302 80 76 La figure 3 illustre un exemple de graphe avec des noeuds présentant des priorités. 5 Dans certains modes de réalisation, la représentation de la base de règles par un graphe peut ne pas suffire. Comme le montre la figure 2, si la température et l'humidité changent au même temps t, les noeuds parents vont être évalués jusqu'à arriver à l'évaluation de l'expression 220 «la température est chaude et l'air n'est pas humide». Cependant, le 10 chemin entre l'entrée 202 "humidité" et cette expression 220 est plus long que celui partant de l'entrée 201 "température". L'expression 220 «la température est chaude et l'air n'est pas humide» va être évaluée deux fois: une première fois comme dépendante de l'expression 215 «la température est chaude» et une seconde fois comme dépendante de 15 l'expression 213 «l'air n'est pas humide». Pour éviter ce type d'inconvénients, il est avantageux d'utiliser un graphe orienté, i.e. de donner un ordre aux noeuds. Différents modes de réalisation sont possibles. Selon un premier mode de réalisation, une file 20 à priorité est créée qui traite en premier les noeuds dont la priorité est la plus faible et qui n'accepte pas qu'un même objet soit présent deux fois dans la file. Pour donner une priorité aux noeuds, il est possible de donner aux entrées une priorité nulle i.e. égale à 0 (ces entrées doivent être évaluées en premier dans tous les cas), puis donner à un noeud d'un 25 autre type le maximum des priorités de ses antécédents incrémenté de un. Avec une file à priorité selon un développement de l'invention, l'expression 201 «capteur de température» et l'expression 202 «capteur 30 d'humidité» sont placées dans la file. Dans l'exemple fourni, les deux expressions étant à égalité de priorité, l'expression 201 «capteur de 32 3028076 température» sera par exemple évaluée et l'expression 215 REVENDICATIONS1. Procédé mis en oeuvre sur ordinateur de gestion d'une base de règles 150 le procédé comprenant les étapes consistant à: - recevoir une valeur d'entrée 101 à évaluer; - enfiler la valeur d'entrée dans une file d'attente 110; - sélectionner au sein de la file d'attente 110 une valeur d'entrée en attente; - déterminer une valeur de sortie 102 en évaluant par inférence au moyen de la base de règles 150 la valeur d'entrée en attente sélectionnée. 2. Procédé selon la revendication 1, comprenant en outre une étape consistant à diffuser une ou plusieurs valeurs de sortie 102. 3. Procédé selon la revendication 1, l'étape consistant à évaluer une valeur d'entrée en attente sélectionnée comprenant une étape consistant à planifier dans le temps et/ou dans l'espace les évaluations des valeurs d'entrées en attente. 4. Procédé selon l'une quelconque de revendications précédentes, une sélection de valeurs d'entrée ayant été sélectionnées étant évaluée. 5. Procédé selon l'une quelconque des revendications précédentes, le procédé comprenant en outre une étape consistant à disjoindre le graphe correspondant à la base de règles 150 en plusieurs sous-graphes disjoints, une étape consistant à sélectionner au moins un sous-graphe comprenant un noeud correspondant à une valeur d'entrée en attente sélectionnée et une étape consistant à évaluer ledit sous-graphe sélectionné. 6. Procédé selon la revendication 5, l'étape consistant à évaluer un sous-graphe comprenant une étape consistant à parcourir ledit sous-graphe, 40 3028076 une étape consistant à associer récursivement une priorité à chaque noeud du sous-graphe et une étape consistant à évaluer les noeuds par priorité croissante. 5 7. Procédé selon l'une quelconque des revendications précédentes, le procédé comprenant en outre une étape consistant à comparer les chaines de caractères composant les expressions composant les règles de la base de règles, une étape consistant à supprimer les redondances entre lesdites expressions de manière à obtenir des expressions uniques 10 et une étape consistant à évaluer lesdites expressions uniques. 8. Procédé selon l'une quelconque des revendications précédentes, une partie d'une règle de la base de règles 150 étant associée à une paramètre/valeur d'expiration dans le temps. 15 9. Procédé selon l'une quelconque des revendications précédentes, deux valeurs d'entrées sensiblement concomitantes étant assimilées à une seule et même valeur d'entrée. 20 10. Procédé selon l'une quelconque des revendications précédentes, au moins une règle étant exprimée en langage naturel. 11. Procédé selon l'une quelconque des revendications précédentes, l'évaluation par inférence s'effectuant selon la logique d'ordre 0, la logique 25 d'ordre 1 ou selon la logique floue. 12. Un produit programme d'ordinateur, ledit programme d'ordinateur comprenant des instructions de code permettant d'effectuer les étapes du procédé selon l'une quelconque des revendications 1 à 11, lorsque ledit 30 programme est exécuté sur un ordinateur. 41 3028076 13. Système comprenant des moyens pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 11. 14. Système selon la revendication 13, comprenant 5 - des moyens de réception d'une valeur d'entrée 101 à évaluer; - des moyens d'évaluation par inférence au moyen de la base de règles 150 d'une valeur de sortie 102 correspondant à la valeur d'entrée 101; caractérisé en ce que le système comprend: - des moyens de stockage pour enfiler la valeur d'entrée 101; 10 - des moyens de calcul pour sélectionner une valeur d'entrée enfilée et pour planifier dans le temps et/ou dans l'espace les évaluations d'une ou de plusieurs valeurs d'entrées en attente; - des moyens de calcul pour évaluer la valeur d'entrée en attente sélectionnée enfilée en une valeur de sortie 102; 15 - des moyens d'entrée/sortie pour diffuser une ou de plusieurs valeurs de sortie 102; 15. Système selon la revendication 13 ou 14 comprenant: - un composant d'entrée/sortie pour recevoir une ou plusieurs valeurs 20 d'entrée; - un composant d'enfilage adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à stocker, regrouper, fusionner et supprimer des valeurs d'entrées; - un composant de planification adapté pour effectuer une ou plusieurs 25 des étapes parmi celles consistant à sélectionner, supprimer7 regrouper, fusionner, allouer des valeurs d'entrées enfilées; - un composant d'évaluation adapté pour évaluer une ou plusieurs valeurs d'entrée enfilées et manipulées par le composant de planification par inférence au moyen de la base de règles; 30 - un composant de diffusion adapté pour sélectionner et communiquer une ou plusieurs valeurs d'entrées.