Probleme de math calcul duree d'execution!!!!

Fermé
totorleplusfort Messages postés 2 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 1 février 2007 - 29 janv. 2007 à 02:03
 sisoi - 23 déc. 2010 à 22:37
bonjour voici mon probleme:

A quel heures les 600 pieces seront terminées. Sachant qu'un ouvrier fabrique en moyenne 90 pieces/h. et que les ouvriers plannifiés a l'excution de cette tache le sont de cette maniere:

Ouvrier 1: commence le travail a 10:00 et fini a 18:00
Ouvrier 2: commence le travail a 12:00 et fini a 14:00
Ouvrier 3: commence le travail a 11:00 et fini a 15:00

L'objectif est de trouve une (ou plusieur) formule qui permet de calcul la duree exact de cette tache. Cela fait maintenant 3 semaines que je cherche et je n'arrive toujours pas a trouve! l'objectif final etant de final etant de faire un programme sous excel.

Merci d'avance de votre aide
A voir également:

7 réponses

Salut,

à midi, l'ouvrier 1 a construit 180 pièces (2*90) et l'ouvrier 3 en a construit 90. Donc à midi, il y a eu 270 pièces de construites.

600-270 = 330.

En 1 heure, les 3 ouvriers construisent 270 pièces donc pour construire les 330 pièces il faut 330/270 = 1.222 heure c'est-à-dire 73 minutes (environ)

Donc le travail sera fini à 13h13

CQFD
2
chat_teigne Messages postés 15596 Date d'inscription mercredi 27 février 2002 Statut Modérateur Dernière intervention 27 janvier 2020 1 559
31 janv. 2007 à 14:14
Copie du message de totorleplusfort (mardi 30 janvier 2007 à 21:53:00)

je suis tout a fait d'accord avec toi, le seul petit hic c qu'il faut que j'en tire une ( ou des)formule valable pour les cas de figures: changement du nombre de piece a faire mais aussi changement du planning. 

Dans tous les cas j'apprecie ton aide


Ce message était posté en dehors du post initial.
A+
1
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
31 janv. 2007 à 17:04
En fait, tu veux un algorithme plutôt qu'une formule, non ?
Une formule unique ne peut pas exister...

Voilà ce que je te propose.

La fonction f(t) qui donne le nombre de pièces construites au temps t est une fonction affine par morceaux : sa représentation serait une suite de segments connexes.

Soit la fonction g(t) qui donne, à un instant t, le nombre d'ouvriers en oeuvre. Soit A le rythme de confection des pièces.
A tout moment, la dérivée f' de f est telle que f'(t) = g(t)*A (en prenant t en heures)

Il n'est pas trop compliqué de définir g(t) : c'est une fonction par palliers, qui vaut 0 à t=0, dont la valeur augmente de 1 chaque fois qu'un ouvrier arrive et diminue de 1 quand un ouvrier part.

