IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Recherche d'évènement en fonction d'une heure


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut Recherche d'évènement en fonction d'une heure
    Hello,

    Je cherche depuis quelques jours à trouver un algo me permettant de "prévoir" quel évènement va arriver à un moment donné.

    Disons que j'ai deux informations pour chaque évènement, une information temporelle et le type d'évènement.

    Par exemple, les types d'évènements suivants ce sont produits à ces heures :
    19:45 - A
    17:09 - A
    18:12 - A
    7:00 - A
    23:45 - B
    23:55 - B
    3:00 - C
    3:05 - C
    3:10 - C
    18:00 - D

    Ayant cette liste, j'aimerais que pour un temps donné trouvé le type d'évènement le plus probable:
    Quel est le type d'évènement le plus probable à 18:45 ? --> A puisque c'est A qui arrive plus souvent dans ces heures. D peut aussi être un résultat mais avec un poids plus faible puisqu'il apparaît qu'une seule fois "vers" 18:45.

    Quel est le type d'évènement le plus probable à 7:10 ? --> A puisque c'est le seul type a être survenu vers cette heure là.

    Quel est le type d'évènement le plus probable à 3:20 ? --> C puisque c'est le seul type a être survenu vers cette heure là.




    Mon deuxième problème est comment définir que le temps est cycle, et que 23:59 est plus proche de 00:01 que 01:00:
    0:30 ? --> B // 23:55 est plus proche de 00:30 que 3:00

    Je ne sais pas si je suis très clair dans ma façon de m'expliquer, mais toute piste m'aidant dans mes recherches serait la bienvenue

    (pour info l'implémentation se fera en Java)

    Merci d'avance

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Salut,
    Désolée mais je ne comprend pas la première partie concernant ton approche probabiliste. Pourrais tu ré expliquer?

    Pour ce qui est du coté cyclique:
    Pour ma part j'essaierai de passer par un GregorianCalendar qui permet de faire des différence entre heures, mais cela nécessite d'avoir la date.

  3. #3
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut
    Hello,

    j'ai reformulé dans le message d'origine, je ne sais pas si c'est plus clair ?

  4. #4
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Bonjour,

    sans entrer dans des modèles complexes, tu pourrais essayer dans un premier temps de simplement créer un tableau. Si ta granularité est de l'ordre de la minute tu auras 24*60=1440 colonnes.Si on les indice de 0 à 1439, l'arithmétique modulo 1440 fait l'affaire pour le tour du cadran ou pour les histoires de distances.
    Tu auras une ligne par événement, et la valeur de la case représentera un poids.
    Pour marquer un événement A à une heure H (exprimée en minutes après minuit modulo 1440) tu mets 721 dans la case (A,H), 719 dans les cases (A,H-1) et (A,H+1), ... 2 dans les cases (A,H-719) et (A,H+719), 1 dans la case (A,H-720) (toujours en arithmétique modulo 1440) ; 0 signifie que l'événement n'a jamais eu lieu.
    Pour connaitre l'événement le plus proche d'une certaine heure H', tu parcours la colonne H' du tableau, les lignes ayant le plus grand nombre sont celles que tu cherches.

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Je pense que dans ce cas je calculerai la probabilité d'apparition des différent évènements pondérés par leur éloignement de l'heure demandée.
    Mais il existe probablement un algo plus efficace

  6. #6
    Membre habitué Avatar de sologne
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Mai 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 73
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    je partage assez l'idée de kwariz, que je compléterai avec l'introduction d'un paramètre supplémentaire.qui serait la notion d'intervalle de recherche autour du point ciblé. En effet, Pour une heure H donnée c'est peut_être l'évènement A qui apparaîtra le plus souvent, mais avec un poids moyen de N, alors qui si on se place à H+5 (par exemple) on peut avoir l'évènement B qui se produirai le plus souvent mais avec un poids M très supérieur à N, et du coup le choix de B serai plus indiqué.

    Voici précision que j'apporterai.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    D'une part, en ce qui concerne les temps, le mieux est de se référer à une échelle contnue. La plus usuelle est celle utilisée dans les langages (1 Janvier 1970) (fonctions "tiime", "mktime", etc etc). On ne se pose alors plus la question des "cycles" de 24h.

    Pour le reste, il te faut définir une "fenêtre" temporelle : quand tu demandes "probabilité à telle heure", c'est réellement "autour de telle heure, à l'intérieur de X minutes autour de cette heure".

    Une recherche sera donc un couple (heure, delta).
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [XL-2010] Rechercher des valeurs en fonction d'une autre valeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2015, 16h10
  2. [XL-2010] Récupérer la valeur de plusieurs cellules en fonction d'une heure
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/01/2015, 11h06
  3. Raffraichissement auto en fonction d'une heure fixe
    Par cerede2000 dans le forum Général JavaScript
    Réponses: 31
    Dernier message: 12/01/2013, 01h10
  4. Recherche de date en fonction d'une seule valeur
    Par rousskoff dans le forum Excel
    Réponses: 3
    Dernier message: 06/03/2012, 21h51
  5. Réponses: 13
    Dernier message: 21/12/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo