Inscription / Connexion Nouveau Sujet
Niveau exercices
Partager :

Le dépôt de bus

Posté par
LittleFox
19-02-24 à 18:45

Inspiré du post de flight simulation trajet bus

Chaque jour, les bus partent du dépôt à vide.
À chaque arrêt, chaque passager a une chance sur cinq de descendre. Et des 16 personnes qui attendent à l'arrêt, chacune a une chance sur deux d'essayer de monter dans le bus.

1) En moyenne, combien de personne seront dans le bus après un grand nombre d'arrêts?
2) Quelle est cette moyenne en fonction du nombre d'arrêts effectués?

Si mes bus sont limités à 45 passagers et mes trajets limités à 25 arrêts:
3) En moyenne combien de personnes auront étées empêchées de monter dans le bus par manque de place?
4) Quelle doit être la taille minimale de mes bus pour qu'il y ait moins de un trajet sur cent où au moins une personne est empêchée de monter.

Le dépôt de bus

Posté par
Imod
re : Le dépôt de bus 19-02-24 à 19:16

Bonjour LittleFox

Puis-je ajouter que la participation de Flight est obligatoire ?

Un peu saturé , personnellement je ferai l'impasse

Imod

Posté par
LittleFox
re : Le dépôt de bus 20-02-24 à 09:52

Bien sûr qu'elle est obligatoire
Hein flight

Posté par
candide2
re : Le dépôt de bus 20-02-24 à 14:51

 Cliquez pour afficher

Posté par
flight
re : Le dépôt de bus 20-02-24 à 15:38

salut à tous

question sur cet enoncé "16 personnes qui attendent à l'arret "   veux dire qu'on a toujours 16 personnes à chaque arrêt ?

Posté par
LittleFox
re : Le dépôt de bus 20-02-24 à 15:47

@candide2
1) Correct. C'est plus qu'une estimation. Non?
Je suis curieux de voir ta simulation.
Sur 10^5 voyages de 100 arrêts, ma simulation donne un nombre beacoup plus proche de la moyenne (<0.05% d'erreur).
Et mes min et max sont de l'ordre de 17 et 69. Qu'appelles-tu "dispersion"?

2) Pour les deux premières questions, il n'y a pas de limite sur le nombre de passagers ni sur le nombre d'arrêts.
On sait d'au départ du dépôt la moyenne est de 0 passagers et on connait la moyenne pour un grand nombre d'arrêts (question 1).
Je voudrais la moyenne après 1,2,3, ... arrêts (la courbe rouge dans le graphique de l'énoncé).

3) Oui, voilà. Chaque trajet fait 25 arrêts. Et le bus est limité à 45 passagers.
En moyenne (sur un nombre infini de trajets) combien de personnes (par trajet) auront été empêchées de monter dans le bus par manque de place?
Je n'ai pas la réponse exacte. Seulement une estimation par simulation.
Les courbes en bas du graphique de l'énoncé représentent le nombre de passagers qui n'ont pas pu monter à chaque arrêt sur chaque trajet.

Posté par
LittleFox
re : Le dépôt de bus 20-02-24 à 15:48

@flight
Oui, on a toujours 16 personnes à chaque arrêt. Mais elles ne prennent pas toutes ce bus-ci

Posté par
candide2
re : Le dépôt de bus 20-02-24 à 17:23

@LittleFox

Question 1:

Copie de mon programme de simulation à gauche et résultats à droite.

NB: j'ai ici fait 10 groupes de 250000 arrêts au lieu de 1000000 pour gagner un peu de temps ...

Dans ce groupe de mesure, le résultat min est 32 et le max est 47, la moyenne de ces 10 résultats est 40,2

Le dépôt de bus

Posté par
candide2
re : Le dépôt de bus 20-02-24 à 19:14

 Cliquez pour afficher

Posté par
candide2
re : Le dépôt de bus 20-02-24 à 19:26

 Cliquez pour afficher


Le dépôt de bus

Posté par
flight
re : Le dépôt de bus 20-02-24 à 22:02

pour répondre à la première question , je propose  d'ecrire avec bn , le nombre de voyageur se trouvant dans le bus à l'arret apres mouvements de montées et descentes ; que  
bn= 8 + (4/5).bn-1 ,  avec b0=0
la resolution de cette suite avec le chgt de variable  bn=Un+40  donne : bn= -(4/5)(b0-40) + 40  soit  :
bn= 40.(1-(4/5)n)  en pssant à la limite n -> infini
b tend vers  40