Décrivons tout cela de façon informatique (je ne prétends pas optimiser la complexité de l'algorithme)

Définissons un objet HEURE.
HEURE contient deux valeurs :
- H, qui est l'heure en elle-même,
- Type, qui vaut +1 si c'est une heure d'arrivée, et -1 si c'est une heure de départ.

Soit PALLIERS() la liste ordonnée des HEURE de rotation (donc, toutes les heures de début et toutes les heures de fin)

Soit la fonction g, qui prend en paramètre une heure, et renvoie un nombre.
g(T) :
{
  renvoie (somme de HEURE.Type pour toutes les HEURE où HEURE.H < T)
}
Soit la fonction heureFinale(), qui fait ce que tu veux. Elle prend un argument entier (le nombre d'objets), et renvoie l'heure où c'est atteint.
heureFinale(QTE) :
{
  PiecesCreees = 0;
  HeurePrecedente = 0;
  Pour chaque PIVOT dans PALLIERS()
  {
    PiecesCreeesDuPallier = A*g(PIVOT.H)*(PIVOT.H-HeurePrecedente);
    SI (PiecesCreees + PiecesCreeesDuPallier >=QTE)
    {
      Renvoie (PIVOT.H + (QTE-PiecesCreees) / (A*g(PIVOT.H)) )
    }
    HeurePrecedente = PIVOT.H
    PiecesCreees = PiecesCreees + PiecesCreeesDuPallier
  }
  Renvoie -1
}
Pfiou, voilà :)
Tout le problème me semble formalisé. Le principe, donc, globalement : parcourir toutes les heures "spéciales" dans l'ordre, et ajouter à chaque fois la quantité produite : quand on dépasse, on regarde plus précisément pour trouver le moment où cela a dépassé.

Si tu a un langage précis dans lequel tu veux que je traduise l'algorithme, ça peut se faire.

En espérant t'avoir plus aidé que saoûlé ;)

Xavier
1
totorleplusfort Messages postés 2 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 1 février 2007
1 févr. 2007 à 05:48
j'avoue que ton niveau en math et en informatique m'impression! Mais malheursement j'ai pas tout compris, d'ailleur je ne pensais pas que mon probleme etait de ce niveau la! le truc comme je le dit precedement c qu'il faut que je rentre tout cela sur excel (et moi qui penser avoir un bon niveau sous excel). pour le moment ma feuille excel ressemble assez a l'ennoncé (avec des calcul en plus mais qui ne peuvent que compliqué le probleme).

Donc le probleme pour moi c de traduire l'algorithme ( et le programme que tu as trouvé) sous un language que excel peux comprendre!

Voila, je suis tres reconnaissant de ce que tu as fait pour moi! ET te redit houaou pour cette demonstration!
0
plop! Messages postés 54 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 16 mai 2007 27
1 févr. 2007 à 06:50
MMh, sous excel, en VB script alors ?

Je vois que les heures sont toutes entières, je présume que les minutes n'interviennent pas ! Donc il n'y a que 24h dans la journée.

Je te le fais en vieil algo. Particularité : O.debut c'est l'heure ou commence l'ouvrier, et .fin ... t'a compris. Les variables commencent par $ (overdose de PHP) :

$Nb = pièces à produire
$Rendement = pièces / heure
Pour $H allant de 0 à 24
    Pour chaque ouvrier $O
        Si $H >= $O.debut && $H < $O.fin
        Alors $Nb = $Nb - $Rendement
    FinPour
    Si $Nb <= 0 Aller à FIN
FinPour
FIN:
Les pièces sont prêtes à l'heure $H


Tu dira pas que c'est moi qui t'ai aidé hein ?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 févr. 2007 à 10:01
Ta solution masque quand même le fait que si les employés arrivent à heure pile, l'heure de fin du travail peut ne pas être sur une heure "pile" ! Ca dépend un peu de ce dont on a besoin... Mais au moins, c'est simple et clair :)
Un peu plus que mon explication :p
1
plop! Messages postés 54 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 16 mai 2007 27
1 févr. 2007 à 18:34
Ton explication est parfaite, et c'est ce que j'aurai fait également ; mais vu le problème, je me suis dit que son prof n'en attendait pas autant... je me trompais.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
1 févr. 2007 à 13:19
Salut.
l'on fait remarquer les autres, c''est simplement l'intégrale de la fonction de production. la fonction de production, c'est N(t)*D où N est le nombre d'ouvier et D le débit du travail. Donc, le nombre de piece produite c'est :
NP=int_0^t(N(t).dt)
l'inconnue est t, et comme N est une fonction discontinue, il est impossible de résoudre exactement, ou alors seulement si le nomre d'ouvrier reste constant sur la tranche horaire considérer.
0
totorleplusfort
1 févr. 2007 à 14:33
salut,

encore quelques petites choses:

-malheureusement non les ouviers ne commence pas forcement a l'heure pile (cela varie de 5 minutes en 5 minutes).

-"l'inconnue est t, et comme N est une fonction discontinue, il est impossible de résoudre exactement, ou alors seulement si le nomre d'ouvrier reste constant sur la tranche horaire considérer. " ben alors pourquoi en cherchant heure par heure on arrive a trouve le resultat?
0
plop! Messages postés 54 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 16 mai 2007 27
2 févr. 2007 à 00:18
Ooooh....

Ce que Char Sniper veut dire par "impossible" c'est que la solution de l'intégrale est impossible à déterminer sous forme de fonction [ f(probleme) = solution ].
Donc il faut nécessairement un algorithme pour résoudre cette intégrale.

Il faut utiliser la solution des pivots, qui est excellente.
0
dans la classe de Mélissa im y a 35 éléves dont 15 filles .

Combien y a t-il de garçons ?
0
A peu près 20, dont 9,7 qui font caca
0
il mettra 73 heures je crois
0