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 :

Optimiser la durée de fonctionnement de pompes


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Optimiser la durée de fonctionnement de pompes
    Bonjour à tous, l'algorithme porte sur le fonctionnement de pompes à eau dans une exploitation de sel de mer.
    Je dois créer un algo qui consiste à "optimiser la durée de fonctionnement des 3 pompes, en fonction du volume total de l'eau à pomper, et le débit horaire des pompes" (m^3 d'eau par heure).

    Edit: j'ai enlevé l'interface car je pense finalement qu'elle ne représente pas ce que l'algo devrait donner, ça risque d'embrouiller en fait.

    L'algorithme calcule la durée de fonctionnement de chaque pompe de façon optimisée selon ce que l'utilisateur saisit comme volume total et débit des pompes.
    Par exemple, il choisit 200 000 000 m^3 comme volume total, et 40 000m^3/h comme débit pour la pompe 1. L'algo devrait faire la division: 200 000 000 / 40 000 = 5000 heures.
    La durée de fonctionnement optimale pour la pompe 1 est de 5000 heures (puisque chaque heure, elle pompe 40 000 m^3. Pour pomper les 200 000 000 voulus, on multiplie 40 000* 5000).

    C'est le raisonnement auquel je suis arrivé après réflexion, mais pour en faire un algorithme...comme je débute en programmation, je ne trouve pas comment.

    Auriez vous une idée d'un algorithme pour ce cas?

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Dans l'image de l'interface, il y a un truc que tu n'as pas affiché, c'est le débit de chaque pompe.
    Ajoute cette information, ça t'aidera à mieux "visualiser l'exercice".
    Ceci étant, je pense qu'il te manque des données pour trouver la solution optimum. Est-ce que faire tourner la pompe n°1 pendant 10 heure, ça revient plus ou moins cher que faire tourner la pompe n°2 pendant 8 heures ? ou pendant 12 heures ?

    Quand tu auras ces infos, tu pourras commencer à bosser.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    tbc92: merci pour ta réponse tout d'abord, en fait j'ai modifié le 1er post car c'était erroné. L'algorithme ne part d'aucune donnée précise en fait, il ne connait ni le volume total, ni le débit des pompes.
    Il attend que l'utilisateur l'informe de ces données. Ensuite, à partir du volume total et du débit, il calcule la durée optimale de fonctionnement des pompes.

    Le problème maintenant, c'est de créer l'algorithme. J'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Début
    Fonction DureePompes(Duree en Entier) en Entier
    Lire VolumeTotal       //L'utilisateur saisit le volume total souhaité//
    Lire DebitPompe
    CalculDuree <= VolumeTotal/DebitPompe
    Renvoyer CalculDuree
    Fin Fonction
    C'est incomplet, ça j'en suis quasiment sur. Comment faire pour attribuer le résultat de la division à l'une des 3 pompes?

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    reprenons ce que tu as deja fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Fonction DureePompes(Duree en Entier) en Entier //<= A quoi sert Duree en Entier ?
      Lire VolumeTotal //L'utilisateur saisit le volume total souhaité//
      Lire DebitPompe
      CalculDuree <= VolumeTotal/DebitPompe
      Renvoyer CalculDuree
    Fin Fonction
    maintenant sachant que tu a trois pompe il te suffit de créer un tableau de trois éléments et de le remplir avec ta fonction DureePompes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Pompes : Tableau[1..3] Entier
      Pour tout indice i de 1 a 3 Faire 
        Pompes[I] =  DureePompes();
    pour chaque pompes tu as donc affecté le résultat voulue
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    D'accord! J'ai remplacé la variable "Duree" par "CalculDuree" du coup, je crois que c'est ce qu'il faut mettre comme paramètre.
    J'ai aussi modifié un peu le pseudo-code pour certaines raisons, je ne sais pas si c'est correct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Début
    Fonction DureePompes(CalculDuree en Entier) en Entier
    Lire VolumeTotal
    Lire DebitPompe
    CalculDuree <= VolumeTotal/DebitPompe
    Renvoyer CalculDuree
    Fin Fonction
     
    Fonction main()
    Pompes Tableau[1..3] en Entier
    Pour i <= 1 à 3
    Pompes[i] <= DureePompes(CalculDuree)
    Fin Fonction
    Fin
    Quand on appelle la fonction DureePompes dans le main, on envoie la variable CalculDuree comme paramètre. Est-ce que c'est bien ça?

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Différentes choses sont 'discutables'. Le truc qui me gène le plus, c'est en ligne 13 : FIN Fonction. J'aurais plutôt vu FIN Boucle.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Je crois qu'il nous manque des éléments ...

    Supposons qu'on cherche à pomper un volume d'eau V.
    Nous disposons de 3 pompes de débits D1 >= D2 >= D3.

    1. Si on ne peut utiliser qu'une seule pompe : il suffit alors d'utiliser la pompe la plus puissante pendant une durée V/D1.
    2. Si on peut utiliser toutes les pompes : on utilise les trois pompes pendant une durée V/(D1+D2+D3).


    Cordialement

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    En fait le but est d'afficher la durée pour les 3 pompes qui fonctionnent en même temps. Si l'utilisateur indique un débit de 20 000 pour la pompe 1, 30 000 pour la pompe 2 et 40 000 pour la 3, eh bien le logiciel doit proposer la durée de fonctionnement optimale pour les 3 pompes selon le volume total(qui est le même pour tous forcément).

    Mais l'algorithme m'embrouille trop, j'essaye d'abord de compiler un programme en C pour voir s'il est bon. Même si l'algo est prévu pour être traduit en C, je pense faire le contraire car je n'ai pas la méthode pour l'algo. J'ai essayé un programme qui donne ça finalement:

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int TotalEau;
    int DebitPompes;
    int i;
     
     
    int DureePompes(int VolumeTotal, int Debit)
    {
    return VolumeTotal / Debit;
    }
     
     
    int main()
    {
    printf(" Saisir le volume total ") ;
    scanf("%d", &TotalEau);
    for (i=0 ; i < 3; i++)
    {
    printf(" Saisir le debit horaire ") ;
    scanf("%d", &DebitPompes);
    }
    printf("duree %d", DureePompes(TotalEau, DebitPompes));
    return 0;
    }

    Le programme est presque bon: il calcule uniquement la durée pour le dernier débit (pour la 3ème pompe). Je ne sais pas comment lui faire afficher les 3 résultats.
    J'ai essayé en utilisant DebitPompes comme un tableau(DebitPompes[2], de 0 à 2), en vain. Est-ce que c'est possible de renvoyer un tableau comme paramètre? et comment?

    Si quelqu'un peut m'aider la-dessus, je n'aurais plus de problème pour connaitre mon algorithme, je me débrouillerais tout seul après.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Une méthode main ne peut pas renvoyer un tableau. Elle renvoie un code de sortie système.

    Pour afficher les trois résultats, il suffit de déplacer l'accolade fermante de la boucle for en dessous du printf.

    Cordialement.

Discussions similaires

  1. [XL-2010] Comment optimiser le temps de fonctionnement d'une macro
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/02/2016, 09h15
  2. [XL-2010] Comment optimiser le temps de fonctionnement d'une macro
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/12/2015, 00h29
  3. Pb d'optimisation (durée d'exe trop longue)
    Par lucas67 dans le forum C#
    Réponses: 7
    Dernier message: 26/08/2008, 10h23
  4. Durée fonctionnement programme
    Par philippe30 dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2005, 22h26

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