Posté par
flight
re : Le dépôt de bus 20-02-24 à 22:04

la fomule trouvée pour bn  pourrait répondre à la question ?

Posté par
flight
re : Le dépôt de bus 20-02-24 à 22:04

question 2

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 09:22

 Cliquez pour afficher

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 09:29

 Cliquez pour afficher

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 09:37

 Cliquez pour afficher

Posté par
LittleFox
re : Le dépôt de bus 21-02-24 à 11:07

@candide2

1) Ok donc c'est 10 voyages de 250000 arrêts qui sont simulés. Et pas 10^6 voyages. Ça explique la faible précision.
Tu vois à la question 2 que la moyenne converge très vite en fonction du nombre d'arrêts. Pas besoin de faire 250000 arrêts. C'est pourquoi je ne fais que 100 arrêts. Mais 10^5 voyages.

2) Ça à l'air correct. Est-ce que tu peux donner la formule utilisée dans ton excel?

3) C'est un peu bas. Est-ce que tu sais donner un peu plus de détails (nombres de voyages testés, variance, ...)?

4) On peut même descendre un peu. Pour référence, pour un bus de 45 places, 51% des voyages doivent refuser au moins un passager.


@flight

1) Donc b_n est "le nombre moyen de voyageur se trouvant dans le bus à l'arret n".
40 est correct.
J'avais une autre approche: A l'équilibre le nombre de voyageur moyen qui montent est égal au nombre de voyageur moyen qui descendent.
8=(1/5)b_\infty \Rightarrow b_\infty = 8*5 = 40.

2) Tu n'utilises pas ton changement de variables (ou en tout cas tu ne l'écris pas).
Mais c'est correct, b_n = 40(1-(4/5)^n)

Posté par
flight
re : Le dépôt de bus 21-02-24 à 11:41

pour la suite je propose la simulation suivante , en considerant que si le bus est plein à l'arret "s" il ne prend pas de voyageurs mais peut se retrouver à un arret ulterieur dans une situation normale ou des voyageurs peuvent monter , c'est à dire donc avoir des cas de saturations que sur certaines stations , le but de mon code est de trouver le nombre de voyageurs penalisés qui souhaitaient monter sur un trajet de 25 stations .

Sub trajet_montée_decsente()
Randomize
e = 0
q = 0
Do
e = e + 1 'nombre d'essais pour l'experience de desserte
n = 0 'nombre de voyageurs au depart de la ligne
s = 0 'compteur de stations
m = 0 'nombre de voyageurs qui souhaitaient monter mais qui n'ont pas pu:

 Do
    s = s + 1
     'descente:
     
      If n > 0 Then 'descente possible si le bus contient au moins un voyageur
        For d = 1 To n
          p = Rnd
            If p >= 0 And p < 1 / 5 Then
              n = n - 1
             End If
        Next
      End If
      
      
    'montée :
    If n = 45 Then 'bus plein , personne ne monte à cet arret
      'on cherche ensuite le nombre de voyageurs qui souhaitaient monter mais qui n'ont pas pu:"
           For j = 1 To 16
              p = Rnd
                If p >= 0 And p < 1 / 2 Then
                m = m + 1  ' compteur de voyageurs pénalisés
           End If
        Next
      
      Else
      
       For m = 1 To 16
         p = Rnd
          If p >= 0 And p < 1 / 2 Then
            n = n + 1
           End If
        Next

    End If
    

  Loop Until s = 25 'arrêts à desservir
   
      q = q + m 'cumul du nbr  des voyageurs qui ne pouvait monter "bus plein"
          
  Loop Until e = 10000  
  
  MsgBox q / e  'moyenne du nombre du nbr de voyageurs qui souhaitaient monter mais qui n'ont pas pu sur un trajet de 25 arrets:"
 
End Sub


ce code me retourne en moyenne 17 voyageurs pénalisés sur un trajet de 25 stations

Posté par
LittleFox
re : Le dépôt de bus 21-02-24 à 11:58

@flight

Est-ce que tu peux blank ton code? Pour garder le fil visible.

3) Si le bus a moins de places (après les descentes)  que le nombre de personnes qui veulent monter, certaines devront être refusées. Et pas seulement quand le bus est plein.
Cependant, 17 personnes refusées par voyage me semble beaucoup trop élevé.

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 14:37

 Cliquez pour afficher


