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 :

Algorithme pour gerer 2 ascenseurs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut Algorithme pour gerer 2 ascenseurs
    Bonjour,

    Je travail sur un projet qui permetterais de gerer deux ascenseurs pour apres l'implementer en C. Et je me pose la question de savoir si il est preferable de gerer les deux ascenseurs chacun comme si il était seul ( leur dire de faire chacun un boulot different comme etages impair pour l'un et etages pair pour l'autre), ou de trouver des solutions en les fesant communiquer entre eux pour chaque probleme rencontré.

    Je ne sais pas si je suis assez clair, mon esprit est en surchauffe.

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    Salut,

    Dans les cours de "systèmes à évènements" que j'ai eu, l'approche était (comme toujours) de diviser le problème pour mieux le résoudre. Modélise d'abord le fonctionnement d'un ascenceur seul (les machines a états c'est très bien pour ca), puis lorsque tu ajoutera le second, tu aura des problèmes de synchronisation ou de gestion de priorité, je ne sais pas vraiment quel est ton problème. Mais en tout cas mieux vaut faire apparaitre les problèmes graduellement

    a+

  3. #3
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par charlix
    Bonjour,

    ou de trouver des solutions en les fesant communiquer entre eux pour chaque probleme rencontré.
    Je prendrais cette option

    Il y a deux types d'ascenceur, en gros :
    - celui ou il n'y a qu'un bouton pour appeler l'ascenceur,
    - celui où il y en a deux (pour aller prendre l'asenceur qui se dirige vers là ou l'on va) -> en haut/en bas

    Pour un ascenceur ou le bonhomme qui demande un ascenceur, n'a qu'un bouton
    Pour chaque ascenseur, 4 variables :
    - Le sens (Haut ou Bas)
    - Un entier : l'étage le plus haut demandé
    - Un entier : l'étage le plus bas demandé
    - Un ensemble d'entiers représentant les étages ou doit s'arrèter l'asenceur (ou un ensemble de bits sur un octets, ou deux ou quatres selon le nombre d'étages)
    --> si quelqu'un appuie sur un bouton d'étage (le bonhomme est dans l'asenceur), on rajoute l'étage dans l'ensemble de l'ascenseur ou le bonhomme se trouve.
    --> si quelqu'un appelle un ascenceur (le gusse n'est pas encore dans un ascenceur), les ensembles de tous les ascenseurs sont mis à jour avec cet étage
    --> Un ascenseur qui n'a plus d'étage dans son ensemble, ne bouge plus
    --> Un ascenceur qui possède un ensemble non vide, bouge. Si il reçoit son premier ordre on détermine dans quel sens l'asenceur doit se déplacer (Haut ou Bas)

    A partir de là :
    1) L'ascenceur démarre dans une direction (Haut par exemple).
    2) L'ascenceur arrive à un étage de son ensemble :
    --> l'ascenseur s'arrête à l'étage
    --> on retire cet étage de tous les ensembles de chacun des ascenceur
    --> l'ascenceur continue sa route jusqu'à atteindre l'étage le plus haut qui lui était demandé, à partir de là si il y a encore des étages à desservir, l'assenceur repart vers le bas, jusqu'à son point le plus bas (retour en 1 mais dans l'autre sens donc)

    Pour un système d'ascenseur à deux boutons d'appels, je coderais les étage en les numérotant de 10 en 10 :
    RDC : 0
    1er : 10
    2ème : 20
    etc...

    le chiffre des unités indiquant si l'ascenseur doit s'arrêter :
    - quand il monte : 2 (cas ou une personne à appelé l'ascenceur pour monter)
    - peu importe quand : 1 (cas ou la personne à appuyé sur le bouton dans l'ascenseur, le bonhomme à demandé un étage)
    - quand il descend : 0 (cas ou une personne à appelé l'ascenceur pour descendre)

    Si l'ascenseur s'arrête au 3ème (étage 3X) parce que l'étage 31 est dans son ensemble (cas ou la personne à appuyé sur le bouton dans l'ascenseur)
    --> si il descend, on supprime les étages 30 des ensembles de tous les ascenceurs
    --> si il monte, on supprime les étages 32 des ensembles de tous les ascenceurs

    je crois que ça devrais le faire

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Par défaut
    Bonjour,

    j'ai trouvé très intéressant votre point de vue Wasakol, car je suis pas très bon pour faire une machine d'état et encore moins faire une machine d'état dynamique.

    je suis actuellement sur un projet de gestion de 2 ascenseur. le type de ces ascenseur est : "ClassicBetter", c'est-à-dire, Si une personne est au dernière étage et qu’elle souhaite descendre, l’ascenseur s’arrêtera à tout les étage ou l’on a cliqué pour la descente. Sinon, il continue sa route. et l'appel de l'ascenseur est a double entrée, un clignotant pour monter et un pour descendre.

    http://img195.imageshack.us/img195/3050/ascenseur1.png [Interface de test]

    Le projet est fait sur du Delphi 5 (oui encore la version 5...), et j'ai plusieurs questions vis a vis de que vous avez répondu dans le post.

    Vous faites un record ?

    tel que :

    TAscenseur = record
    Sens : integer; // 1 = monte, 0 = descend
    MaxStairs : integer;//l'étage le plus haut demandé
    MinStrairs : integer;//l'étage le plus bas demandé
    Etages : integer;//représentant les étages ou doit s'arrêter l'ascenseur
    end;


    Par la suite il faudra crée un tableau a 2 entrées car il y a 2 ascenseurs.

    Etat_Ascenseur: Array[0..1] of TAscenseur;

    Jusqu'a ici c'est facile, la ou ça se corse c'est pour crée le code, je me demande si je dois faire le code dans un 1 timer, ou de mettre un timer (voir 2) par étages. c'est ici ou je demande un petit conseil

    Merci d'avance

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Par défaut
    C'est bon j'ai compris

    merci merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel algorithme pour insertion d'objets "triés" da
    Par phplive dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2005, 09h27
  2. formualaire access pour gerer bases sql server
    Par attavus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 11h01
  3. Algorithme pour trier trois nombres
    Par legosam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 17/01/2005, 21h47
  4. Algorithme pour chiffres significatifs en Assembleur
    Par lutin2003 dans le forum Assembleur
    Réponses: 5
    Dernier message: 09/09/2004, 10h47
  5. [Conception] Meilleures solutions pour gérer le multilangage
    Par scorpiwolf dans le forum Général Java
    Réponses: 3
    Dernier message: 06/07/2004, 16h11

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