Rechercher : dans
Par :

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

Dernière réponse le 10 mar 2008 à 00:53:17 totorleplusfort, le 29 jan 2007 à 02:03:29 
 Signaler ce message aux modérateurs

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

1

pom, le 29 jan 2007 à 11:01:33

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

Répondre à pom

2

chat_teigne, le 31 jan 2007 à 14:14:41

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+

Répondre à chat_teigne

3

Reivax962, le 31 jan 2007 à 17:04:34

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

Répondre à Reivax962

4

totorleplusfort, le 1 fév 2007 à 05:48:31

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!

Répondre à totorleplusfort

5

plop!, le 1 fév 2007 à 06:50:38

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 ?

Répondre à plop!

6

Reivax962, le 1 fév 2007 à 10:01:33

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

Répondre à Reivax962

9

plop!, le 1 fév 2007 à 18:34:08

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.

Répondre à plop!

7

Char Snipeur, le 1 fév 2007 à 13:19:33

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. Salutation !
Char Snipeur

Répondre à Char Snipeur

8

totorleplusfort, le 1 fév 2007 à 14:33:18

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?

Répondre à totorleplusfort

10

plop!, le 2 fév 2007 à 00:18:58

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.

Répondre à plop!

11

pipi, le 9 mar 2008 à 16:04:09

Dans la classe de Mélissa im y a 35 éléves dont 15 filles .

Combien y a t-il de garçons ?

Répondre à pipi

12

 Plop!, le 10 mar 2008 à 00:53:17

A peu près 20, dont 9,7 qui font caca

Répondre à Plop!