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 :

Détermination de la nomenclature (bill of materials)


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Détermination de la nomenclature (bill of materials)
    Bonjour tout le monde,

    Je suis invité à modéliser cette situation :
    un produit 'X' ,dont la fabrication est très compliquée, se compose de plusieurs semi-produits ( des dizaines qui différent d'un modèle à l'autre), et chaque semi produit se compose d'une recette bien exacte de plusieurs matières premières (des dizaines de matières premières qui différent d'un modèle à l'autre).
    L'entrée du programme que je dois réaliser, c'est la quantité du produit fini à produire de chaque modèle( par exemple 1000 du modèle X1, 500 du modèle X2 ...)
    La sortie, c'est qu'est ce que chaque département doit fournir ( de matières premières ou de semi produits) pour aboutir la quantité voulu du produit fini.
    Je vous demande s'il y a une idée, un algorithme connu qui traite ce problème, le paradigme de programmation adéquat ( programmation fonctionnelle ou Orienté objet..)

    Merci d'avance

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    En fait, la plus grande difficulté, c'est de bien représenter les données, avec toutes les dépendances. Ensuite, tu fais une propagation du nombre de pièces voulues à la sortie, tu détermines ce dont tu as besoin pour y arriver, ce qui peut nécessiter un certain nombre de tours. Une petite arborescence orientée objet et c'est fini ! Juste des additions, en effet.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    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 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut ,

    c'est effectivement au final une bête addition tout comme l'est une multiplication
    pour en revenir au sujet cela s'apparente a de la gestion de stock

    dans ton cas il Faut partir de ton produit fini
    le décomposé en sous produit si le sous produit ce décompose refaire la décomposition jusqu’à atteindre
    l'unité atomique que tu désire
    Imaginons une pièce A
    A = (B+C)
    B = (D+C)
    C = (E+D)

    on remarque dans cette exemple que les unités atomique sont E et D
    ce qui implique que
    B = (D+E+D) = 2D+E
    A = 2D+E+E+D
    A = 3D+2E
    si tu désire 500 pièces A il te faudra donc commander,Faire
    500*(3D+2E)=> 1500D+1000E

    ceci est valable pour toutes tes pièces
    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

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Décomposer en quantités atomiques n'est pas tout à fait suffisant, puisqu'il faut connaître le nombre de produits semi-finis également, c'est-à-dire qu'il faut connaître les étapes intermédiaires.
    Donc je dirais que la solution de doucourou répond mieux au besoin exprimé; néanmoins une arborescence objet n'est triviale que dans le sens des informaticiens, c'est-à-dire qu'on n'a pas envie de l'expliquer ou qu'on prend les débutants pour des développeurs confirmés.

    Pour un algorithme simple mais pas très réfléchi, je ferais la chose suivante:

    H est une hashtable <produit, quantité>
    LF est une liste contenant les produits finis demandés

    1. Tant qu'il y a des éléments dans la liste:
    2. on extrait le premier/ le dernier élément
    3. on incrémente la quantité dans la hash_table
    4. si ce n'est pas un produit atomique (matière première) on place les ingrédients dans la liste des produits à fournir
    5. et on recommence.


    Maintenant il est possible aussi que l'énoncé soit un peu plus compliqué (cela expliquerait la perplexité de leFuturiste) et qu'il faille modéliser les flux entre les différents départements: non seulement combien d'unités je produis mais à qui je dois les transmettre.

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    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 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    pour les élément intermédiaire ce n'est pas bien compliqué

    reprenons l'exemple

    A = (B+C)
    B = (D+C)
    C = (E+D)

    imaginons que nous avons 30 sous produit B
    et 40 sous produit C

    donc on a 40C + 30C + 40D => 70C+40D
    =>70E+70D+40D => 70E+110D
    on avais 1500D+1000E
    il reste a faire 1500D-110D = 1390D
    1000E-70E =9930E
    il faut donc commander 1390D et 9930E
    ensuite il de refaire l'inverse pour retrouver les sous produits
    je pense qu'il est plus facile de détailler aux éléments atomique et ensuite refaire la répartition ce qui éviteras des manques et des possibilité de recommandes beaucoup plus fin mais ce n'est que mon opinion
    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

Discussions similaires

  1. Requête sql pour bill of material
    Par gnain dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/11/2014, 09h56
  2. Déterminer le CPUID
    Par ZuZu dans le forum Assembleur
    Réponses: 9
    Dernier message: 21/05/2008, 13h09
  3. Réponses: 5
    Dernier message: 25/03/2003, 17h27
  4. déterminer la version de Winsock installée
    Par BlueX_scf dans le forum Web & réseau
    Réponses: 7
    Dernier message: 24/02/2003, 10h23
  5. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27

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