Le dépôt de bus

Posté par
flight
re : Le dépôt de bus 21-02-24 à 15:05

effectivement littlefox merci  , j'ai omi ce detail , je vais reprendre mon code

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 16:18

 Cliquez pour afficher

Posté par
LittleFox
re : Le dépôt de bus 21-02-24 à 17:08

@candide2
4) Quasi correct C'est bien un bus de 56 places qu'il faut.

Attention que tu fais 50001 voyages (de 0 à 50000) mais que tu divises par 50000

Tu peux utiliser du formatting pour éviter les ...00003

print (f"Car de {max} places : {total/k :.3%} des voyages ont refuse des voyageurs.")
Ici, j'ai utilisé '.3%' qui signifie un poucentage avec 3 décimales de précision.


3) Ce n'est pas correct

Tu as la même erreur de faire 10001 voyages mais de diviser par 10000 pour avoir la moyenne.

Pourquoi ton bus a une capacité de 46 au lieu de 45
Attention que si les passagers n'ont pas pu monter dans le bus, alors il ne sont pas dans le bus

if Pass > 45:
    total += Pass - 45
    Pass = 45

Posté par
candide2
re : Le dépôt de bus 21-02-24 à 19:06

 Cliquez pour afficher

Posté par
flight
re : Le dépôt de bus 21-02-24 à 19:45

voici une correction , pour 25 arrets :  

 Cliquez pour afficher

Posté par
flight
re : Le dépôt de bus 21-02-24 à 20:08

pour la derniere question , recherche de la capacité du bus pour répondre aux contraintes :

 Cliquez pour afficher

Posté par
LittleFox
re : Le dépôt de bus 22-02-24 à 09:24

@candide2

Dans ton code il manque la remise du nombre de Pass à 45


@flight

Ton code me semble correct
Note qu'il n'y a pas besoin de séparer le cas bus plein. On a simplement

up = 45 - n = 0
.
Note aussi que Rnd est toujours >= 0. Pas besoin de le tester.

4) C'est correct

Posté par
LittleFox
re : Le dépôt de bus 22-02-24 à 09:30

Merci à tous les deux pour votre participation

Pour référence voici mon code:

 Cliquez pour afficher


Je me suis compliqué la vie en calculant tous les voyages d'un coup avec numpy mais c'est rapide

Et la sortie:
Mean number of passengers after 100 stops: 40.00696.
Mean number of passengers at each stop: [ 0.       7.9941  14.39496 19.51566 23.62136 26.90675 29.52662 31.62617].
Mean number of passengers refused after 25 stops: 2.67154.
Capacity: 50, travels with refused passengers: 12.787%.
Capacity: 51, travels with refused passengers: 8.765%.
Capacity: 52, travels with refused passengers: 5.899%.
Capacity: 53, travels with refused passengers: 3.767%.
Capacity: 54, travels with refused passengers: 2.333%.
Capacity: 55, travels with refused passengers: 1.393%.
Capacity: 56, travels with refused passengers: 0.832%.
Capacity: 57, travels with refused passengers: 0.492%.
Capacity: 58, travels with refused passengers: 0.285%.
Capacity: 59, travels with refused passengers: 0.140%.
Elapsed time: 12.74s

Posté par
flight
re : Le dépôt de bus 22-02-24 à 11:04

je n'ai fait qu'honorer la demande de Imod

Posté par
candide2
re : Le dépôt de bus 22-02-24 à 11:13

Bonjour,

"Dans ton code il manque la remise du nombre de Pass à 45"

ben oui, elle y était dans mon premier message sur cette question ... où j'avais trouvé 1,92 et puis disparue dans les modifs pour faire les autres questions par modif de code.  

Mais dans ma première réponse (1,92) j'avais mis 46 occupant au lieu de 45...

En remettant 45 , la réponse est alors : 2,66

Posté par
Imod
re : Le dépôt de bus 22-02-24 à 11:42

flight @ 22-02-2024 à 11:04

je n'ai fait qu'honorer la demande de Imod


C'était un peu d'humour

D'un autre côté s'il est bien de proposer beaucoup de problèmes ( un peu trop orientés proba à mon goût ) la réciprocité n'est pas mal non plus , il est parfois bon de renvoyer la balle à ceux qui font que tes sujets vivent un peu .
Je dis ça je dis rien , j'ai une fâcheuse tendance à préférer mes problèmes à ceux des autres

Imod



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !