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 :

Priorité sur chaine de triage


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut Priorité sur chaine de triage
    Bonjour,
    Je souhaiterai soumettre vos méninges à un petit pb.

    On a 20 files permettant de stocker des lots de marchandises. Toutes ces marchandises sont à destination d'un même lieu. Chaque file correspond à une livraison.
    Toute les X minutes (X dépend du nombre de départ par heure) on a une file complète (15 lots) qui est envoyé sur une livraison. Il peut arriver qu'il y ait un problème avec le transporteur (ce qui va ralentir le nombre de départ par heure) et nous obliger à stocker simultanément davantage de livraison en attente.

    En amont des files on a un trieur qui va envoyer le colis qui se présente sur le premier départ disponible. On a donc un stockage sur les livraisons selon les règles FIFO.

    Dans le nouveau dispositif, nous voulons introduire la notion de colis prioritaires.

    Nous savons en temps réel combien de colis prioritaires sont injectés dans le circuit (avant trieur) mais une fois dans le circuit nous procédons à des tests par échantillonage sur les colis (certains peuvent mettre du temps à arriver).
    Il est donc impossible de savoir dans quel ordre les colis arrivent devant le trieur. Quand un colis prioritaire se présente il peut y avoir un certain nombre de ligne en attente déjà remplies.

    Les objectifs que je me fixe sont:
    -Quand un colis prioritaire se présente au niveau du trieur il doit être envoyé sur le prochain départ
    -L'ordre FIFO des colis standard doit être conservé
    -Essayer d'avoir toujours des départ de 15 lots (taux de chargement 100%)

    J'ai écrit l'algorithme que voici:
    Cet algorithme nécessite une ligne supplémentaire (dite "ligne d'optimisation")

    - Durant la composition d'une livraison, on a un compteur qui indique le nombre de colis prioritaire dans le circuit (donc susceptible d'arriver)
    - Pour chaque mission on créé un "airbag" qu'on va propager aux livraisons suivantes tant que les colis prioritaires ne sont pas arrivés:
    Le calcul de la taille de l'airbag se fait comme suit : nbColis_Prio_Attendu + nbColis_optimisation - nbPLacesLibres (dans les airbags précédents).

    - Si on arrive au nombre de lots max (15) - taille Airbag. On arrête d'envoyer des colis dans cette file.

    - Quand un colis prioritaire se présente et qu'on est déjà en présence de ligne avec airbag on l'envoi sur la première place libre dans les airbags
    (le compteur nbColis_Prio_Attendu est décrémenté). S'il n'y a pas d'airbag cela veut dire que la livraison courante est la prochaine à partir (il n'y a pas d'autres livraisons stockées dans les réservoirs) On décrémente le compteur nbColis_Prio_Attendu et on envoie le colis prio dans la ligne courante.

    - A chaque fois qu'on constitue un airbag dans une file,on envoie les colis standard qui suivent en ligne d'optimisation (un colis standard en ligne d'optimisation pour un colis prioritaire attendu)
    - Si arrivé à l'heure H pour un départ on est toujours en attente de colis prioritaire , on libère la file et on compléte le chargement avec des colis en voie d'optimisation (pour avoir un taux de chargement à 100%). En effet, une fois arrivé à l'heure H, la livraison doit partir avec ou sans les colis prioritaires. Il faut juste propager l'airbag pour se donner la capacité d'accueillir les colis prioritaires sur la mission suivante.

    Quand il n'y a plus de colis prioritaire attendu on arrête d'envoyer des colis en voie d'optimisation. Ainsi on "tue" l'airbag et tout redevient normal.


    Pour résumé avec cette méthode:
    -les colis stockés en voie d'optimisation peuvent être décalé d'une mission maximum si des colis prio prennent leurs places
    -Une fois devant le trieur, les colis prios prennent le prochain départ
    -le taux de chargement est toujours de 100%

    Mais le problème c'est qu'il me faut segmenter la ligne d'optimisation pour compléter les chargements. Or dans le système on ne peut pas couper une ligne.
    A partir du moment où on ouvre une ligne on libère tous les colis présents.

    Avez vous d'autres idées pour résoudre ce problème? on est libre d'imaginer d'autres formes pour les réservoirs
    Je ne sais pas si je suis très clair dans mes explications. N'hésitez pas à poser des questions

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yoshï Voir le message
    Bonjour,
    Je souhaiterai soumettre vos méninges à un petit pb.
    ..
    Avez vous d'autres idées pour résoudre ce problème? on est libre d'imaginer d'autres formes pour les réservoirs
    Je ne sais pas si je suis très clair dans mes explications. N'hésitez pas à poser des questions
    Et pourquoi ne pas faire avec les 20 files déjà présentes seulement ?

    N colis prio dans le circuit = m files prio (m-1 pleines + 1 partiellement)

    Nb files normales = 20 - m

    m-1 files prio pleines

    1 moitié-moitié sur laquelle on ajuste

    ?

  3. #3
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Et pourquoi ne pas faire avec les 20 filles déjà présentes seulement ?
    En tombant par hasard sur cette phrase, souviron34 a failli me donner la motivation pour lire toute la conversation, mais j'ai rapidement dû me rendre à l'évidence qu'il ne s'agissait que d'une typo

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    oopsss

  5. #5
    Membre confirmé Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Par défaut
    Et pourquoi ne pas faire avec les 20 files déjà présentes seulement ?

    N colis prio dans le circuit = m files prio (m-1 pleines + 1 partiellement)

    Nb files normales = 20 - m

    m-1 files prio pleines

    1 moitié-moitié sur laquelle on ajuste

    ?
    Hello
    Je pense que je me suis mal expliqué...
    On ne peut pas changer la priorité des files. Les files partent dans l'ordre (File1 puis File2 puis File3.....) C'est pourquoi il faut propager un airbag qui va permettre au colis prio de s'insérer dans la prochaine livraison. Si on arrive à l'heure H (départ de la livraison) et qu'on a toujours pas les colis prio, on fait partir la mission qu'on complète avec le bon nombre de colis stockés en voie d'optimisation. L'airbag est propagé sur les missions jusqu'à ce que les colis prio arrivent.

    Est ce que c'est un peu plus clair?

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yoshï Voir le message
    On ne peut pas changer la priorité des files. Les files partent dans l'ordre (File1 puis File2 puis File3.....)
    Ce n'est pas contradictoire avec ce que je disais...

    Admettons que nb colis prio = 1.25 files

    nb files total = 20

    nb files normales pleines = 18 (File1 -> File18)

    file 19 : 75% pleine normale + 25% airbag
    file 20 : attente

    au fur et à mesure que colis prio arrivent : file 19 se remplit. Si pleine, on rempli file20 jusqu'au délai.

    Comme ça tu as toujours ton max de files normales pleines, et tous tes colis prios envoyés si ils arrivent tous à l'heure - avec le seul défaut étant d'avoir la dernière ligne prio éventuellement non remplie si certains n'arrivent pas à l'heure, et tu la complètes par les colis normaux en attente.

    Et tu as toujours 20 files complètes.. et les colis prios arrivés à temps partis..

Discussions similaires

  1. Travail sur chaine de caractère
    Par corben dallas dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 19h22
  2. [VB.NET] Traitement sur chaine (simple)
    Par Tempotpo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 13h20
  3. actions sur chaine
    Par ericmart dans le forum ASP
    Réponses: 2
    Dernier message: 22/12/2004, 10h03
  4. Réponses: 3
    Dernier message: 19/12/2004, 14h30
  5. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14

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