Aan de slagGa gratis aan de slag

Transportatiemodel: modelinputs definiëren

Laten we alles samenbrengen en alle modelcomponenten bouwen.

Je bent gevraagd de verkeerslichten van de stad Chicago te optimaliseren om de verkeersdoorstroming te verbeteren. In dit soort situaties is een discrete-evenementensimulatie heel nuttig.

De eerste stap is het meten van de gemiddelde lengte van wegen tussen kruispunten. Je hebt geconcludeerd dat die gemiddeld 100 meter is met een standaarddeviatie van ongeveer 20 meter. Dat betekent dat een bestuurder naar verwachting elke 80–120 meter een verkeerslicht tegenkomt.

De snelheidslimiet in Chicago is 30 mph (ongeveer 50 km/u). De stadsambtenaren gaven aan dat het licht gemiddeld tot 90 seconden op rood blijft staan. Begin met het definiëren van de inputs en outputs van je model.

Deze oefening maakt deel uit van de cursus

Discrete Event Simulation in Python

Cursus bekijken

Oefeninstructies

  • Stel het gemiddelde en de standaarddeviatie in van de array inputs["Dist_between_intersections_m"].
  • Pas de Gauss-verdeling toe om waarden voor RandomGener["Distance"] te genereren.
  • Pas een willekeurige methode toe om gehele getallen te genereren voor RandomGener["WaitTime"].

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Define the model inputs
inputs = {"Dist_between_intersections_m": [____, ____],
    	  "Speed_limit_ms": 50 * 1000 / (60 * 60),
          "Max_waitTime_traffic_lights_sec": 90}
random_generated = {"Distance": [], "WaitTime": []}

for i in range(5000):
	# Use the random package to generate pseudo-random values
    random_generated["Distance"].append(random.____(inputs['Dist_between_intersections_m'][0],inputs['Dist_between_intersections_m'][1]))
    random_generated["WaitTime"].append(random.____(0, inputs['Max_waitTime_traffic_lights_sec']))

# Plot the randomly generated distance "events"
plt.hist(random_generated["Distance"], bins=100)
plt.xlabel('# Events')
plt.ylabel('# Distance travelled (m)')
plt.show()
Code bewerken en uitvoeren