Brevet FR2984541A1 — publié le 20130621

La présente invention concerne le domaine des procédés de gestion de la mise en veille d'appareils électroniques. Les appareils électroniques sont constitués d'un système alimenté électriquement. Ils disposent généralement d'un interrupteur permettant de gérer la mise sous tension de l'appareil. Lorsque cette mise sous tension du système de l'appareil intervient, une initialisation des différents composants électroniques constituant le système se produit. Cette initialisation prend un certain temps. Ce temps est d'autant plus grand que le système est complexe et fait intervenir des composants complexes et programmables. Il est aujourd'hui courant d'avoir des appareils pouvant mettre plusieurs dizaines de secondes à démarrer. Pour permettre une mise à disposition plus rapide du service rendu par l'appareil, on a développé un système de mise en veille du système. Les premiers appareils disposant d'un mode de mise en veille se contentaient de couper l'alimentation des écrans d'affichage et des éventuels voyants de l'appareil. Le système en lui-même restant alimenté et fonctionnel. L'appareil est alors visuellement éteint pour l'utilisateur tout en restant alimenté. Dans cet état de veille, une action de l'utilisateur peut être prise en compte rapidement par l'appareil sans nécessiter un redémarrage du système. Toutefois, seuls les affichages et les voyants de l'appareil étant éteints, la consommation électrique de l'appareil en veille se révèle généralement très proche de la consommation de l'appareil en marche. Pour permettre un mode de mise en veille de l'appareil qui soit sobre en énergie consommée, on a alors développé une solution comportant en outre du système constituant l'appareil, un module de gestion de la veille. Ce module de gestion de la veille est typiquement constitué d'un micro-contrôleur consommant très peu d'énergie et, par exemple, d'un récepteur de commandes infrarouges. En lieu et place du récepteur infrarouge, il peut s'agir d'un clavier d'une ou plusieurs touches dédiées au réveil de l'appareil ou autres, selon ce qui est le plus adapté à l'utilisation de l'appareil. Il est alimenté indépendamment du système de l'appareil. La mise en veille de l'appareil consiste alors à couper l'alimentation du système et à ne garder alimenté que le module de gestion de veille. Le module est alors en charge de réalimenter le système dès lors qu'il détecte une activité sur le récepteur infrarouge signifiant qu'un utilisateur tente, via une télécommande ou les touches dédiées, d'utiliser l'appareil. Ce système basé sur un module de gestion de la veille couplé au système permet de réduire de manière importante la consommation de l'appareil par rapport à la première solution. Toutefois, si le système nécessite un temps de démarrage important on retrouve l'inconvénient du long délai de mise à disposition du service rendu par l' appareil. Certains appareils cherchent à pallier ces inconvénients en proposant deux modes de veille. Un premier mode de veille, dit mode de veille partiel, consiste à éteindre les affichages et les voyants en gardant le système fonctionnel. Ce mode permet une sortie rapide de veille, mais consomme une énergie proche de celle nécessaire lors de l'activité de l'appareil. Un second mode de veille, appelé mode de veille profonde consiste à couper le système et à ne garder actif qu'un module de gestion de veille chargé de redémarrer le système lorsque l'utilisateur souhaite l'utiliser. L'enjeu de ces systèmes est de gérer les changements d'état entre les modes de veille de façon à minimiser à la fois la consommation électrique de l'appareil et également le nombre d'occurrences où l'utilisateur voulant utiliser son appareil doit le réveiller depuis le mode de veille profonde. Pour ce faire, certains appareils proposent une programmation manuelle de périodes de la journée où l'appareil doit être mis en veille partielle pour être prêt à être utilisé. En dehors de ces plages horaires et si l'appareil n'est pas utilisé, il passe en veille profonde. L'invention vise à améliorer les solutions précédentes par un procédé de gestion des modes de veille d'un appareil permettant un changement d'état depuis un mode de veille profonde vers un mode de veille partielle à un moment calculé dynamiquement en fonction des moments d'utilisation passés de l'appareil par l'utilisateur. L'invention concerne un procédé de gestion de la veille d'un appareil électronique, qui comporte une étape d'analyse des moments des actions de l'utilisateur ; une étape de planification qui, l'appareil disposant d'un mode de veille profonde où l'appareil consomme très peu d'énergie, mais a un temps de réveil long et un mode de veille partielle où l'appareil consomme plus d'énergie, mais a un temps de réveil court, consiste à planifier dynamiquement à partir des résultats de l'analyse des moments où ledit appareil n'étant pas utilisé, il doit être ramené en état de veille partielle en anticipation d'une action de l'utilisateur. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse fournissant une liste d'intervalles de temps pendant lesquels ces actions utilisateurs ont une probabilité importante de se produire, il comporte en outre une étape de prétraitement sur ces intervalles pour simplifier cette liste. Selon un mode particulier de réalisation de l'invention, l'étape de prétraitement comporte une étape de fusion des intervalles adjacents dont la distance est inférieure à un seuil donné et une étape de suppression des intervalles négligeables. Selon un mode particulier de réalisation de l'invention, il comporte en outre une étape de post-traitement de la planification en fonction de critères extérieurs. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse est basée sur des histogrammes composés par une découpe de la période en une liste d'intervalles fixés associés à un compteur des actions utilisateurs qui interviennent dans cet intervalle. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse est basée sur le procédé des k-means et comporte une étape de conservation d'une liste des instants où une action de l'utilisateur s'est produite qui constitue l'ensemble des échantillons ; une étape d'application du procédé des k-means pour en déduire un nombre fixé à l'avance d'instants moyens ; une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après et une étape de génération de la liste des intervalles, éventuellement annotés par le nombre d'échantillons associés à chaque intervalle. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse est basée sur le procédé Neural Gas et comporte une étape d'initialisation d'une liste de noeuds, chaque noeud étant associé à un instant dans la journée ; à chaque action de l'utilisateur une étape de tri de la liste des noeuds par ordre croissant de leur distance avec l'échantillon courant et une étape de déplacement de chaque noeud vers l'échantillon courant en fonction d'un facteur dépendant de leur ordre dans la liste ; une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après et une étape de génération de la liste des intervalles, éventuellement annotés par le nombre de fois où le noeud a été le plus proche de l'action de l'utilisateur. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse est basée sur le procédé Growing Neural Gas et comporte une étape d'initialisation d'une liste de noeuds, chaque noeud étant associé à un instant dans la journée, les noeuds étant connectés deux à deux par des arêtes, chaque noeud étant connecté à au moins un autre noeud ; à chaque action de l'utilisateur : une étape de tri de la liste des noeuds par ordre croissant de leur distance avec l'échantillon courant ; une étape d'application de règles permettant l'ajout et la suppression de noeuds et une étape de déplacement des noeuds, seuls le noeud le plus proche de l'échantillon courant et ceux qui lui sont directement connectés sont déplacés ; une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après et une étape de génération de la liste des intervalles, éventuellement annotés par le nombre de fois où le noeud a été le plus proche de l'action de l'utilisateur. Selon un mode particulier de réalisation de l'invention, l'étape d'analyse est basée sur un procédé qui comporte une première étape où l'on initialise une liste des noeuds avec une liste vide ; pour chaque nouvel échantillon x(t) : une étape de tri de la liste des noeuds par ordre croissant de distance au nouvel échantillon ; une étape où l'on teste alors si la liste est vide ou si la distance entre l'échantillon courant et le premier élément de la liste est supérieure à une distance D donnée en paramètre ; si c'est le cas, une étape de création et d'insertion d'un nouveau noeud initialisé à une position temporelle 10(t) = x(t) et son âge est initialisé à ao(t) = 0 ; sinon, une étape d'activation du premier noeud de la liste qui consiste à réinitialiser l'âge du noeud à 0 ; une étape de mise à jour des positions de tous les noeuds en utilisant les formules suivantes : N(t) étant le nombre de noeuds à l'instant t; À.(t) étant défini par l'équation suivante 1 si 1\1(t) = 1 À(t) = N(0_1 sinon ; in(E0)-In(si) E0 et E1 étant des taux d'adaptation, tels que 0 Selon un mode particulier de réalisation de l'invention, il utilise une distance temporelle définie par d' (x, y) = min(ly - xi, L - ly - xi) ; L représentant la longueur de la période d'analyse. Selon un mode particulier de réalisation de l'invention, le délai utilisé pour convertir les noeuds en intervalles est un multiple d'une valeur approchée de l'écart type des échantillons calculés par la formule ô' = \/F(x2) - F(X)2 où la fonction F représente un filtre passe-bas. Selon un mode particulier de réalisation de l'invention, l'appareil étant à usage continu, il comporte une étape d'analyse des moments d'allumage de l'appareil par l'utilisateur ; une étape d'analyse des moments d'extinction de l'appareil par l'utilisateur et une étape supplémentaire de combinaison des intervalles générés par ces deux analyses pour créer les intervalles d'activité. Selon un mode particulier de l'invention, l'appareil étant à usage continu, il comporte une étape de génération d'actions virtuelles tant que l'appareil est en fonctionnement. Selon un mode particulier de réalisation de l'invention, il comporte en outre une étape d'avancement d'une heure du début de tous les intervalles, soit de recul d'une heure de leur fin en fonction du sens du changement en cas de changement d'heure. Selon un mode particulier de réalisation de l'invention, il comporte en outre une étape de suppression desdits moments planifiés où ledit appareil n'étant pas utilisé, il doit être ramené en état de veille partielle en anticipation d'une action de l'utilisateur, au bout d'un certain nombre de réveils inutiles. Selon un mode particulier de réalisation de l'invention, il comporte une étape d'apprentissage d'un premier modèle avec une période de un jour pendant un certain temps suffisamment long pour assurer la stabilisation de ce premier modèle et une étape d'initialisation d'un deuxième modèle avec une période de sept jours en dupliquant le premier modèle. L'invention concerne également un appareil électronique, caractérisé en ce qu'il comporte un mode de veille profonde où l'appareil consomme très peu d'énergie, mais a un temps de réveil long ; un mode de veille partielle où l'appareil consomme plus d'énergie, mais a un temps de réveil court ; des moyens pour analyser les moments des actions de l'utilisateur ; des moyens pour planifier dynamiquement à partir des résultats de l'analyse des moments où ledit appareil n'étant pas utilisé, il doit être ramené en état de veille partielle en anticipation d'une action de l'utilisateur. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : La Fig. 1 illustre l'architecture du système dans un mode de réalisation particulier de l'invention. La Fig. 2 illustre la machine d'état des modes de veille et d'activité d'un mode de réalisation particulier de l'invention. La Fig. 3 illustre l'organigramme de fonctionnement du procédé de gestion des modes de veille selon un mode particulier de réalisation de l'invention. La Fig. 4 illustre l'organigramme de fonctionnement d'un mode de réalisation du module d'analyse. L'invention concerne les procédés de gestion des modes de veille des appareils qui disposent au moins d'un mode de veille partielle et d'un mode de veille profonde en supplément de leur mode d'activité. Elle est particulièrement intéressante si le temps de démarrage de l'appareil à la mise sous tension et en sortie du mode de veille profonde est long. Elle tire parti également d'habitudes d'utilisation de l'appareil à certains moments de la journée. Les appareils concernés par l'invention comprennent des appareils multimédias tels que téléviseurs, magnétoscopes, décodeurs numériques, chaînes HiFi etc... Ils comprennent également des appareils du type bureautique tels que des imprimantes, des scanners, des photocopieurs et autres. Ces listes ne sont pas exhaustives. L'idée de base de l'invention consiste à analyser les moments d'utilisation de l'appareil par son ou ses utilisateurs. À partir de cette analyse, on détermine des moments où la probabilité d'usage est forte et où, en conséquence, on interdit la veille profonde pour permettre une sortie de veille rapide. On détermine également des moments où la probabilité d'usage est faible et où, en conséquence, on provoque la mise en veille profonde pour économiser l'énergie. La Fig. 1 illustre l'architecture du système dans un mode de réalisation particulier de l'invention. L'appareil est composé principalement d'un système 1.1. On regroupe sous le vocable générique de système tous les composants de l'appareil qui concourent à apporter le service pour lequel l'appareil est fait. Par exemple, s'agissant d'un téléviseur, le système comporte la carte mère du téléviseur l'écran, les récepteurs, etc. On peut considérer qu'il s'agit globalement de l'intégralité de l'appareil moins le module de gestion de veille 1.2. Le module de gestion de veille peut agir sur le système et en particulier il peut provoquer un changement de mode d'activité dudit système. Il peut donc provoquer le passage du système en mode de veille profond, en mode de veille partielle ou le réveiller. Le module de gestion de veille 1.2 reçoit les actions de l'utilisateur relatives à la gestion de la veille. Dans certains modes de réalisation de l'invention, toutes les actions utilisateurs sont gérées par le module de gestion de veille. Dans d'autres modes de réalisation, seules les actions ayant un impact sur la gestion de la veille sont traitées par le module de gestion de veille. À ces composants de base de tous les appareils comportant deux modes de veille, on ajoute un module d'analyse 1.3. Ce module d'analyse reçoit également les actions de l'utilisateur, en particulier les moments auxquels l'utilisateur déclenche une utilisation de l'appareil. Ce module analyse le comportement quotidien de l'utilisateur afin de déterminer des tranches horaires d'utilisation. Ces tranches horaires d'utilisation sont fournies au module de planification 1.4 qui est lui chargé de déterminer à partir de ces données et d'éventuels paramètres une planification des états de veille de l'appareil. Le résultat de cette planification est fourni au module de gestion de veille 1.2 pour provoquer le réveil ou le passage en veille en fonction de cette planification. Cette planification consiste principalement à définir des intervalles de temps que l'on appelle intervalles d'activité. Ces intervalles d'activité correspondent à des moments où l'on estime, suite à l'analyse, que l'appareil est susceptible d'être utilisé par l'utilisateur avec une forte probabilité. Le module de gestion de veille utilisera la connaissance de ces intervalles d'activité pour provoquer une mise en veille partielle de l'appareil durant ces intervalles et éviter une veille profonde de façon à minimiser le temps de démarrage lorsque l'utilisateur démarre son appareil. La Fig. 2 illustre la machine d'états associée à la gestion de la veille dans un exemple de réalisation de l'invention. On considère ici un état d'activité 2.2 correspondant au fonctionnement normal de l'appareil. Un premier état de veille 2.3 correspond à la veille partielle telle qu'elle a été définie. Un second état de veille 2.1 correspond à un état de veille profonde où seul le module de gestion de veille reste alimenté, le système de l'appareil étant lui stoppé. Lorsque l'appareil est dans l'état 2.1 de veille profonde, une action de l'utilisateur 2.4 provoque le redémarrage du système pour passer dans l'état d'activité 2.2. Le début d'un intervalle d'activité 2.7 provoque un passage de l'état de veille profonde 2.1 à l'état de veille partielle 2.3 pour préparer l'appareil à être utilisé. Lorsque l'appareil est dans l'état 2.3 de veille partielle, une action de l'utilisateur 2.9 provoque le réveil du système pour passer dans l'état d'activité 2.2. La fin d'un intervalle d'activité 2.6 provoque un passage de l'état de veille partielle 2.3 à l'état de veille profonde 2.1, l'appareil étant maintenant peu susceptible d'être utilisé. Lorsque l'appareil est dans l'état 2.2 d'activité, une absence d'utilisation durant un temps donné et hors de tout intervalle d'activité 2.5 provoque un passage à l'état de veille profonde 2.1. Tandis qu'une absence d'utilisation durant un temps donné, mais alors qu'un intervalle d'activité est en cours 2.8 provoque le passage à l'état de veille partielle 2.3. La Fig. 3 illustre le procédé de fonctionnement du procédé de gestion des modes de veille selon un mode particulier de réalisation de l'invention. Lors d'une première étape, le système, en l'occurrence typiquement le module d'analyse 1.3, effectue une étape 3.1 d'analyse des moments des actions de l'utilisateur. Lors de cette étape, le module d'analyse reçoit les actions de l'utilisateur et en déduit dynamiquement une liste d'intervalles de temps pendant lesquels ces actions ont une probabilité importante de se produire. Avantageusement, cette liste peut être annotée de façon à associer à chaque intervalle un poids plus ou moins grand en fonction de la probabilité qu'une action se produise pendant cet intervalle. Selon une étape 3.2 optionnelle, il peut être avantageux d'effectuer alors une étape de prétraitement sur les intervalles obtenus lors de l'étape précédente. Ces prétraitements ont pour but principal de simplifier la liste obtenue en supprimant des intervalles non significatifs et en fusionnant d'éventuels intervalles adjacents afin d'obtenir une liste d'intervalles disjoints pendant lesquels le système devrait être en veille légère ou en service. Ces prétraitements peuvent comprendre une étape de fusion des intervalles adjacents. Cette étape consiste à parcourir la liste des intervalles par ordre chronologique. Si la distance entre la fin d'un premier intervalle et le début d'un second intervalle qui le suit est inférieure à un seuil fixé, on retire les deux intervalles pour les remplacer par un intervalle qui commence au début du premier intervalle et se termine à la fin du second. L'éventuelle annotation de ce nouvel intervalle est calculée en fonction des annotations des premier et second intervalles. Cette opération peut être répétée avec le nouvel intervalle ainsi défini et le suivant s'ils sont suffisamment proches. Ces prétraitements peuvent aussi comprendre une étape de suppression des intervalles négligeables. On retire alors de la liste tous les intervalles dont les annotations sont telles que le poids associé à l'intervalle est inférieur à un seuil donné ou que l'âge, c'est-à-dire le moment de la dernière action utilisateur dans cet intervalle, est supérieur à un seuil donné, ou encore tout autre critère. Il s'ensuit une étape 3.3 de planification dynamique à partir des résultats de l'analyse des moments où ledit appareil n'étant pas utilisé, il doit être ramené en état de veille partielle en anticipation d'une action de l'utilisateur. Elle consiste à recevoir la liste d'intervalles de temps éventuellement annotée et à décider quand le système doit passer en veille profonde et surtout quand il doit être ramené à l'état de veille partielle en anticipation d'une action de l'utilisateur. Si l'instant présent est contenu dans un intervalle d'activité, le module de planification programme un passage en veille profonde à la fin de l'intervalle d'activité en cours. Si l'instant présent n'est pas contenu dans un intervalle d'activité, le module programme un passage en veille profonde immédiatement. Dans tous les cas, le module programme un passage en veille légère au début du prochain intervalle d'activité. Une dernière étape 3.4 de post-traitements peut être appliquée sur les décisions prises par le module de planification en fonction de critères extérieurs. Si l'utilisateur vient d'effectuer une action et que le module a planifié de passer en veille profonde à bref délai, on peut retarder le passage en veille profonde de façon à introduire un délai minimum entre une action utilisateur et un passage en veille profonde. L'heure de passage en veille profonde peut aussi être retardée en fonction d'autres critères relatifs à l'usage prévu. Par exemple, un scanner réseau qui vient de numériser un document et de l'envoyer vers un serveur peut attendre d'avoir reçu un accusé de réception avant de passer en veille profonde même si les prévisions autorisent à le faire plus tôt. L'heure de réveil au début du prochain intervalle d'activité peut être avancée, soit pour tenir compte du temps de sortie de veille profonde, soit pour permettre certaines opérations de maintenance, par exemple une mise à jour du logiciel. Si l'heure de passage en veille profonde est trop proche de la prochaine heure de réveil, le système peut choisir de ne pas passer en veille tout de suite et d'attendre la fin du prochain intervalle d'activité. Le système peut disposer d'un module d'analyse de plus haut niveau pour gérer les périodes d'inactivités occasionnelles plus longues telles que les vacances ou des changements prévisibles comme le changement d'heure entre l'été et l'hiver. Il peut alors choisir, par exemple, de ne pas programmer de réveil automatique pendant les vacances ou d'anticiper plus le réveil ou de retarder plus la mise en veille au moment d'un changement d'heure. Concernant la mise en oeuvre particulière du module d'analyse 1.3, nous allons décrire plusieurs modes de réalisation de cette fonction. Selon un premier mode de réalisation, on applique un procédé basé sur les histogrammes. Ce procédé consiste à découper la journée, ou toute autre période choisie, en une liste d'intervalles fixés. Par exemple, on peut faire une découpe en 24 intervalles d'une heure chacun. Ensuite on compte le nombre d'actions effectuées dans chaque intervalle. La sortie est constituée de la liste des intervalles dont le compteur est supérieur à un seuil fixé, éventuellement annotés par la valeur du compteur pour chaque intervalle. Ce procédé est simple, mais les intervalles choisis ne sont pas forcément adaptés aux habitudes d'utilisation. Une évolution dans les habitudes d'utilisation ne sera pas forcément prise en compte rapidement. Ce procédé nécessite de gérer un compteur même pour des intervalles qui ne sont jamais utilisés. Selon un second mode de réalisation, on utilise le procédé nommé procédé des k-means. En statistiques et en apprentissage automatique, l'algorithme K-means de partitionnement de données est une méthode dont le but est de diviser des observations en K partitions (clusters en anglais) dans lesquelles chaque observation appartient à la partition avec la moyenne la plus proche. Les nuées dynamiques sont une généralisation de ce principe, pour laquelle chaque cluster est représenté par un noyau pouvant être plus complexe qu'une moyenne. L'algorithme classique de Kmeans est le même que l'algorithme de quantification de Lloyd-Max. Cette méthode comporte les étapes suivantes : Une étape de conservation d'une liste des instants où une action de l'utilisateur s'est produite qui constitue l'ensemble des échantillons. Une étape d'application du procédé des k-means pour en déduire un certain nombre d'instants moyens. Ce nombre doit avoir été fixé à l'avance ; Une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après. Ce délai peut soit être fixe, soit être calculé à partir de la variance des instants réels associés à chaque instant moyen. La sortie est constituée de la liste des intervalles, éventuellement annotés par le nombre d'échantillons associés à chaque intervalle. Il est nécessaire de stocker le détail de l'historique. Contrairement aux autres procédés décrits, le procédé basé sur les k-means nécessite la liste complète des échantillons. Cette liste peut cependant être tronquée en ne conservant qu'un certain nombre d'échantillons les plus récents afin d'économiser en mémoire et de permettre au système de s'adapter aux changements d'habitudes. Le calcul itératif est assez coûteux et doit être fait en tâche de fond pendant les périodes d'inactivité du système. Le nombre d'instants moyens et donc d'intervalles doit être fixé a priori au moment de la conception du système alors que le nombre idéal dépend des habitudes de l'utilisateur : si toutes les actions se produisent groupées dans un intervalle de temps court, on peut utiliser un petit nombre d'instants moyens. Alors que si les actions sont plus étalées il faudra plus d'instants moyens pour réaliser une analyse correcte. L'algorithme usuel d'analyse fonctionne de manière itérative en remplaçant chaque instant moyen par la moyenne des instants réels associés. Selon un autre mode de réalisation, on utilise le procédé connu sous le nom de Neural Gas. C'est un algorithme simple pour trouver des représentations de données optimales basées sur des vecteurs de caractéristiques. Ce procédé est décrit par exemple dans l'article « A neural gas network learns topologies» par Thomas Martinetz and Klaus Schulten (1991) dans « Artificial Neural Networks » paru chez Elsevier. Ce procédé consiste en les étapes suivantes : Une étape d'initialisation d'une liste de noeuds, chaque noeud étant associé à un instant dans la journée. Ces instants peuvent être choisis aléatoirement ou de manière à répartir les noeuds tout au long de la journée ; À chaque action de l'utilisateur, une étape de tri de la liste des noeuds par ordre croissant de leur distance avec l'échantillon courant puis une étape de déplacement de chaque noeud vers l'échantillon courant en fonction d'un facteur dépendant de leur ordre dans la liste. De cette manière le noeud le plus proche est fortement déplacé et le noeud le plus éloigné est peu déplacé. Comme dans la méthode des k-means, une étape de conversion de chaque noeud en un intervalle en lui ajoutant un délai avant et après. La sortie est constituée de la liste d'intervalles, éventuellement annotés par le nombre de fois où le noeud a été le plus proche de l'action de l'utilisateur. Comme pour la méthode k-means, le nombre de noeuds doit être fixé dès la conception et n'est pas nécessairement adapté aux habitudes de l'utilisateur. La méthode a parfois du mal à se stabiliser en présence de plusieurs intervalles d'utilisation distincts, par exemple en cas d'utilisation le matin et le soir, mais pas entre les deux. Selon un autre mode de réalisation, on utilise le procédé connu sous le nom de Growing Neural Gas, qui est une évolution de la méthode précédente. Cette méthode est décrite dans la thèse de Jim Homstrôm intitulée « Growing Neural Gas, Experiments with GNG, GNG with Utility and Supervised GNG » Uppsala Master's Thesis in Computer Science Examensarbete DV3 2002-08-30. Cette méthode diffère de la précédente par les points suivants : Les noeuds sont connectés deux à deux par des « arêtes », chaque noeud étant connecté à au moins un autre noeud. La règle de déplacement des noeuds est différente. En particulier, seuls le noeud le plus proche de l'échantillon courant et ceux qui lui sont directement connectés sont 20 déplacés. Des règles permettent d'ajouter des noeuds supplémentaires ou de supprimer des noeuds superflus. La liste d'intervalles peut être générée de la même manière que pour les méthodes k-means et Neural Gas. Alternativement, on peut aussi regrouper les noeuds 25 de telle sorte que deux noeuds connectés soient dans le même intervalle. Les règles de déplacement, d'ajout et de suppression sont telles que les composantes connexes ne peuvent pas s'imbriquer. La méthode est complexe et le suivi des arêtes demande plus de mémoire pour un apport assez faible. Elle est très sensible aux points anormaux. 30 En cas de changement brutal des habitudes, un groupe de noeuds peut rester bloqué sur l'ancien intervalle et continuer de consommer des ressources pour rien. Selon un mode particulier de réalisation, les inventeurs ont développé un procédé qui combine les avantages de la méthode connue sous le nom de Neural Gas avec une méthode adaptive qui permet un ajout et une suppression de noeuds en fonction des besoins. Les inventeurs ont nommé cette méthode Adaptive Neural Gas. Cette méthode utilise un ensemble de paramètres qui sont les suivants : E0 et E1 sont des taux d'adaptation, ils sont tels que 0 A est l'âge maximal au-delà duquel un noeud est supprimé. Là aussi la valeur dépend du problème exact, dans l'exemple de réalisation A=40. Une valeur trop importante ralentit l'adaptation au changement en retenant les vieilles habitudes plus longtemps. Une valeur trop faible limite le nombre d'intervalles distincts qui peuvent être trouvés. En outre, chaque noeud contient les valeurs suivantes initialisées lors de la création du noeud puis mises à jour au fur et à mesure de l'analyse : /i( t) : position du noeud i à l'instant t ; ai(t) : âge du noeud i à l'instant t. Le fonctionnement du procédé est illustré par la Fig. 4. Dans une première étape 4.1, on initialise la liste des noeuds avec une liste vide. On appelle x(t) un nouvel échantillon à l'instant t, c'est-à-dire une nouvelle action de l'utilisateur que l'on doit prendre en compte dans l'analyse. Pour chacun de ces nouveaux échantillons, on commence par effectuer une étape 4.2 de tri de la liste des noeuds par ordre croissant de distance au nouvel échantillon. Le premier élément de la liste est donc l'élément le plus proche temporellement de l'échantillon courant. Lors de l'étape 4.3 on teste alors si la liste est vide ou si la distance entre l'échantillon courant et le premier élément de la liste est supérieure à la distance paramètre D. Si c'est le cas, on crée un nouveau noeud et on l'insère dans la liste lors de l'étape 4.4. Ce nouveau noeud est initialisé à une position temporelle 10(t) = x(t) et son âge est initialisé à ao(t) = 0. Dans le cas contraire, on effectue une étape 4.5 d'activation du premier noeud de la liste. Cette activation consiste à réinitialiser l'âge du noeud à 0. Ensuite, intervient une étape 4.6 de mise à jour des positions de tous les noeuds en utilisant les formules suivantes : On calcule alors la nouvelle position du noeud i par la formule : lia+1) = 1i(.0 E0 e_i/At) (x(t) - lit)) Une fois la position temporelle des noeuds ainsi recalculée, on effectue une étape 4.7 de mise à jour des âges. Cette mise à jour consiste à incrémenter les âges et à supprimer les noeuds dont l'âge est supérieur à la limite d'âge A. Une fois les échantillons traités, on génère la liste d'intervalles par une étape 4.8 de conversion des noeuds en intervalles par l'ajout d'un délai de part et d'autre de la position temporelle des noeuds. Plusieurs possibilités existent pour annoter les intervalles en fonction de leur importance. Comme pour le Neural Gas classique, on peut par exemple compter le nombre de fois où un noeud a été activé. Alternativement, on peut utiliser l'âge comme mesure de l'importance. En effet, un âge faible correspond à un noeud souvent activé, donc important. On peut aussi utiliser la méthode décrite ci-après : On dote chaque noeud d'un champ supplémentaire appelé poids et noté wi(t). Lorsqu'un nouveau noeud est créé, son poids est initialisé à wi(t) = 0. Lorsqu'un noeud est activé, son poids est incrémenté. À chaque itération, les poids de tous les noeuds sont multipliés par un facteur constant y compris entre 0 et 1. On applique donc la formule wi(t+1) = y - wi(t). On peut utiliser, par exemple, une valeur de y = 0,99. Chaque intervalle est alors annoté par le poids du noeud correspondant. Pour un domaine à une seule dimension comme le nôtre, la distance la plus couramment utilisée en mathématiques est la valeur absolue de la différence définie par la formule d(x, y) = ly - xi. Cependant dans notre cas, cette distance pose un problème lié à la circularité du domaine. Par exemple, si la période d'analyse est d'une journée, la définition précédente donne une distance de 23 heures et 58 minutes entre onze heures 59 du soir et zéro heure 01 du matin, alors qu'une distance de deux minutes serait beaucoup plus appropriée. Il est donc préférable d'utiliser une définition alternative pour la distance définie par : d' (x, y) = min(ly - xl, L - I y - xi) On définit N (t) comme étant le nombre de noeuds à l'instant t. On définit À.(t) par l'équation suivante : 1 1 si At(t) = 1 À(t) = N(t) - 1 ln(E0) - ln(E1) sinon où L représente la longueur de la période d'analyse et donc 24 heures dans notre exemple. Cette formule alternative donne bien le résultat attendu. Les méthodes d'analyse à base de noeuds, K-Means et les différentes variantes de Neural Gas, convertissent leur liste de noeuds en intervalles par l'ajout d'un délai de part et d'autre de la position du noeud. Ce délai peut être fixé arbitrairement, mais il peut aussi être calculé automatiquement, par exemple à partir de l'écart-type des échantillons associés au noeud pour la méthode des K-Means ou de l'écart-type des échantillons qui ont activé le noeud pour les méthodes Neural Gas. Ainsi, on peut par exemple fixer ce délai à c - a où c est une constante arbitraire, par exemple 1 ou 2 et u est l'écart-type des échantillons. Cependant, le calcul de l'écart-type n'est traditionnellement réalisable qu'en conservant la liste des échantillons, ce qui ne pose pas de problème pour la méthode des K-Means vu que cette liste est de toute façon nécessaire pour la méthode, mais en pose pour les autres méthodes dont l'un des avantages est justement de pouvoir se passer de cette liste. On peut avantageusement utiliser des techniques de filtrage numérique pour calculer une valeur proche de l'écart-type et donc acceptable pour notre utilisation à faible coût en utilisant la formule suivante : S = F (x2) - F (X)2 où F est un filtre numérique passe-bas. Si on prend : F(x) = ! ET x T ti t on retrouve la formule habituelle pour le calcul de l'écart type, mais on peut prendre n'importe quel autre filtre passe-bas, par exemple : F(x) = y - xt + (1 - y) - F(xt_i) ou y est une constante entre 0 et 1. Ce dernier présente l'avantage de n'avoir besoin que de la valeur de l'échantillon courant et de l'ancienne valeur filtrée. La fonction F peut aussi être par exemple un filtre de Butterworth, un filtre de Chebychev ou un filtre elliptique. La description ci-dessus est adaptée pour un appareil à usage ponctuel, tel que par exemple un scanner, où chaque utilisation implique une action. L'invention peut aussi être utilisée pour des appareils à usage continu, tel que par exemple un téléviseur, où l'utilisation se déroule pendant un certain temps sans intervention de l'utilisateur. On peut, par exemple, utiliser deux modules d'analyse. Le premier reçoit uniquement les actions qui allument l'appareil c'est-à-dire qui le font passer dans l'état 'marche' et le deuxième reçoit uniquement les actions qui éteignent l'appareil. Les intervalles fournis par ces deux modules d'analyse sont alors non pas des intervalles d'activité, mais des intervalles de changement d'état. Un module supplémentaire, éventuellement intégré au module de planification, combine ces intervalles de changement d'état pour créer les intervalles d'activité. Alternativement il est possible de créer des actions virtuelles tant que l'appareil est en fonctionnement. Ces actions virtuelles sont envoyées à intervalle régulier au module d'analyse sans intervention de l'utilisateur. Dans ce cas, il peut être avantageux pour le module de planification de mémoriser la liste des intervalles d'activité au moment de la mise en marche afin de ne pas être perturbé dans sa prise de décision par les actions virtuelles en cours. L'invention s'adapte automatiquement si un changement d'heure (heure d'été / heure d'hiver) est accompagné d'un changement d'habitudes. Cependant cette adaptation demande quelques jours. Avantageusement, le module d'anticipation pourra allonger les intervalles d'activité pendant quelques jours après un changement d'heure. Cet allongement lui permettra de couvrir toutes les possibilités soit en avançant d'une heure le début de tous les intervalles, soit en reculant d'une heure leur fin en fonction du sens du changement d'heure. Il peut être inutile de faire sortir le système de la veille profonde vers la veille légère alors que l'utilisateur est en vacances ou en déplacement. Cependant, il est impossible de prédire ce type de périodes d'absence de façon fiable. Les modules d'analyse décrits ci-dessus ignorent les périodes sans actions, ce qui fait qu'ils n'oublieront pas les anciennes habitudes à cause de la période d'inactivité, mais ils ne verront pas cette période non plus. Le module de planification peut cependant en tenir compte, par exemple en choisissant de ne plus programmer de sortie de veille profonde au bout d'un certain nombre de réveils inutiles et jusqu'à la prochaine action de l'utilisateur qui provoquera un réveil explicite à partir duquel le fonctionnement reviendra à l'état normal. Le nombre de réveils inutiles avant de passer dans ce mode peut soit être fixé à l'avance, soit être déterminé automatiquement, par exemple à partir de statistiques, moyennes et écarts-types, sur le nombre de réveils utiles ou non entre deux actions consécutives de l'utilisateur. Les habitudes des utilisateurs sont généralement différentes en fonction du jour de la semaine. Il est par conséquent intéressant d'utiliser une période d'analyse de sept jours. Cependant la rapidité d'apprentissage est liée à la taille de la période. En effet, il faut de deux à sept périodes pour que la méthode la plus rapide, la méthode Adaptive Neural Gas, trouve un résultat significatif. Avec une période de un jour, cela se traduit en une ou deux semaines d'apprentissage, mais une période d'une semaine imposerait plus d'un mois d'apprentissage, y compris à chaque changement d'habitudes. On peut cependant accélérer l'apprentissage en procédant en deux étapes : Dans un premier temps, procéder à l'apprentissage d'un premier modèle avec une période de un jour pendant un certain temps suffisamment long pour assurer la stabilisation du premier modèle, par exemple deux semaines. Dans un second temps, on initialise un deuxième modèle avec une période de sept jours en dupliquant le premier modèle. Pour la méthode par histogrammes, si le premier modèle contenait 24 intervalles d'une heure, on crée un deuxième modèle avec 7x24 intervalles d'une heure et on initialise les compteurs de chaque intervalle avec la valeur du compteur de l'intervalle correspondant à la même heure dans le premier modèle. Pour les méthodes par noeuds, on duplique chaque noeud en sept exemplaires en décalant sa position d'un jour à chaque fois. REVENDICATIONS1/ Procédé de gestion de la veille d'un appareil électronique, caractérisé en ce qu'il comporte : - une étape (3.1) d'analyse des moments des actions de l'utilisateur ; - une étape (3.3) de planification qui, l'appareil disposant d'un mode de veille profonde où l'appareil consomme très peu d'énergie, mais a un temps de réveil long et un mode de veille partielle où l'appareil consomme plus d'énergie, mais a un temps de réveil court, consiste à planifier dynamiquement à partir des résultats de l'analyse des moments où ledit appareil n'étant pas utilisé, il doit être ramené en état de veille partielle en anticipation d'une action de l'utilisateur. 2/ Procédé selon la revendication 1, caractérisé en ce que l'étape d'analyse fournissant une liste d'intervalles de temps pendant lesquels ces actions utilisateurs ont une probabilité importante de se produire, il comporte en outre : - une étape (3.2) de prétraitement sur ces intervalles pour simplifier cette liste. 3/ Procédé selon la revendication 2, caractérisé en ce que l'étape de prétraitement comporte : - une étape de fusion des intervalles adjacents dont la distance est inférieure à un seuil donné ; - une étape de suppression des intervalles négligeables. 4/ Procédé selon l'une des revendications 1 à 3, caractérisé en ce qu'il comporte en outre : - une étape (3.4) de post-traitement de la planification en fonction de critères extérieurs. 5/ Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'étape d'analyse est basée sur des histogrammes composés par une découpe de la période en une liste d'intervalles fixés associés à un compteur des actions utilisateurs qui interviennent dans cet intervalle.6/ Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'étape d'analyse est basée sur le procédé des k-means et comporte : - une étape de conservation d'une liste des instants où une action de l'utilisateur s'est produite qui constitue l'ensemble des échantillons ; - une étape d'application du procédé des k-means pour en déduire un nombre fixé à l'avance d'instants moyens ; - une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après ; - une étape de génération de la liste des intervalles, éventuellement annotés par le nombre d'échantillons associés à chaque intervalle. 7/ Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'étape d'analyse est basée sur le procédé Neural Gas et comporte : - une étape d'initialisation d'une liste de noeuds, chaque noeud étant associé à un instant dans la journée ; à chaque action de l'utilisateur : o une étape de tri de la liste des noeuds par ordre croissant de leur distance avec l'échantillon courant ; o une étape de déplacement de chaque noeud vers l'échantillon courant en fonction d'un facteur dépendant de leur ordre dans la liste ; - une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après ; - une étape de génération de la liste des intervalles, éventuellement annotés par le nombre de fois où le noeud a été le plus proche de l'action de l'utilisateur. 8/ Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'étape d'analyse est basée sur le procédé Growing Neural Gas et comporte : - une étape d'initialisation d'une liste de noeuds, chaque noeud étant associé à un instant dans la journée, les noeuds étant connectés deux à deux par des arêtes, chaque noeud étant connecté à au moins un autre noeud ; à chaque action de l'utilisateur : o une étape de tri de la liste des noeuds par ordre croissant de leur distance avec l'échantillon courant ;o une étape d'application de règles permettant l'ajout et la suppression de noeuds ; o une étape de déplacement des noeuds, seuls le noeud le plus proche de l'échantillon courant et ceux qui lui sont directement connectés sont déplacés ; - une étape de conversion de chaque instant moyen en un intervalle en lui ajoutant un délai avant et après ; - une étape de génération de la liste des intervalles, éventuellement annotés par le nombre de fois où le noeud a été le plus proche de l'action de l'utilisateur. 9/ Procédé selon l'une des revendications 1 à 4, caractérisé en ce que l'étape d'analyse est basée sur un procédé qui comporte : - une première étape (4.1) où l'on initialise une liste des noeuds avec une liste vide ; pour chaque nouvel échantillon x(t) : - une étape (4.2) de tri de la liste des noeuds par ordre croissant de distance au nouvel échantillon ; - une étape (4.3) où l'on teste alors si la liste est vide ou si la distance entre l'échantillon courant et le premier élément de la liste est supérieure à une distance D donnée en paramètre ; - si c'est le cas, une étape (4.4) de création et d'insertion d'un nouveau noeud initialisé à une position temporelle 10(t) = x(t) et son âge est initialisé à (t) ao = 0 - - sinon, une étape (4.5) d'activation du premier noeud de la liste qui consiste à réinitialiser l'âge du noeud à 0 ; - une étape (4.6) de mise à jour des positions de tous les noeuds en utilisant les formules suivantes : N(t) étant le nombre de noeuds à l'instant t; À(t) étant défini par l'équation suivante 1 si At(t) = 1 À(t) , N(0-1 sinon in(E0)-In(si) E0 et E1 étant des taux d'adaptation, tels que 0