import matplotlib
if not hasattr(matplotlib.RcParams, "_get"):
matplotlib.RcParams._get = dict.get
4.3.1: Exercises#
Important
For live code, launch Thebe by clicking on the in the toolbar. Your code edits are automatically saved in your browser. Use the button to export your progress to a file, to import a previously saved session, or to reset to the original code.
4.3.1.1: The base model#
Attention
This model is up-to-date with mesa version 3.5.0
%pip install mesa==3.5.0
%pip install seaborn
%pip install networkx
4.3.1.1.1: Understand the traffic model#
#import libraries
# Import the mesa library for agent-based modeling
import mesa
# Print the version of the mesa library being used
print("You are using mesa version: " + mesa.__version__)
from mesa import Agent, Model
# Import DataCollector directly from mesa (Mesa 3.5.0 style)
from mesa.datacollection import DataCollector
# Import pandas for data manipulation and analysis.
import pandas as pd
# Import numpy for numerical operations and array handling.
import numpy as np
# Import math for mathematical operations, particularly for circular calculations.
import math
# Note: From this exercise onwards, we will be using Seaborn in addition to Matplotlib.
# Seaborn is an extension of Matplotlib that simplifies the process of creating visually appealing plots.
# See the difference here: https://www.geeksforgeeks.org/difference-between-matplotlib-vs-seaborn/
import seaborn as sns
from matplotlib import pyplot as plt
# Enable inline plotting in Jupyter Notebook, so that plots appear directly in the notebook.
%matplotlib inline
You are using mesa version: 3.5.0
Model metrics#
# The following section defines various metrics (as functions) for the TrafficJamModel.
# These metrics are used to analyze the state of the model during and after the simulation.
# Calculate the circular distance between two positions.
# This function is useful for determining how far one car is from another on a circular track.
def calculate_distance(pos1, pos2):
# Calculate distance from pos1 to pos2 along the circle using modulo tau (2π).
return (pos2-pos1) % math.tau
# Get a list of the current speeds for all agents in the model.
def get_speeds(model):
return [round(a.speed, 3) for a in model.agents]
# Get a list of unique IDs for all agents in the model.
def get_agent_ids(model):
return [a.unique_id for a in model.agents]
# Get a list of acceleration values for all agents in the model.
def get_accels(model):
return [a.acceleration for a in model.agents]
# Get a list of deceleration values for all agents in the model.
def get_decels(model):
return [a.deceleration for a in model.agents]
# Calculate the proportion of agents that are at their maximum speed.
def get_max_speed(model):
return len([a.speed for a in model.agents if a.speed == a.max_speed]) / len(model.agents)
# Calculate the proportion of agents that are practically standing still.
def get_standing_still(model):
# Speed is never exactly 0 due to continuous deceleration.
# If an agent's speed is less than 0.001, it's considered standing still.
return len([round(a.speed, 3) for a in model.agents if a.speed < 0.001]) / len(model.agents)
# Get the model-level data collected during the simulation.
def get_model_data_collector(model):
return model.datacollector.get_model_vars_dataframe()
# Get the agent-level data collected during the simulation.
def get_agent_data_collector(model):
return model.datacollector.get_agent_vars_dataframe()
# Get the number of steps that have been executed in the model.
def get_steps(model):
return model.steps
Agent class#
# The Car class represents individual vehicles in the simulation.
# Each car has properties such as speed, acceleration, deceleration, and position.
class Car(Agent):
# These properties below calculate the x and y coordinates of the car based on its position on the circle.
@property
def x(self):
return math.cos(self.position)
@property
def y(self):
return math.sin(self.position)
# Note regarding properties: A property is a special type of attribute. It allows you to define methods that can be accessed
# like attributes. Properties are useful when you want to compute a value dynamically based on other attributes
# of the object, but you want it to be accessed in the same way as an attribute.
# In the Car class, x and y are defined as properties. This means they are computed each time they are accessed
# based on the car's current position, but they can be accessed just like regular attributes.
# In this model, we could simply use normal attributes instead (in the init), but we wanted to show you other possibilities.
def __init__(self, model, speed, acceleration, deceleration, pos):
super().__init__(model)
# Initializing agent's speed, acceleration, deceleration, and position.
self.speed = speed
self.max_speed = speed
self.acceleration = acceleration
self.deceleration = deceleration
# Lookahead distance is set as twice the current speed.
self.lookahead = 2 * self.speed
# Position of the car on the circular track.
self.position = pos
# Reference to the car directly in front of this car.
self.car_in_front = None
# This method defines the behavior of the car at each step of the simulation.
def step(self):
# If the car in front is within the lookahead distance, decelerate.
if calculate_distance(self.position, self.car_in_front.position) < self.lookahead:
speed = self.deceleration * self.car_in_front.speed
else:
# Otherwise, accelerate up to the car's maximum speed.
speed = min(self.max_speed, self.speed + self.acceleration)
# Update the car's speed and position.
self.speed = speed
self.position += self.speed
Model class#
# The TrafficJamModel class represents the overall simulation model.
# It manages the scheduling of agents and collects data during the simulation.
class TrafficJamModel(Model):
# Initialize the model with a set number of agents, average speed, acceleration, and deceleration rates.
def __init__(self, average_speed=0.1, n_agents=10,
acceleration=0.04, deceleration=0.02, seed=None):
super().__init__(rng=seed)
# Generate initial positions for all agents on the circular track.
initial_positions = np.linspace(0, math.tau, n_agents + 1)[0:-1]
initial_speeds = [self.random.gauss(average_speed, 0.02) for _ in range(n_agents)]
# Create and add agents (cars) to the model.
Car.create_agents(
self,
n_agents,
initial_speeds,
acceleration,
deceleration,
initial_positions
)
# Assign each car a reference to the car directly in front of it.
for i, agent in enumerate(self.agents):
try:
agent.car_in_front = self.agents.to_list()[i + 1]
except IndexError:
# If it's the last car (IndexError occurs), set the first car as the car in front,
# completing the circular reference for the model.
agent.car_in_front = self.agents.to_list()[0]
# Define the metrics to collect during the simulation.
model_metrics = {
"Step": get_steps,
"num_max_speed": get_max_speed,
"num_standing_still": get_standing_still
}
agent_metrics = {
"speed": "speed",
"acceleration": "acceleration",
"deceleration": "deceleration"
}
# Set up the data collector to gather data at each step.
self.datacollector = DataCollector(model_reporters=model_metrics, agent_reporters=agent_metrics)
# Collect data at step 0 (initial state of the model)
self.datacollector.collect(self)
# Execute one step of the model.
def step(self):
self.agents.shuffle_do("step")
# Collect the model data after running the step
self.datacollector.collect(self)
Having read both classes, it is worth pausing to sort out which piece of state lives where. The cards below contrast what a single Car keeps to itself with what the TrafficJamModel owns on behalf of the whole road.
position, speed and link to the car ahead to the model's ring of cars, track layout and DataCollector.Car agent or to the TrafficJamModel, then click it to flip and check.position, its speed, and a link to the one car ahead. The model knows about everyone: it holds the whole ring of cars, lays out the track, drives the schedule, and runs the DataCollector. Keeping "my own state" separate from "the whole system" is the core of the agent-versus-model split in Mesa.This division, self-state on the agent and system-state on the model, is the same split you will meet in every Mesa model in this book.
A note regarding where to define the Model/Agent Metrics
By now, you may have already noticed that sometimes we define agent/model metrics (e.g., functions/methods) inside the agent/model class and sometimes outside. What is the difference?
In Mesa, you can define model metrics (functions/methods) either inside or outside of agent and model classes. When you place a method inside a class, it becomes part of that class’s behaviour and can directly access and modify the class’s attributes using self. This is useful when the function is closely related to the internal workings of an agent or model, as it keeps the code modular and encapsulates the functionality within the relevant class.
On the other hand, functions defined outside of classes are independent and do not automatically have access to the internal state of any particular class instance. These external functions are generally more reusable, as they can be applied across different contexts by passing the necessary data explicitly as arguments. This makes them ideal for general-purpose tasks that are not tightly coupled to a specific agent or model.
In this course, most of the time there is no specific reason behind where we define these metrics, so it is often a random choice or a matter of coding preference. However, there is a difference in how we write the function and how we call it when we need to use it. Check this an previous assignments to see examples.
Below is an example of a function defined once inside and once outside the model class. This example has been used in the simple_economy model
This model reports several numbers as it runs, and the exercises keep asking you to read them. The quick matching task below makes sure each metric is paired with what it actually measures before you rely on them.
# Metric inside the class:
# class MyModel(Model):
# def __init__(self, width, height):
# self.width = width
# self.height = height
# def calculate_total_area(self):
# return self.width * self.height
# Metric outside the class:
# def calculate_total_area(model):
# return model.width * model.height
Task: convert the base model into a flow chart#
Convert the base model into a flow chart that tells a story of what is going on. You may use pen and paper for this.
Before you sketch the flow chart on paper, rehearse the logic of a single tick below. Each car runs the same four steps in a fixed order every time the model advances.
Your flow chart should capture exactly this loop: work out a new speed from the current gap, then move, repeated for every car on every tick.
Solution
To create a flowchart that represents the base traffic model, follow these steps:
Start:
Oval: Label it “Start.”
Initialise the Model:
Process Box: Label it “Initialise TrafficJamModel”
Process Box: Label it “Set initial speeds, positions, and assign cars.”
Main Loop:
Decision Box: Label it “Has the simulation ended?”
Yes Path: Connect to an oval labeled “End.”
No Path: Continue to car updates.
Check Distance:
Process Box: Label it “Calculate distance to the car in front.”
Adjust Speed:
Decision Box: Label it “Is distance less than lookahead?”
Yes Path: Add a Process Box: “Decelerate the car.”
No Path: Add a Process Box: “Accelerate to max speed.”
Update Position:
Process Box: Label it “Update car position on the road.”
Repeat Loop:
Draw an arrow from Update position back to Has the simulation ended? to show the loop continues until the simulation ends.
End:
Draw an oval labeled “End” to finish the flowchart.
Summary: Start -> Initialise TrafficJamModel -> Set parameters -> (Loop Start) Has the simulation ended? -> No -> Check distance -> Adjust speed -> Update position -> (Loop back) -> Yes -> End
Draw the flowchart: Use pen and paper or a digital tool like Lucidchart or Google Drawings.
4.3.1.1.2: Run and visualise the model#
# You do not have to understand every line in the code below. This has been prepared for you to experiment. However, it is beneficial if you understand what is going on.
# Importing necessary modules for creating animations and displaying them in Jupyter Notebook.
from matplotlib.animation import FuncAnimation
from matplotlib import animation, rc, collections
from matplotlib import pyplot as plt
from IPython.display import HTML
# Set the number of cars to be simulated.
number_of_cars = 20
# Initialize the TrafficJamModel with the specified number of agents (cars).
model = TrafficJamModel(n_agents=number_of_cars)
agents = model.agents
# Extract the initial positions of all agents (cars) as an array of (x, y) coordinates.
pos = np.asarray([[agent.x, agent.y] for agent in agents])
# Set the style of the plots using Seaborn for better aesthetics.
sns.set_style('white')
# Create a figure and axis for the animation with high DPI for better resolution.
fig, ax = plt.subplots(figsize=(5, 5), dpi=100)
# Plot the initial positions of the cars as a scatter plot.
positions = ax.scatter(pos[:, 0], pos[:, 1])
# Set the aspect ratio of the plot to be equal, ensuring circles look like circles.
ax.set_aspect('equal')
# Set the limits for the x and y axes to keep the plot centered on the origin.
ax.set_xlim(xmin=-2, xmax=2)
ax.set_ylim(ymin=-2, ymax=2)
# Remove the x and y axis ticks for a cleaner look.
ax.set_xticks([])
ax.set_yticks([])
# Define the update function that will be called at each frame of the animation.
def update(frame):
# Advance the model by one step.
# Only advance the model for frames after the initial step
if frame > 0:
model.step()
# Update the positions of the cars based on the current state of the model
pos = np.asarray([[agent.x, agent.y] for agent in agents])
# Update the scatter plot with the new positions.
positions.set_offsets(pos)
# Update the title of the plot to reflect the current time step.
ax.set(title=str(number_of_cars) + " cars on the road, t= " + str(model.steps))
return positions
# Create the animation, which will call the update function at each frame.
anim = FuncAnimation(fig, update, interval=100, frames=301) # Run for 301 frames to include step 0
# Display the animation as an interactive JavaScript player.
# to_jshtml() renders the frames with JavaScript, so it works everywhere, including live code in the browser, with no ffmpeg needed.
plt.rcParams['animation.embed_limit'] = 2**128 # allow the player to embed all frames
HTML(anim.to_jshtml())
# If you are running the notebook locally and have ffmpeg installed, you can instead render a compact HTML5 video:
# HTML(anim.to_html5_video())
# Optionally, save the animation to a video file.
# writervideo = animation.FFMpegWriter(fps=12, bitrate=900)
# anim.save("cars.mp4", writer=writervideo, dpi=200)
Exercise: describe the behaviour of the agents shown in the animation#
Please write up to five sentences in your own words:
Describe what you see in the animation.
Describe the behaviour of the agents.
What patterns, trends, or interactions do you observe throughout the simulation?
Solution
In the animation, you can see cars moving around a circular track. They adjust their speed based on how close they are to the car in front. If there’s space ahead, cars speed up, but they slow down if another car is too close, to avoid collisions. You can notice some traffic jams forming, where cars bunch up and slow down, while others further ahead keep moving smoothly. This creates stop-and-go traffic waves that illustrate the unpredictable but common behaviour of traffic flow.
You have just watched cars circle the road on their own. In the activity below you take the wheel of one of them, on a road that is clear, with no light and no crash and traffic flowing freely. Before you begin, predict what a single, momentary tap of the brake will do to the cars strung out behind you.
The moral for the exercises that follow is that the interesting behaviour of a traffic model is not in any single car but in the pattern the cars make together: a jam can exist and travel with a life of its own, even when no individual driver is doing anything unusual.
4.3.1.1.3: Explore the model behaviour#
# Let's explore the dataset and understand what the model is doing over time.
# Ensure that you have pandas version > 1.3 installed for this to work correctly.
# If you are using Vocareum, this should be fine.
# To facilitate testing and exploration, we will create a smaller dataset by running the model with fewer agents and timesteps.
# Set the number of agents and timesteps for this test run.
num_agents = 11
timesteps = 30
# Initialize the TrafficJamModel with the specified number of agents.
model = TrafficJamModel(n_agents=num_agents)
# Run the model for the specified number of timesteps.
for i in range(timesteps):
model.step()
# Retrieve the model-level data collected during the simulation.
model_data = model.datacollector.get_model_vars_dataframe()
# Retrieve the agent-level data collected during the simulation.
agent_data = model.datacollector.get_agent_vars_dataframe()
# Display the first few rows of the model_data DataFrame:
model_data.head()
| Step | num_max_speed | num_standing_still | |
|---|---|---|---|
| 0 | 0 | 1.0 | 0.0 |
| 1 | 1 | 1.0 | 0.0 |
| 2 | 2 | 1.0 | 0.0 |
| 3 | 3 | 1.0 | 0.0 |
| 4 | 4 | 1.0 | 0.0 |
# Display the first few rows of the agent_data DataFrame:
agent_data.head()
| speed | acceleration | deceleration | ||
|---|---|---|---|---|
| Step | AgentID | |||
| 0.0 | 1 | 0.089592 | 0.04 | 0.02 |
| 2 | 0.111280 | 0.04 | 0.02 | |
| 3 | 0.133260 | 0.04 | 0.02 | |
| 4 | 0.107931 | 0.04 | 0.02 | |
| 5 | 0.117486 | 0.04 | 0.02 |
# Let's set some Seaborn variables to customize the appearance of our plots.
# Set the overall style of the plots to "whitegrid", which adds a subtle grid to the background.
# This style is particularly useful for plots where you want to emphasize the data points against a clean background.
sns.set_theme(style="whitegrid")
# Set the color palette for the plots to "viridis".
# The "viridis" palette is a perceptually uniform colormap that is often used for heatmaps and other visualizations
# where color differentiation is important. It provides a good contrast and is colorblind-friendly.
sns.set_palette("viridis")
# Now we can plot each car's speed profile over time.
# Create a line plot to visualize the speed of each car (agent) at each timestep.
# The 'x' axis represents the timesteps, and the 'y' axis represents the speed of the cars.
# The 'hue' parameter is used to differentiate between cars based on their AgentID.
fig = sns.lineplot(data=agent_data, x='Step', y='speed', hue='AgentID')
# Adjust the legend's position so it doesn't overlap with the plot.
# The legend will be placed outside the plot area, anchored to the upper left corner of the plot's bounding box.
fig.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)
# Observation: We can see that at each timestep, there is a wide variety of speeds among the cars.
# However, this plot is not very useful for detailed analysis due to the overlapping lines, making it hard to discern individual car behaviors.
<matplotlib.legend.Legend at 0x11761d450>
Task: plot histograms over time#
Create a plot or a series of plots that show the distribution of speeds over time. Is this plot useful ?
Hint:
Use
sns.histplot()from Seaborn orplt.hist()from Matplotlib to create histograms.You can visualise the speed distribution at different timesteps by either overlaying histograms in one plot or using
plt.subplots()to create a grid of histograms.Adjust the number of bins to capture the distribution clearly, and experiment with subplots to make comparisons over time easier.
# answer here
Solution
To visualise the speed distribution of the agents over time, follow these steps:
Create Subplots:
Use
plt.subplots()to set up a grid for multiple plots. Here, we’re usingfig, axes = plt.subplots(3, 3, figsize=(15, 12))to create a 3x3 grid (9 subplots in total).The
figsize=(15, 12)ensures the plots fit well on the screen.
Define the Timesteps:
Set the specific timesteps where you want to observe the speed distribution. For example:
timesteps_to_plot = [0, 4, 8, 12, 16, 20, 24, 28, 30]
Loop Over Subplots:
You’ll iterate over the subplots using a loop and create a histogram for each specified timestep.
Use
enumerate(axes.flat)to loop through the flattened grid of axes. This allows you to handle each subplot individually.The
if i < len(timesteps_to_plot)ensures that you only create plots for the specified timesteps.
Here’s the structure of the loop:
for i, ax in enumerate(axes.flat): if i < len(timesteps_to_plot):
Plot Histogram for Each Timestep:
For each subplot, use Seaborn’s
sns.histplot()to plot the speed distribution of agents at a given timestep.Example:
sns.histplot(agent_data.loc[timesteps_to_plot[i]]['speed'], bins=10, kde=False, ax=ax)
agent_data.loc[timesteps_to_plot[i]]['speed']: This selects the speed data for the agents at the specified timestep.bins=10: Specifies the number of bins (intervals) for the histogram.kde=False: Ensures that a kernel density estimate line is not plotted.ax=ax: Specifies which subplot (axis) to plot on.
Title Each Plot:
Add a title to each subplot to indicate the timestep being visualised. Use:
ax.set_title(f"Speed Distribution at Step {timesteps_to_plot[i]}")
Adjust the Layout:
Use
plt.tight_layout()to automatically adjust the spacing between subplots to prevent them from overlapping.
Display the Plot:
call
plt.show()to render and display the entire grid of histograms.
Plot the mean and standard deviation together#
# This form of Seaborn plot will show the mean and the standard deviation (SD) of speeds per timestep.
# Create a figure and axis for the plot with a specified size and DPI (dots per inch) for better resolution.
fig, ax = plt.subplots(figsize=(8, 5), dpi=200)
# Use Seaborn's lineplot to plot the speed of agents over time.
# The 'x' axis represents the timestep, and the 'y' axis represents the speed of the agents.
# By default, Seaborn's lineplot will also show a shaded area representing the 95% confidence interval of the data.
ax = sns.lineplot(data=agent_data, x='Step', y='speed')
# Save the plot as a PNG file with a filename that includes the number of agents and timesteps for easy identification.
# Uncomments the following line to save the plot.
# plt.savefig("Average_speed_" + str(num_agents) + "_cars_over_" + str(timesteps) + "_timesteps.png")
Exercise: describe what you see in the plot above#
Describe what you see in the plot.
Why are there three lines, and what does each line represent?
What does the grey area signify?
Solution
Describe what you see in the plot above: The plot tracks how the average speed of the cars changes over time. You can see that the speeds fluctuate, sometimes rising, sometimes falling, as the simulation progresses.
Why are there three lines?: The middle line shows the average speed, while the two outer lines represent the 95% confidence interval. This gives a range in which the true average speed is likely to fall most of the time.
What does the grey area represent?: The grey shaded area between the two outer lines is the 95% confidence interval. It reflects the range of variation around the average speed, giving you an idea of how consistent or spread out the speeds are.
Plot multiple series in one graph#
# Displaying the model_data DataFrame
model_data
| Step | num_max_speed | num_standing_still | |
|---|---|---|---|
| 0 | 0 | 1.000000 | 0.000000 |
| 1 | 1 | 1.000000 | 0.000000 |
| 2 | 2 | 1.000000 | 0.000000 |
| 3 | 3 | 1.000000 | 0.000000 |
| 4 | 4 | 1.000000 | 0.000000 |
| 5 | 5 | 1.000000 | 0.000000 |
| 6 | 6 | 1.000000 | 0.000000 |
| 7 | 7 | 1.000000 | 0.000000 |
| 8 | 8 | 1.000000 | 0.000000 |
| 9 | 9 | 1.000000 | 0.000000 |
| 10 | 10 | 1.000000 | 0.000000 |
| 11 | 11 | 1.000000 | 0.000000 |
| 12 | 12 | 1.000000 | 0.000000 |
| 13 | 13 | 1.000000 | 0.000000 |
| 14 | 14 | 0.909091 | 0.000000 |
| 15 | 15 | 0.909091 | 0.000000 |
| 16 | 16 | 0.818182 | 0.000000 |
| 17 | 17 | 0.818182 | 0.000000 |
| 18 | 18 | 0.909091 | 0.000000 |
| 19 | 19 | 0.909091 | 0.000000 |
| 20 | 20 | 0.818182 | 0.090909 |
| 21 | 21 | 0.818182 | 0.090909 |
| 22 | 22 | 0.909091 | 0.000000 |
| 23 | 23 | 0.818182 | 0.000000 |
| 24 | 24 | 0.818182 | 0.000000 |
| 25 | 25 | 0.727273 | 0.000000 |
| 26 | 26 | 0.636364 | 0.000000 |
| 27 | 27 | 0.727273 | 0.000000 |
| 28 | 28 | 0.818182 | 0.000000 |
| 29 | 29 | 0.909091 | 0.000000 |
| 30 | 30 | 0.909091 | 0.000000 |
# Seaborn works best when the data are structured in pairs [x, y, variable_name].
# For that, we use the pandas melt() function to reshape the DataFrame.
# Melt the DataFrame 'model_data' to transform 'num_max_speed' and 'num_standing_still' columns into a long format.
# 'id_vars' specifies the column(s) to keep (in this case, 'Step'), and 'value_vars' specifies the columns to melt.
# The 'var_name' parameter assigns a name to the new column that indicates the variable (here named 'Speed').
data_num = model_data.melt(id_vars="Step", value_vars=['num_max_speed', 'num_standing_still'], var_name='Speed')
# Replace the string 'num_max_speed' with 'Max' in the 'Speed' column for clarity in the plots.
data_num.replace(to_replace="num_max_speed", value="Max", inplace=True)
# Replace the string 'num_standing_still' with '0' in the 'Speed' column for clarity in the plots.
data_num.replace(to_replace="num_standing_still", value="0", inplace=True)
# Display the last few rows of the transformed DataFrame to inspect the changes.
data_num.tail()
| Step | Speed | value | |
|---|---|---|---|
| 57 | 26 | 0 | 0.0 |
| 58 | 27 | 0 | 0.0 |
| 59 | 28 | 0 | 0.0 |
| 60 | 29 | 0 | 0.0 |
| 61 | 30 | 0 | 0.0 |
# Create a line plot using Seaborn to visualize the fraction of cars over time based on the melted data.
# 'data' specifies the DataFrame to use (here, 'data_num').
# 'x' specifies the data column to use for the x-axis (here, 'Step').
# 'y' specifies the data column to use for the y-axis (here, 'value', which represents the fraction of cars).
# 'hue' differentiates the lines based on the 'Speed' variable, which contains the labels 'Max' and '0' after the replacement.
ax = sns.lineplot(data=data_num, x='Step', y='value', hue='Speed')
# Set the label for the y-axis to "Fraction of cars" for better understanding of what the plot represents.
ax.set(ylabel="Fraction of cars")
[Text(0, 0.5, 'Fraction of cars')]
Exercise: describe what you see in the plot above#
Describe what you see in the plot.
Do you recognise a relationship between the two lines? If so, why does it occur?
Solution
The plot shows two lines representing the fraction of cars either moving at their maximum speed (“Max”) or essentially standing still (“0”). Over time, the line for cars at max speed fluctuates, often staying higher than the line for cars standing still. This suggests that most cars maintain their speed. There appears to be an inverse relationship: when more cars are moving at max speed, fewer are standing still, and vice versa. This relationship occurs because the two states represent opposite extremes of vehicle motion.
Task: add and visualise new model metrics#
Introduce new metrics that can provide additional insights into your model’s behaviour. Examples might include time spent at maximum speed. You are free to choose any metrics, even simple ones.
Implement and Collect: Modify your model to calculate and collect these new metrics during the simulation.
Analyse and Visualise: Integrate the new metrics into your data analysis workflow. Visualise these metrics using appropriate techniques, such as line plots, heatmaps, or other relevant visualisations. See what we used above or in previous assignments
Interpret Results: write two sentences about the significance of these new metrics in understanding the dynamics of your model. How do they contribute to a deeper understanding of the system’s behaviour?
# answer here
Solution
To track and visualise how many time steps each car spends at its maximum speed, follow these steps:
Tip: If you need to modify any of your classes, copy them and give them a different name! This way, you can always revert to the original, and the subsequent tasks will not be intertwined!
Modify the Car Class:
Add an attribute
time_at_max_speedto theCarclass to count how many steps a car spends at its maximum speed:self.time_at_max_speed = 0
Inside the
step()method, increment this counter when the car is driving at its max speed:if speed == self.max_speed: self.time_at_max_speed += 1
Update the DataCollector:
In the
TrafficJamModelclass, addtime_at_max_speedto the agent-level data collection:agent_metrics = {"time_at_max_speed": "time_at_max_speed"}
Run the Model:
After modifying the model, run it for the desired number of steps to collect data on how long each car spends at its max speed.
Visualise the Data:
Use a Seaborn bar plot to show the time each car spent at its max speed. Group the data by
AgentIDto sum or display each agent’s time at max speed:sns.barplot(x='AgentID', y='time_at_max_speed', data=agent_data.groupby('AgentID')['time_at_max_speed'].max().reset_index()) plt.title("Time Spent at Maximum Speed for Each Car") plt.ylabel("Time at Max Speed (steps)") plt.xlabel("Car (AgentID)") plt.show()
Having felt a jam appear from a single tap of the brakes, it is worth pinning down exactly what is going on. The three questions below check the intuition behind the stop-and-go wave.
4.3.1.2: Batch experiments#
The Batch Runner is a tool in the Mesa framework that allows you to run multiple simulations of your agent-based model with varying parameters. This is particularly useful for conducting parameter sweeps, sensitivity analysis, and understanding how changes in model inputs affect the outcomes.
Key Features of Batch Runner:
Parameter Sweeping: The Batch Runner enables you to systematically vary one or more parameters across a range of values. This helps in exploring how different configurations impact the model’s behaviour.
Multiple Iterations: You can specify the number of iterations for each parameter combination, which is useful for averaging results to account for stochastic elements in the model.
Parallel Processing: Batch Runner supports running simulations in parallel, allowing you to utilize multiple CPU cores to speed up the process.
Data Collection: It collects and aggregates the data from each run, which can then be easily transformed into a pandas DataFrame for further analysis and visualisation.
Before you write any sweep code, it is worth seeing why a sweep is needed at all. A single run at a single density is only one data point; the behaviour that actually matters, how an outcome changes as a parameter changes, appears only once the model is run across many values. The activity below makes that concrete on the very traffic model you are about to sweep.
mesa.batch_run automates.mesa.batch_run(...) does, draws the whole curve and exposes the tipping point: average speed holds up until a critical density and then collapses, and flow rises to a peak there before the road jams solid. Run the sweep above to locate that peak for yourself. The relationship between a parameter and an outcome, not any one run, is the real result.Keep this picture in mind as you write the batch runs below: each call to mesa.batch_run is doing exactly what the button did, executing the model across a grid of parameter values (with repeats) so that the response curve, and the tipping point hiding inside it, become visible.
4.3.1.2.1: One-dimensional parameter sweep#
# Define the parameters for the batch run.
# The 'params' dictionary includes different configurations for the TrafficJamModel.
# 'average_speed', 'acceleration', and 'deceleration' are kept constant, while 'n_agents' varies from 1 to 40 in steps of 5.
params = dict(
average_speed=0.1, # The initial average speed of the agents.
acceleration=0.02, # The rate at which agents accelerate.
deceleration=0.02, # The rate at which agents decelerate.
n_agents=np.arange(1, 40, 5) # Number of agents (cars) varies from 1 to 40 in increments of 5.
)
# Execute the batch run using the defined parameters.
param_run = mesa.batch_run(
TrafficJamModel, # The model to run.
parameters=params, # The parameters to vary in the batch run.
rng=[42], # Run the model once with seed 42.
max_steps=4, # The maximum number of steps (timesteps) the model will run for each iteration.
number_processes=1, # Number of processor cores to use. Increase this if you have more cores available to speed up the batch run.
data_collection_period=1, # How often data should be collected (every step in this case).
display_progress=True # Display progress of the batch run, useful for tracking long-running simulations.
)
# What is the type of the param_run object?
# Check the type of the param_run object.
# This will help you understand what kind of data structure or object is returned by the mesa.batch_run function.
print(f'The type of param_run is {type(param_run)}')
The type of param_run is <class 'list'>
# Let's inspect the contents of the param_run object to see how the batch run results are structured.
print(param_run)
[{'RunId': 0, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(1), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 0, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(1), 'seed': 42, 'num_max_speed': 0.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.0019423638681688288}, {'RunId': 0, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(1), 'seed': 42, 'num_max_speed': 0.0, 'num_standing_still': 1.0, 'AgentID': 1, 'speed': 3.884727736337658e-05}, {'RunId': 0, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(1), 'seed': 42, 'num_max_speed': 0.0, 'num_standing_still': 1.0, 'AgentID': 1, 'speed': 7.769455472675316e-07}, {'RunId': 0, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(1), 'seed': 42, 'num_max_speed': 0.0, 'num_standing_still': 1.0, 'AgentID': 1, 'speed': 1.553891094535063e-08}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 1, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 1, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 1, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 1, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 1, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(6), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 2, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 2, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 2, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 2, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 2, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(11), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 3, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 3, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 3, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 3, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 3, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(16), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 4, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 4, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 4, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 4, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.0020166627455613538}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 4, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(21), 'seed': 42, 'num_max_speed': 0.9523809523809523, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 24, 'speed': 0.1098072506518705}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 25, 'speed': 0.11746808770758894}, {'RunId': 5, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.002262654602719468}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.0020166627455613538}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 24, 'speed': 0.1098072506518705}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 25, 'speed': 0.11746808770758894}, {'RunId': 5, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.9230769230769231, 'num_standing_still': 0.0, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 11, 'speed': 4.525309205438936e-05}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 12, 'speed': 0.022262654602719468}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 17, 'speed': 4.033325491122708e-05}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 18, 'speed': 0.022016662745561355}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 24, 'speed': 0.1098072506518705}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 25, 'speed': 0.0019037481309379458}, {'RunId': 5, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.8076923076923077, 'num_standing_still': 0.07692307692307693, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 10, 'speed': 9.050618410877872e-07}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 11, 'speed': 0.0008452530920543894}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 12, 'speed': 0.04226265460271947}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 17, 'speed': 0.0008403332549112272}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 18, 'speed': 0.04201666274556136}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 21, 'speed': 0.001418581880796529}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 24, 'speed': 0.0004380749626187589}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 25, 'speed': 0.021903748130937945}, {'RunId': 5, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.6923076923076923, 'num_standing_still': 0.15384615384615385, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 4, 'speed': 0.0019489646864868455}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 7, 'speed': 0.0018930650086011328}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 9, 'speed': 1.8101236821755744e-08}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 10, 'speed': 1.6905061841087787e-05}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 11, 'speed': 0.0008452530920543894}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 12, 'speed': 0.06226265460271947}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 13, 'speed': 3.409342718124144e-05}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 14, 'speed': 0.0017046713590620718}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 16, 'speed': 1.6806665098224543e-05}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 17, 'speed': 0.020840333254911227}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 18, 'speed': 0.06201666274556136}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 20, 'speed': 2.837163761593058e-05}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 21, 'speed': 0.02141858188079653}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 23, 'speed': 8.761499252375177e-06}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 24, 'speed': 0.0004380749626187589}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 25, 'speed': 0.041903748130937946}, {'RunId': 5, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(26), 'seed': 42, 'num_max_speed': 0.38461538461538464, 'num_standing_still': 0.3076923076923077, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 24, 'speed': 0.1098072506518705}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 25, 'speed': 0.11746808770758894}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 27, 'speed': 0.1075319971737582}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 28, 'speed': 0.1049642689865683}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 29, 'speed': 0.11564653617407285}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 6, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 31, 'speed': 0.11136501375170772}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 11, 'speed': 0.0024654234746396574}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 12, 'speed': 0.002262654602719468}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 17, 'speed': 0.00252443233088162}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 24, 'speed': 3.8074962618758916e-05}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 25, 'speed': 0.0019037481309379458}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 27, 'speed': 0.002099285379731366}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 28, 'speed': 3.1094222286014625e-05}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 29, 'speed': 0.001554711114300731}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 6, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.7419354838709677, 'num_standing_still': 0.06451612903225806, 'AgentID': 31, 'speed': 0.11136501375170772}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 4, 'speed': 0.0019489646864868455}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 5, 'speed': 0.0014010586342636173}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 7, 'speed': 0.0018930650086011328}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 10, 'speed': 4.930846949279315e-05}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 11, 'speed': 0.02246542347463966}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 12, 'speed': 0.022262654602719468}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 13, 'speed': 3.409342718124144e-05}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 14, 'speed': 0.0017046713590620718}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 16, 'speed': 5.04886466176324e-05}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 17, 'speed': 0.02252443233088162}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 18, 'speed': 3.9149413649833733e-05}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 19, 'speed': 0.0019574706824916866}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 23, 'speed': 7.614992523751784e-07}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 24, 'speed': 0.02003807496261876}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 25, 'speed': 0.021903748130937945}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 26, 'speed': 1.243768891440585e-08}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 27, 'speed': 6.218844457202925e-07}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 28, 'speed': 3.1094222286014625e-05}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 29, 'speed': 0.021554711114300733}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 6, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.3548387096774194, 'num_standing_still': 0.25806451612903225, 'AgentID': 31, 'speed': 0.0019423638681688288}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 3, 'speed': 5.60423453705447e-07}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 4, 'speed': 2.8021172685272347e-05}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 5, 'speed': 0.021401058634263618}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 7, 'speed': 0.021893065008601133}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 9, 'speed': 8.986169389855864e-06}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 10, 'speed': 0.0004493084694927932}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 11, 'speed': 0.00044525309205438934}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 12, 'speed': 0.04226265460271947}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 13, 'speed': 0.0004340934271812415}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 14, 'speed': 0.021704671359062074}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 15, 'speed': 0.00040100977293235264}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 16, 'speed': 0.020050488646617633}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 17, 'speed': 0.04252443233088162}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 18, 'speed': 0.0004391494136498338}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 19, 'speed': 0.021957470682491688}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 21, 'speed': 0.001418581880796529}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 23, 'speed': 0.0008007614992523751}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 24, 'speed': 0.040038074962618755}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 25, 'speed': 0.041903748130937946}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 26, 'speed': 1.243768891440585e-08}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 27, 'speed': 0.02000062188444572}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 28, 'speed': 0.020031094222286015}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 29, 'speed': 0.04155471111430073}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 6, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.22580645161290322, 'num_standing_still': 0.3225806451612903, 'AgentID': 31, 'speed': 0.021942363868168828}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 2, 'speed': 1.120846907410894e-08}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 3, 'speed': 5.60423453705447e-07}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 4, 'speed': 0.020028021172685272}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 5, 'speed': 0.04140105863426362}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 6, 'speed': 0.00043786130017202266}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 7, 'speed': 0.041893065008601134}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 8, 'speed': 1.797233877971173e-07}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 9, 'speed': 1.7810123682175576e-07}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 10, 'speed': 8.905061841087788e-06}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 11, 'speed': 0.02044525309205439}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 12, 'speed': 0.06226265460271947}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 13, 'speed': 0.0004340934271812415}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 14, 'speed': 0.04170467135906207}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 15, 'speed': 0.020401009772932355}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 16, 'speed': 0.04005048864661763}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 17, 'speed': 0.06252443233088162}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 18, 'speed': 0.0008391494136498338}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 19, 'speed': 0.041957470682491685}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 20, 'speed': 2.837163761593058e-05}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 21, 'speed': 0.001418581880796529}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 22, 'speed': 1.60152299850475e-05}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 23, 'speed': 0.0008007614992523751}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 24, 'speed': 1.600049750755658e-07}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 25, 'speed': 8.000248753778289e-06}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 26, 'speed': 0.00040001243768891445}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 27, 'speed': 0.040000621884445725}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 28, 'speed': 0.04003109422228601}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 29, 'speed': 0.061554711114300734}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 30, 'speed': 0.0004388472773633766}, {'RunId': 6, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(31), 'seed': 42, 'num_max_speed': 0.03225806451612903, 'num_standing_still': 0.4838709677419355, 'AgentID': 31, 'speed': 0.041942363868168825}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 1, 'speed': 0.09711819340844144}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 2, 'speed': 0.09654192799336962}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 3, 'speed': 0.09777368276864676}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 4, 'speed': 0.11403967450197727}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 7, 'speed': 0.10664636688135432}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 8, 'speed': 0.09465325043005664}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 9, 'speed': 0.0956608263170961}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 10, 'speed': 0.10231769573401711}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 11, 'speed': 0.10464595473813443}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 12, 'speed': 0.12327117373198286}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 13, 'speed': 0.11313273013597339}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 14, 'speed': 0.10221014354887664}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 17, 'speed': 0.10492684390422405}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 18, 'speed': 0.12622161654408098}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 19, 'speed': 0.10083313727806768}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 20, 'speed': 0.09787353412458433}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 23, 'speed': 0.09375445365710881}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 24, 'speed': 0.1098072506518705}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 25, 'speed': 0.11746808770758894}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 26, 'speed': 0.0951874065468973}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 27, 'speed': 0.1075319971737582}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 28, 'speed': 0.1049642689865683}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 29, 'speed': 0.11564653617407285}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 31, 'speed': 0.11136501375170772}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 32, 'speed': 0.06970959216549721}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 33, 'speed': 0.04760109155562297}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 34, 'speed': 0.08786218543600996}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 35, 'speed': 0.08168379907308011}, {'RunId': 7, 'iteration': 0, 'Step': 0, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 1.0, 'num_standing_still': 0.0, 'AgentID': 36, 'speed': 0.11752024486112814}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 1, 'speed': 0.0019308385598673925}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 2, 'speed': 0.0019554736553729353}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 3, 'speed': 3.897929372973691e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 4, 'speed': 0.0019489646864868455}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 5, 'speed': 0.09744823432434227}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 6, 'speed': 0.07005293171318086}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 7, 'speed': 0.0018930650086011328}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 8, 'speed': 4.0927078293606844e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 9, 'speed': 0.002046353914680342}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 10, 'speed': 4.930846949279315e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 11, 'speed': 0.0024654234746396574}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 12, 'speed': 0.002262654602719468}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 13, 'speed': 3.409342718124144e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 14, 'speed': 0.0017046713590620718}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 15, 'speed': 0.08523356795310359}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 16, 'speed': 0.07970675265024565}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 17, 'speed': 0.00252443233088162}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 18, 'speed': 0.0020166627455613538}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 19, 'speed': 4.425420976320697e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 20, 'speed': 0.002212710488160348}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 21, 'speed': 0.1106355244080174}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 22, 'speed': 0.07092909403982645}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 23, 'speed': 0.00219614501303741}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 24, 'speed': 1.679428303785093e-08}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 25, 'speed': 8.397141518925464e-07}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 26, 'speed': 4.198570759462732e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 27, 'speed': 0.002099285379731366}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 28, 'speed': 3.1094222286014625e-05}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 29, 'speed': 0.001554711114300731}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 30, 'speed': 0.07773555571503656}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 31, 'speed': 0.0013941918433099444}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 32, 'speed': 0.06970959216549721}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 33, 'speed': 0.04760109155562297}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 34, 'speed': 0.0016336759814616023}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 35, 'speed': 0.08168379907308011}, {'RunId': 7, 'iteration': 0, 'Step': 1, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.2777777777777778, 'num_standing_still': 0.2777777777777778, 'AgentID': 36, 'speed': 3.861677119734785e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 1, 'speed': 3.910947310745871e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 2, 'speed': 7.795858745947383e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 3, 'speed': 3.897929372973691e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 4, 'speed': 0.021948964686486844}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 5, 'speed': 7.572260034404531e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 6, 'speed': 3.786130017202266e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 7, 'speed': 8.185415658721369e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 8, 'speed': 4.0927078293606844e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 9, 'speed': 9.86169389855863e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 10, 'speed': 4.930846949279315e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 11, 'speed': 1.3637370872496576e-08}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 12, 'speed': 6.818685436248288e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 13, 'speed': 0.0004340934271812415}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 14, 'speed': 0.021704671359062074}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 15, 'speed': 1.613330196449083e-08}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 16, 'speed': 8.066650982245415e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 17, 'speed': 4.033325491122708e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 18, 'speed': 8.850841952641393e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 19, 'speed': 0.000444254209763207}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 20, 'speed': 0.02221271048816035}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 21, 'speed': 8.784580052149641e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 22, 'speed': 4.39229002607482e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 23, 'speed': 3.358856607570186e-10}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 24, 'speed': 1.679428303785093e-08}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 25, 'speed': 8.397141518925464e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 26, 'speed': 4.198570759462732e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 27, 'speed': 6.218844457202925e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 28, 'speed': 0.00043109422228601466}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 29, 'speed': 0.021554711114300733}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 30, 'speed': 2.7883836866198888e-05}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 31, 'speed': 0.021394191843309946}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 32, 'speed': 0.06970959216549721}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 33, 'speed': 0.04760109155562297}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 34, 'speed': 0.021633675981461604}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 35, 'speed': 7.72335423946957e-07}, {'RunId': 7, 'iteration': 0, 'Step': 2, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.7777777777777778, 'AgentID': 36, 'speed': 7.821894621491741e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 1, 'speed': 1.5591717491894767e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 2, 'speed': 7.795858745947383e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 3, 'speed': 0.020038979293729737}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 4, 'speed': 0.041948964686486845}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 5, 'speed': 3.2741662634885473e-10}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 6, 'speed': 1.6370831317442737e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 7, 'speed': 8.185415658721369e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 8, 'speed': 1.972338779711726e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 9, 'speed': 9.86169389855863e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 10, 'speed': 3.472747417449932e-09}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 11, 'speed': 1.736373708724966e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 12, 'speed': 8.68186854362483e-06}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 13, 'speed': 0.020434093427181242}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 14, 'speed': 0.04170467135906207}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 15, 'speed': 1.613330196449083e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 16, 'speed': 8.066650982245415e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 17, 'speed': 1.7770168390528282e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 18, 'speed': 8.88508419526414e-06}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 19, 'speed': 0.000444254209763207}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 20, 'speed': 0.042212710488160346}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 21, 'speed': 8.784580052149641e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 22, 'speed': 6.7177132151403725e-12}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 23, 'speed': 3.358856607570186e-10}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 24, 'speed': 1.679428303785093e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 25, 'speed': 3.4487537782881175e-09}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 26, 'speed': 1.7243768891440587e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 27, 'speed': 8.621884445720293e-06}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 28, 'speed': 1.711535347464796e-07}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 29, 'speed': 8.55767673732398e-06}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 30, 'speed': 0.00042788383686619895}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 31, 'speed': 0.041394191843309946}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 32, 'speed': 0.06970959216549721}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 33, 'speed': 0.04760109155562297}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 34, 'speed': 0.0416336759814616}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 35, 'speed': 1.5643789242983484e-08}, {'RunId': 7, 'iteration': 0, 'Step': 3, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.05555555555555555, 'num_standing_still': 0.75, 'AgentID': 36, 'speed': 7.821894621491741e-07}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 1, 'speed': 0.020000015591717494}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 2, 'speed': 0.020000779585874595}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 3, 'speed': 0.04003897929372974}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 4, 'speed': 6.548332526977095e-12}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 5, 'speed': 3.2741662634885473e-10}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 6, 'speed': 1.6370831317442737e-08}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 7, 'speed': 3.944677559423452e-10}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 8, 'speed': 1.3890989669799729e-12}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 9, 'speed': 6.945494834899864e-11}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 10, 'speed': 3.472747417449932e-09}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 11, 'speed': 2.581328314318533e-15}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 12, 'speed': 1.2906641571592666e-13}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 13, 'speed': 6.4533207857963325e-12}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 14, 'speed': 3.226660392898166e-10}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 15, 'speed': 1.613330196449083e-08}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 16, 'speed': 3.5540336781056566e-09}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 17, 'speed': 1.7770168390528282e-07}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 18, 'speed': 8.88508419526414e-06}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 19, 'speed': 0.02044425420976321}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 20, 'speed': 0.06221271048816035}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 21, 'speed': 1.3435426430280744e-13}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 22, 'speed': 6.7177132151403725e-12}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 23, 'speed': 3.358856607570186e-10}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 24, 'speed': 6.897507556576235e-11}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 25, 'speed': 3.4487537782881175e-09}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 26, 'speed': 1.7243768891440587e-07}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 27, 'speed': 0.00040000342307069497}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 28, 'speed': 0.020000171153534748}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 29, 'speed': 0.020008557676737326}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 30, 'speed': 0.0204278838368662}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 31, 'speed': 0.06139419184330995}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 32, 'speed': 0.0009520218311124594}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 33, 'speed': 0.04760109155562297}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 34, 'speed': 0.061633675981461605}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 35, 'speed': 6.236686996757907e-12}, {'RunId': 7, 'iteration': 0, 'Step': 4, 'average_speed': 0.1, 'acceleration': 0.02, 'deceleration': 0.02, 'n_agents': np.int64(36), 'seed': 42, 'num_max_speed': 0.027777777777777776, 'num_standing_still': 0.6944444444444444, 'AgentID': 36, 'speed': 3.1183434983789534e-10}]
# It seems like a complex structure of a list containing dictionaries.
# Luckily, we can turn this into a well-organized pandas DataFrame using a simple command.
# Convert the list of dictionaries (param_run) into a pandas DataFrame.
# This will make it easier to manipulate, analyze, and visualize the batch run results.
batch_1D_results = pd.DataFrame(param_run)
# Visualize the first 5 rows of the DataFrame
batch_1D_results.head()
| RunId | iteration | Step | average_speed | acceleration | deceleration | n_agents | seed | num_max_speed | num_standing_still | AgentID | speed | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0.1 | 0.02 | 0.02 | 1 | 42 | 1.0 | 0.0 | 1 | 9.711819e-02 |
| 1 | 0 | 0 | 1 | 0.1 | 0.02 | 0.02 | 1 | 42 | 0.0 | 0.0 | 1 | 1.942364e-03 |
| 2 | 0 | 0 | 2 | 0.1 | 0.02 | 0.02 | 1 | 42 | 0.0 | 1.0 | 1 | 3.884728e-05 |
| 3 | 0 | 0 | 3 | 0.1 | 0.02 | 0.02 | 1 | 42 | 0.0 | 1.0 | 1 | 7.769455e-07 |
| 4 | 0 | 0 | 4 | 0.1 | 0.02 | 0.02 | 1 | 42 | 0.0 | 1.0 | 1 | 1.553891e-08 |
Visualisation with a FacetGrid#
# Seaborn FacetGrid is a powerful tool for creating multi-plot grids: https://seaborn.pydata.org/generated/seaborn.FacetGrid.html
# Create a FacetGrid to visualize the speed of agents over time, grouped by the number of agents ('n_agents').
# The 'col_wrap' parameter determines how many plots to display per row, while 'col' specifies which variable to facet on.
# 'height' and 'aspect' control the size and shape of each plot.
g = sns.FacetGrid(batch_1D_results, col_wrap=4, col='n_agents', height=5, aspect=2)
# Map a line plot onto each facet, with 'Step' on the x-axis and 'speed' on the y-axis.
g.map(sns.lineplot, 'Step', 'speed')
# Display the plot grid.
plt.show()
# Create a FacetGrid to visualize the number of cars at maximum speed and the number standing still over time.
# The grid will have a separate plot for each unique value of 'n_agents'.
g = sns.FacetGrid(batch_1D_results, col_wrap=4, col='n_agents', height=5, aspect=1)
# Map a green line plot for 'num_max_speed' over time onto each facet.
g.map(sns.lineplot, 'Step', 'num_max_speed', color='green', label='Max Speed')
# Map a red line plot for 'num_standing_still' over time onto each facet.
g.map(sns.lineplot, 'Step', 'num_standing_still', color='red', label='Standing Still')
# Set axis labels for the plot
g.set_axis_labels("Time Step", "fractions of cars")
# Set titles for each facet based on the number of agents
g.set_titles(col_template="n_agents: {col_name}")
# Add a legend to differentiate between max speed and standing still
g.add_legend()
# Display the grid of plots
plt.show()
Exercise: describe what you see in the plots above#
Please write up to five sentences in your own words:
Describe what you see in the plots.
What patterns, relationships, or interactions do you observe among the different parameters?
Solution
In the plots, you can observe two main metrics: the number of cars at maximum speed (green line) and the number of cars that are stationary (red line) across different steps for varying numbers of agents.
For a single agent, the car comes to a stop after the first step, likely due to no interaction with other cars.
As the number of agents increases, most cars start at maximum speed and remain there for all steps
From 26 agents and above, traffic congestion starts to form, where the number of cars standing still increases while fewer cars reach their maximum speed, as seen by the red and green lines crossing.
Alternative FacetGrid using melt and colour#
“Melting” a DataFrame is the process of transforming it from a wide format, where data is spread across multiple columns, to a long format, where data is stacked into a single column. This restructuring makes it easier to analyse and visualise data by consolidating multiple metrics into a more compact and flexible format.
molten_model_data = batch_1D_results.melt(id_vars = ["Step",'n_agents',"RunId"], value_vars = ['num_max_speed','num_standing_still'], var_name='Speed')
# Explanation of the command above:
# 1. Identify Identifier Variables (id_vars):
# The columns "Step", 'n_agents', and "RunId" are specified as identifier variables. These columns remain unchanged in the resulting DataFrame. Each row will retain these columns to identify the context of the measurements.
# 2. Specify Value Variables (value_vars):
# The columns 'num_max_speed' and 'num_standing_still' are specified as value variables. These columns contain the data that will be unpivoted or melted into a single column.
# 3. Transform the DataFrame:
# The melt function transforms the batch_results DataFrame from a wide format (where multiple columns contain different metrics) to a long format (where one column contains the names of the metrics and another contains their values).
# 4. Name the Variable Column (var_name):
# The var_name='Speed' parameter renames the variable column in the melted DataFrame to 'Speed'. This column will contain the names of the melted value variables ('num_max_speed' and 'num_standing_still').
# Want to see how batch_results looked like before melting? then uncomment the following:
# batch_1D_results
# Visualize the molten_model_data dataframe:
molten_model_data
#Note: number_max_speed is a ratio (1 = 100%). see the function definition above
| Step | n_agents | RunId | Speed | value | |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | num_max_speed | 1.000000 |
| 1 | 1 | 1 | 0 | num_max_speed | 0.000000 |
| 2 | 2 | 1 | 0 | num_max_speed | 0.000000 |
| 3 | 3 | 1 | 0 | num_max_speed | 0.000000 |
| 4 | 4 | 1 | 0 | num_max_speed | 0.000000 |
| ... | ... | ... | ... | ... | ... |
| 1475 | 4 | 36 | 7 | num_standing_still | 0.694444 |
| 1476 | 4 | 36 | 7 | num_standing_still | 0.694444 |
| 1477 | 4 | 36 | 7 | num_standing_still | 0.694444 |
| 1478 | 4 | 36 | 7 | num_standing_still | 0.694444 |
| 1479 | 4 | 36 | 7 | num_standing_still | 0.694444 |
1480 rows × 5 columns
#visualize the first 5 rows of the molten_model_data dataframe:
molten_model_data.head()
| Step | n_agents | RunId | Speed | value | |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | num_max_speed | 1.0 |
| 1 | 1 | 1 | 0 | num_max_speed | 0.0 |
| 2 | 2 | 1 | 0 | num_max_speed | 0.0 |
| 3 | 3 | 1 | 0 | num_max_speed | 0.0 |
| 4 | 4 | 1 | 0 | num_max_speed | 0.0 |
#plotting the molten_model_data using seaborn FacetGrid
g = sns.FacetGrid(molten_model_data, col_wrap = 4, hue='Speed', col='n_agents',height=5, aspect=1)
g.map(sns.lineplot, 'Step', 'value')
<seaborn.axisgrid.FacetGrid at 0x117ff0410>
Exercise: describe what you see in the plots above#
Please write up to five sentences in your own words:
Describe what you see in the plots.
What patterns, relationships, or interactions do you observe among the different parameters?
Solution
We notice a similar behaviour as before:
We are observing the number of cars at maximum speed and those standing still over time.
With one agent, the car starts at maximum speed but quickly decelerates to a full stop (task: try to run the base model above with only one car and see the behaviour using the animation).
With 6 to 16 agents, most cars remain at maximum speed throughout the simulation.
As the number of agents increases beyond 20, we begin to see more variability in behaviour, with fewer cars at maximum speed and more slowing down or stopping over time.
For 36 agents, the simulation shows a notable crossover where many cars decelerate, and some come to a full stop. This suggests congestion or traffic buildup as more agents are added to the road.
State-space view over time and parameter value#
# Let's look at the attractors in the system over the parameter values.
# NOTE: We are using matplotlib again, not Seaborn.
# We (again) tell matplotlib to draw inline in the notebook.
# Uncomment the following line to enable inline plotting in a notebook environment.
# %matplotlib inline
# If you prefer matplotlib to open a separate interactive window for the plot, uncomment the following line.
# %matplotlib qt
# Create a new figure for the 3D plot.
fig = plt.figure()
# Set up a 3D axis using matplotlib's Axes3D functionality.
ax = plt.axes(projection='3d')
# Plot a 3D surface plot of 'num_max_speed' over 'Step' and 'n_agents'.
# 'plot_trisurf' is used to create a triangular surface plot, which can handle irregularly spaced data.
# 'cmap=plt.cm.viridis' applies a colormap to the surface for better visual distinction.
ax.plot_trisurf(batch_1D_results['Step'], batch_1D_results['n_agents'], batch_1D_results['num_max_speed'], cmap=plt.cm.viridis, linewidth=0.2)
# Set the labels for the x, y, and z axes to clarify what each axis represents.
ax.set(xlabel="Steps", ylabel="Number of cars", zlabel="Fraction of cars at maximum speed")
# Display the 3D plot.
plt.show()
#let's plot the fraction of cars standing still over time and across different numbers of cars, which is the opposite of the previous plot.
# Create a new figure for the 3D plot.
fig = plt.figure()
# Set up a 3D axis using matplotlib's Axes3D functionality.
ax = plt.axes(projection='3d')
# Plot a 3D surface showing the fraction of cars standing still over time ('Step') and across different numbers of cars ('n_agents').
# 'plot_trisurf' is used to create a triangular surface plot, ideal for visualizing data with irregular spacing.
# 'cmap=plt.cm.viridis' applies a colormap to the surface for better visual distinction.
ax.plot_trisurf(batch_1D_results['Step'], batch_1D_results['n_agents'], batch_1D_results['num_standing_still'], cmap=plt.cm.viridis, linewidth=0.2)
# Set the labels for the x, y, and z axes to clearly indicate what each axis represents.
ax.set(xlabel="Steps", ylabel="Number of cars", zlabel="Fraction of cars standing still")
# Display the 3D plot.
plt.show()
Exercise: describe what you see in the plot above#
Please write up to five sentences in your own words:
Describe what you see in the plot.
What patterns, relationships, or interactions do you observe among the different parameters?
Solution
SEE ANIMATION BELOW FIRST
In the plot, you can see how the fraction of cars standing still evolves over time (steps) for different numbers of cars. As the number of cars increases, particularly at higher values, the fraction of stationary cars grows significantly, suggesting a traffic jam-like scenario where cars cannot move freely. With fewer cars, most remain in motion, but as congestion builds, more cars stop, especially as the simulation progresses.
Additionally, when the number of cars is very small, cars tend to stop, which doesn’t reflect real-world behaviour. This occurs due to how the system is modeled. When fewer cars are present, there is less interaction, leading to this strange behaviour. This indicates a potential flaw in the way the system is modeled.
# BONUS: Let's create an animation to visualize the 3D plot rotating
# You do not need to understand this code, but you can run it to see the animation.
# Import necessary libraries for 3D plotting and animation
from matplotlib.animation import FuncAnimation
from IPython.display import HTML
import matplotlib.pyplot as plt
# Create a new figure for the 3D plot
fig = plt.figure()
# Set up a 3D axis using matplotlib's Axes3D functionality
ax = plt.axes(projection='3d')
# Plot a 3D surface for 'num_standing_still' over 'Step' and 'n_agents'
surf = ax.plot_trisurf(batch_1D_results['n_agents'], batch_1D_results['Step'], batch_1D_results['num_standing_still'], cmap=plt.cm.viridis, linewidth=0.2)
# Set the labels for the x, y, and z axes
ax.set(xlabel="Number of cars", ylabel="Steps", zlabel="Fraction of cars standing still")
# Reverse the Steps axis
ax.invert_xaxis() # This will reverse the x-axis, so steps go from 4 to 0
# Update function for animation to rotate the 3D plot
def update(num):
ax.view_init(30, 30 + num) # Rotate the plot by adjusting the azimuthal angle
return surf, # Return the surface plot
# Create the animation
anim = FuncAnimation(fig, update, frames=range(0, 360, 2), blit=False)
# Display the animation as an interactive JavaScript player.
# to_jshtml() renders the frames with JavaScript, so it works everywhere, including live code in the browser, with no ffmpeg needed.
plt.rcParams['animation.embed_limit'] = 2**128 # allow the player to embed all frames
HTML(anim.to_jshtml())
# If you are running the notebook locally and have ffmpeg installed, you can instead render a compact HTML5 video:
# HTML(anim.to_html5_video())
4.3.1.2.2: Two-dimensional parameter sweep with repetitions#
# Now let's systematically explore the effects of acceleration and deceleration on the model's behavior.
# This time we will also make sure not to use a single repetition, which we can not trust, but at least 5 to get averages that remove the effect of
# the random seed
# Define the range of acceleration and deceleration values to test.
acceleration_range = [0.01, 0.1, 0.15, 0.25, 0.5, 1]
deceleration_range = [0.01, 0.1, 0.15, 0.25, 0.5, 1]
# Create a dictionary to store the parameters for the batch run.
# The 'average_speed' is constant, the number of agents is set to 30, and we are varying acceleration and deceleration.
params = dict(
average_speed=0.1, # Fixed average speed for all simulations.
n_agents=30, # Number of agents (cars) is fixed at 30.
acceleration=acceleration_range, # Varying acceleration values.
deceleration=deceleration_range # Varying deceleration values.
)
# Perform a batch run of the TrafficJamModel using the specified parameters.
param_run_2d = mesa.batch_run(
TrafficJamModel, # The model to run.
parameters=params, # The parameters to explore.
rng=[42, 123, 456, 789, 1024], # Run with 5 different seeds for reliable averages.
max_steps=200, # The maximum number of steps (timesteps) to simulate in each run.
number_processes=1, # Number of processor cores to use. Increase this if you have more cores available.
data_collection_period=1, # Data is collected at every timestep.
display_progress=True # Show a progress bar during the batch run.
)
# Convert the batch run results to a DataFrame for easier analysis and visualization.
batch_2D_results = pd.DataFrame(param_run_2d)
# Now, `batch_2D_results` is a DataFrame containing the results of the batch run,
# with each row representing the outcome of one simulation run,
# and columns representing the various parameters and metrics recorded during the simulations.
#Let's have a look:
batch_2D_results.head()
| RunId | iteration | Step | average_speed | n_agents | acceleration | deceleration | seed | num_max_speed | num_standing_still | AgentID | speed | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0.1 | 30 | 0.01 | 0.01 | 42 | 1.0 | 0.0 | 1 | 0.097118 |
| 1 | 0 | 0 | 0 | 0.1 | 30 | 0.01 | 0.01 | 42 | 1.0 | 0.0 | 2 | 0.096542 |
| 2 | 0 | 0 | 0 | 0.1 | 30 | 0.01 | 0.01 | 42 | 1.0 | 0.0 | 3 | 0.097774 |
| 3 | 0 | 0 | 0 | 0.1 | 30 | 0.01 | 0.01 | 42 | 1.0 | 0.0 | 4 | 0.114040 |
| 4 | 0 | 0 | 0 | 0.1 | 30 | 0.01 | 0.01 | 42 | 1.0 | 0.0 | 5 | 0.097448 |
# note that this is very slow, you can make yourself a cup of tea
%matplotlib inline
# Create a FacetGrid to explore how acceleration and deceleration affect the speed over time.
# 'col' represents the deceleration parameter, so a separate column of plots will be created for each deceleration value.
# 'row' represents the acceleration parameter, so a separate row of plots will be created for each acceleration value.
g = sns.FacetGrid(batch_2D_results, col='deceleration', row='acceleration')
# Map a line plot onto each facet, plotting 'Step' on the x-axis and 'speed' on the y-axis.
# This will generate multiple line plots showing how speed changes over time for each combination of acceleration and deceleration.
g.map(sns.lineplot, "Step", "speed")
<seaborn.axisgrid.FacetGrid at 0x1186a8b90>
# Calculate the mean values of metrics grouped by 'Step', 'acceleration', and 'deceleration'.
mean_model_values = batch_2D_results.groupby(by=['Step', 'acceleration', 'deceleration']).mean().reset_index()
# The resulting DataFrame, `mean_model_values`, contains the average metrics for each combination of parameters and time step.
mean_model_values
| Step | acceleration | deceleration | RunId | iteration | average_speed | n_agents | seed | num_max_speed | num_standing_still | AgentID | speed | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.01 | 0.01 | 72.0 | 2.0 | 0.1 | 30.0 | 486.8 | 1.000000 | 0.000000 | 15.5 | 0.098606 |
| 1 | 0 | 0.01 | 0.10 | 73.0 | 2.0 | 0.1 | 30.0 | 486.8 | 1.000000 | 0.000000 | 15.5 | 0.098606 |
| 2 | 0 | 0.01 | 0.15 | 74.0 | 2.0 | 0.1 | 30.0 | 486.8 | 1.000000 | 0.000000 | 15.5 | 0.098606 |
| 3 | 0 | 0.01 | 0.25 | 75.0 | 2.0 | 0.1 | 30.0 | 486.8 | 1.000000 | 0.000000 | 15.5 | 0.098606 |
| 4 | 0 | 0.01 | 0.50 | 76.0 | 2.0 | 0.1 | 30.0 | 486.8 | 1.000000 | 0.000000 | 15.5 | 0.098606 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 7231 | 200 | 1.00 | 0.10 | 103.0 | 2.0 | 0.1 | 30.0 | 486.8 | 0.613333 | 0.260000 | 15.5 | 0.058587 |
| 7232 | 200 | 1.00 | 0.15 | 104.0 | 2.0 | 0.1 | 30.0 | 486.8 | 0.646667 | 0.160000 | 15.5 | 0.062921 |
| 7233 | 200 | 1.00 | 0.25 | 105.0 | 2.0 | 0.1 | 30.0 | 486.8 | 0.620000 | 0.160000 | 15.5 | 0.061610 |
| 7234 | 200 | 1.00 | 0.50 | 106.0 | 2.0 | 0.1 | 30.0 | 486.8 | 0.573333 | 0.126667 | 15.5 | 0.061202 |
| 7235 | 200 | 1.00 | 1.00 | 107.0 | 2.0 | 0.1 | 30.0 | 486.8 | 0.066667 | 0.000000 | 15.5 | 0.060668 |
7236 rows × 12 columns
import matplotlib.lines as mlines # Import the Line2D module from matplotlib to create custom legend entries.
# Visualize the results by plotting the fraction of cars at maximum speed and those standing still over time.
g = sns.FacetGrid(mean_model_values, col='deceleration', row='acceleration', height=5, aspect=1)
# Plot the fraction of cars at maximum speed over time in green.
g.map(sns.lineplot, "Step", "num_max_speed", color='green')
# Plot the fraction of cars standing still over time in red.
g.map(sns.lineplot, "Step", "num_standing_still", color='red')
# Set axis labels for the plot
g.set_axis_labels("Time Step", "Fraction of Cars")
# Set titles for each facet based on deceleration and acceleration
g.set_titles(col_template="Deceleration: {col_name}", row_template="Acceleration: {row_name}")
# Create custom legend entries for Max Speed and Standing Still
max_speed_line = mlines.Line2D([], [], color='green', label='Max Speed')
standing_still_line = mlines.Line2D([], [], color='red', label='Standing Still')
# Add a custom legend to the grid
g.add_legend(title='Legend', handles=[max_speed_line, standing_still_line])
# Display the grid of plots
plt.show()
Task: three-dimensional parameter sweep#
Perform a 3D Parameter Sweep: Vary the parameters: acceleration, deceleration, and initial speed.
Transform the Output: Convert the output of batch_run into a DataFrame for analysis.
Visualise Using Facet Grid: Create visualisations using a Facet Grid. You can decide what aspects to visualise. Inside each plot, you may use a line plot or a heatmap to represent the data.
Apply Melting: Use the melting technique we learned earlier. Decide which variables to melt based on your analysis goals.
# answer here
Solution
To visualise how the number of cars at maximum speed evolves across varying parameters, you need to follow these steps:
Set Parameter Ranges: Start by defining ranges for acceleration, deceleration, and initial speed. These ranges allow for a broad exploration of how different driving behaviours affect the model’s outcome. Note that initial speed of cars is determined by the average speed (see base model), so here we vary the average speed, which means varying the initial speed.
Batch Run Setup: Execute a batch run. The parameters include initial speed, acceleration, and deceleration, with 3 iterations per combination. Running the model for 100 time steps helps observe long-term traffic dynamics.
Convert to DataFrame: Once the batch run is complete, convert the results into a DataFrame. The data needs to be grouped by the variables
average_speed,Step,acceleration, anddeceleration.Heatmap Function: Write a custom function to generate a heatmap for visualising the results. The heatmap will plot
average_speedas rows andStep(time steps) as columns, with the colour intensity showing the number of cars at maximum speed (num_max_speed).Plotting: With Seaborn’s
FacetGrid, plot multiple heatmaps, one for each combination of acceleration and deceleration. Each heatmap will depict how the number of cars at maximum speed changes over time for a given combination of these two parameters.Adjust Heatmap: To make the comparison across different heatmaps more meaningful, set a consistent colour range for all heatmaps by fixing
vminandvmax. This avoids confusion by keeping the scale the same across the grid.Visualisation and Analysis: Once plotted, you will be able to clearly see how the initial speed, acceleration, and deceleration interact to influence traffic dynamics. The heatmaps will provide a comprehensive view of how the number of cars reaching maximum speed evolves over time under different scenarios.
Additional exercise: Write a few sentences describing what you observe in this figure.
Describe what you see in the plot.
What patterns, trends, or interactions do you observe among the cars as the initial speed, acceleration, and deceleration change?
Exercises#
Exercise 1: simulate the impact of carefulness on traffic dynamics#
Overview#
In real life, drivers exhibit varying levels of carefulness. Some drivers are overly cautious, braking too early and too hard, while others are reckless, braking too late and too lightly.
Objective#
In this exercise, you will introduce a new variable for the agents in your traffic model called carefulness. This variable will influence how far ahead each driver looks when deciding whether to brake (lookahead distance) and how strongly they brake (deceleration rate). The goal is to simulate different levels of driver carefulness and observe the impact on traffic dynamics.
Details#
Carefulness Variable:
Range: The carefulness variable ranges from -1 to 1.
-1: Represents a totally reckless driver.0: Represents a neutral driver (default behaviour).1: Represents a totally careful driver.
Relationship to Model:
The lookahead distance and deceleration are determined by the carefulness value:
If
carefulness = -1:lookahead = 1 x speeddeceleration = 0.03
If
carefulness = 0:lookahead = 2 x speed(default behaviour)deceleration = 0.02(default behaviour)
If
carefulness = 1:lookahead = 3 x speeddeceleration = 0.01
Important Note: Carefulness is not discrete, it can take any value between -1 and 1 (e.g., 0.1 or -0.6).
Formula to Calculate Lookahead and Deceleration based on carefulness value:
lookahead_coeff = carefulness + 2(whereLookahead = lookahead_coeff x speed)deceleration = -0.01 x carefulness + 0.02
Scenarios to Simulate:
Scenario 1: All agents are totally reckless (
carefulness = -1).Scenario 2: All agents are totally careful (
carefulness = 1).Scenario 3: Carefulness is uniformly distributed among the agents.
Scenario 4: Carefulness is distributed according to a custom distribution of your choice (e.g., exponential distribution).
Task 1: implement the changes#
Modify the original car class (call it CarAdapted) to incorporate the carefulness variable.
Implement the formulas to calculate lookahead and deceleration based on carefulness.
Initialise and Run four models for the four scenarios
Display the agent-level and model-level DataFrames for each of the four scenarios
# answer here
Solution
Task 1: implement the changes:
Modify the original car class (call it CarAdapted) to incorporate the carefulness variable.
Implement the formulas to calculate lookahead and deceleration based on carefulness.
Initialise and Run four models for the four scenarios
Display the agent-level and model-level DataFrames for each of the four scenarios
To introduce carefulness to traffic dynamics and observe its effects, follow these steps:
Introduce Carefulness Variable:
Go to the
Carclass (you can call it CarAdapted) and add the carefulness variable.The carefulness parameter should range from -1 to 1, where -1 represents reckless drivers and 1 represents careful drivers.
Modify the
__init__method to accept carefulness as an additional argument and store it as an attribute of the car. This parameter will directly influence two key variables:Lookahead Distance: Defines how far ahead a driver looks when deciding to brake.
Deceleration Rate: Determines how aggressively a driver brakes.
Modify the Car Behaviour:
Inside the
CarAdaptedclass, after you initialise the carefulness variable, you need to modify the lookahead and deceleration logic.Lookahead: Use the formula
lookahead_coeff = carefulness + 2to calculate the coefficient. Then, calculatelookahead = lookahead_coeff * speed. This makes careful drivers look further ahead and reckless drivers look closer.Deceleration: Use the formula
deceleration = -0.01 * carefulness + 0.02to adjust the deceleration. A reckless driver will have a less aggressive deceleration, while a careful driver will brake more strongly.
Traffic Model Adjustments:
In the
TrafficJamModelAdaptedclass, add logic to handle different carefulness scenarios. Modify the__init__method to accept a carefulness_scenario argument.Based on the selected scenario, generate the carefulness values for all agents. You can implement the following scenarios:
Reckless Scenario: Set all drivers to
carefulness = -1.Careful Scenario: Set all drivers to
carefulness = 1.Uniform Distribution: Use a loop to assign a random carefulness value between -1 and 1 to each driver using
self.random.uniform(-1, 1).Custom Distribution: Use
np.random.exponential(scale=1, size=n_agents)to assign carefulness values following an exponential distribution, and adjust the result to fit within the -1 to 1 range by subtracting 1 (do not forget to import the random module)
For each agent, pass the carefulness value to the
CarAdaptedclass when creating the agent.To collect the results of the simulation, use the
DataCollectorthat is already integrated into the model. You can collect the carefulness values of the agents by adding:"carefulness": "carefulness"
Simulate the Scenarios:
After implementing the carefulness logic, we need to simulate the four scenarios to see the impact on traffic:
Scenario 1: All agents are reckless (
carefulness = -1).Scenario 2: All agents are careful (
carefulness = 1).Scenario 3: Assign uniformly distributed carefulness values between -1 and 1.
Scenario 4: Use the custom distribution for carefulness that you defined before.
Use the
TrafficJamModelAdaptedclass to simulate each scenario. Create instances of the model using different carefulness_scenario values and run the model for 100 time steps. Call them:reckless_model,careful_model,uniform_model, andcustom_modelAfter running the simulations, extract the model-level and agent-level data for each scenario into DataFrames to observe the results.
Task 2: simulation and visualisation#
a) Animation: Create animations showing the movement of cars for each scenario.
b) Speed Analysis: For each scenario, plot the mean and standard deviation of speeds over time.
c) Traffic Flow Analysis: For each scenario, plot the fraction of cars at maximum speed and the fraction of cars standing still at each time step.
# answer here
Solution
Task 2: simulation and visualisation:
a) Animation: Create animations showing the movement of cars for each scenario.
b) Speed Analysis: For each scenario, plot the mean and standard deviation of speeds over time.
c) Traffic Flow Analysis: For each scenario, plot the fraction of cars at maximum speed and the fraction of cars standing still at each time step.
a) Animation: Create animations showing the movement of cars for each scenario.
For this task, use the previous animation method to visualise the movement of cars, but this time, you need to create animations for all four scenarios. To do this, you can either repeat the animation code for each scenario manually or make your code more efficient by organizing the scenarios in a dictionary. Then, implement a loop that iterates through each scenario, updating the animation settings accordingly. This approach will allow you to avoid redundancy and streamline the animation process for each traffic model scenario.
b) Speed Analysis: For each scenario, plot the mean and standard deviation of speeds over time.
In this task, you will create plots to visualise the mean and standard deviation of speeds for each scenario over time. You can utilize Seaborn’s lineplot() function, which efficiently handles both the mean and the standard deviation in one shot.
You can either iterate over all scenarios in a loop or manually create individual plots for each scenario. Inside the loop, for each scenario, call the lineplot() function with the agent-level data from the model’s data collector, specifying x='Step' and y='speed'. Be sure to include the errorbar='sd' parameter to visualise the standard deviation. Do not forget the titles and labels for the x and y axes
c) Traffic Flow Analysis: For each scenario, plot the fraction of cars at maximum speed and the fraction of cars standing still at each time step.
In this task, you will create plots to visualise the fraction of cars at maximum speed and the fraction of cars standing still for each scenario over time. You can utilize Seaborn’s lineplot() function, which effectively displays the data in a clear and informative manner.
You can either iterate over all scenarios in a loop or manually create individual plots for each scenario. Inside the loop, for each scenario, call the lineplot() function twice: first to plot the fraction of cars at maximum speed by specifying x='Step' and y='num_max_speed', and then again to plot the fraction of cars standing still with y='num_standing_still'. Be sure to include appropriate titles and labels for the x and y axes.
Exercise 3: discussion#
Effect of carefulness: Analyse and discuss how driver carefulness affects traffic dynamics. Consider traffic flow, congestion, and the stability of speeds over time. From your analysis, can you conclude which carefulness coefficient leads to a better traffic situation?
Solution
Task 3: discussion:
Effect of Carefulness: Analyse and discuss how the carefulness of drivers affects traffic dynamics. Consider factors like traffic flow, congestion, and the stability of speeds over time. From your analysis, can you conclude which carefulness coefficient leads to a better traffic situation?
The discussion depends on your findings, but here is an example of some potential observations. Carefulness plays a significant role in shaping traffic dynamics, especially in terms of traffic flow, congestion, and speed stability. In scenarios where drivers are more careful (with a higher carefulness coefficient), traffic tends to flow more smoothly. These drivers look ahead more and decelerate earlier, which minimizes sudden stops and reduces the chances of traffic jams. As a result, you might observe more stable speeds over time, with fewer fluctuations and fewer cars coming to a complete stop.
In contrast, when drivers are less careful or reckless (with a lower carefulness coefficient), traffic tends to become more erratic. These drivers may maintain higher speeds, but their sudden braking and less cautious behaviour can lead to abrupt slowdowns and bottlenecks. This not only causes congestion but also creates instability in the traffic flow, as other drivers react unpredictably to these changes.
From such observations, you might conclude that a higher carefulness coefficient generally leads to a better traffic situation in terms of flow and stability, while lower carefulness tends to introduce more disruptions. However, the impact of carefulness can vary depending on factors like the number of cars or road conditions, so your specific results could differ based on these variables.
Task 4 (optional): one-dimensional parameter sweep#
If it is not clear which carefulness coefficient is best, perform a one-dimensional parameter sweep varying the carefulness parameter.
Convert the output of batch_run into a DataFrame for analysis.
Visualise using a Facet Grid: Create visualisations using a Facet Grid. You can decide what aspects to visualise. Inside each plot, you may use a line plot or a heatmap to represent the data.
# answer here
Solution
Task 4: one-dimensional parameter sweep
If it is not clear which carefulness coefficient is best, perform a one-dimensional parameter sweep varying the carefulness parameter.
Convert the output of batch_run into a DataFrame for analysis.
Visualise using a Facet Grid: Create visualisations using a Facet Grid. You can decide what aspects to visualise. Inside each plot, you may use a line plot or a heatmap to represent the data.
To explore how different levels of driver carefulness impact traffic dynamics, follow these steps:
Adjust the Model Class:
Update your
TrafficJamModelAdaptedclass to accept numerical values for the carefulness_scenario parameter instead of predefined scenarios.This means that rather than using fixed categories like ‘reckless’ or ‘careful’, you’ll now allow the model to accept a continuous range of carefulness values. You will need to assign the same carefulness value to all cars in the model
Perform a Batch Run:
Set up a batch run to systematically vary the carefulness_scenario parameter. You can test values like -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, and 1. These values range from reckless drivers (-1**) to careful drivers (1).
Keep other parameters such as average speed, acceleration, and deceleration fixed, but make sure to test the model across multiple iterations (e.g., 3 iterations per combination) and run the simulation for a sufficient number of time steps (e.g., 100 steps).
Visualise the Results:
After running the batch, convert the results into a DataFrame for easier analysis. Then, create visualisations using Facet Grid to help you compare the results across different carefulness levels.
For instance, you can plot the average speed, the number of cars at maximum speed, and the number of cars standing still over time, for each carefulness level.
Use a Facet Grid to organize your visualisations, with carefulness values as the columns (e.g., plot for -1, -0.75, -0.5, etc.). This allows you to see how driver behaviour affects traffic over time in a side-by-side comparison.
Observations:
Average Speed:
Reckless drivers (-1.0 to -0.5) tend to maintain higher speeds but show more fluctuations in their speed over time, indicating more reactive driving behaviour.
Moderate carefulness (-0.25 to 0.25) shows more stable speed profiles, with the average speed dropping initially and then stabilizing at a moderate level.
Careful drivers (0.5 to 1.0) exhibit a sharp drop in speed early on, with speeds stabilizing at lower values, suggesting a more cautious approach that prioritizes safety over speed.
fractions of cars at Maximum speed vs standing still:
Reckless drivers (-1.0 to -0.5) show a higher fraction of cars at maximum speed throughout the simulation, but this comes with very few cars standing still. Over time, there is a gradual decline in cars at max speed, with a slight rise in cars standing still, indicating increasing congestion or reaction delays.
Moderate carefulness (-0.25 to 0.25) results in more balanced behaviour. The fraction of cars at max speed decreases steadily, while the fraction of cars standing still slowly rises. This reflects a smoother but slightly more congested traffic flow, as some cars begin to slow down or stop.
Careful drivers (0.5 to 1.0) have a steep initial drop in the number of cars at max speed, and a consistent rise in the fraction of cars standing still. This suggests a cautious driving style where many cars choose to stop or slow down rather than maintain higher speeds, potentially leading to more stable but slower traffic flow.
In summary, moderate carefulness seems to offer the most balanced approach, combining a reasonable speed with stability. Extreme recklessness may be faster but less reliable, while extreme carefulness results in much slower, more congested traffic.
Exercise 2: friends on the road#
Overview#
In this exercise, we will explore the impact of behavioural correlation among agents in a traffic simulation. Specifically, we’ll investigate how friendships between drivers influence their driving behaviours, such as speed and deceleration patterns.
Objective#
The goal is to model how friendships among drivers (agents) affect their driving behaviour and to analyse the resulting impact on traffic dynamics. Each agent can have a “friend” among the nearby cars, and their behaviours may become correlated as a result.
Behaviour model#
Defining friendships:
Each agent (driver) can only interact with one friend at a time.
An agent’s friend must be one of the three cars directly in front of them.
The friendship relationship is such that if one agent decelerates, their friend will also decelerate, but at their own deceleration rate (not at the rate of the original agent).
Assigning friendships:
For each agent, randomly select one of the three cars directly in front as their friend. For example, agent 1 can have agent 2, agent 3, or agent 4 as their friend.
Scenarios to simulate:
Fixed friendships: Friendships are established at the beginning of the simulation and remain constant throughout.
Dynamic friendships: Friendships are reassigned at every time step, meaning each agent may have a different friend in each time step.
Task 1: implement the model changes for each scenario#
Code implementation: Modify the original car class to include the friendship behaviour. Implement the logic for both fixed and dynamic friendship scenarios.
# answer here
Solution
Task 1: Implement the model changes for each scenario:
Code implementation: Modify the original car class to include the friendship behaviour. Implement the logic for both fixed and dynamic friendship scenarios.
To simulate how friendships among drivers influence traffic dynamics, follow these steps:
Modify the Car Class:
Extend the car class to include a friendship behaviour by adding a
friendattribute. Each agent can have one friend from the next three cars in front. Implement a method that assigns this friend randomly from the next three cars. Remember that it is a circular track
Incorporate Friendship Behaviour:
If the agent decelerates because the car in front is too close, their friend should also decelerate, but using their own deceleration rate. You can incorporate this behaviour within the agent’s
step()method.
Fixed vs. Dynamic Friendships:
Fixed Friendships: At the start of the simulation, assign each agent a friend and keep that relationship constant throughout the simulation.
Dynamic Friendships: Reassign friends at each time step, so agents interact with different friends dynamically.
Adjust the Model:
Modify the model to support both fixed and dynamic friendships. Pass a parameter to the model to specify whether friendships should be fixed or dynamic, and update the initialization accordingly.
Run and Analyse:
Simulate the model for both fixed and dynamic friendships, and analyse how these affect driving patterns, such as speed, deceleration, and congestion.
Task 2: simulation and visualisation#
a) Animation: Create animations to visualise the movement of cars for each scenario, showing how friendships influence traffic dynamics.
b) Speed analysis: For each scenario, plot the mean and standard deviation of speeds at each time step to observe how behavioural correlation affects overall traffic flow.
# answer here
Solution
Task 2: Simulation and visualisation:
a) Animation: Create animations to visualise the movement of cars for each scenario, showing how friendships influence traffic dynamics.
b) Speed analysis: For each scenario, plot the mean and standard deviation of speeds at each time step to observe how behavioural correlation affects overall traffic flow.
a) Animation: Create animations showing the movement of cars for both fixed and dynamic friendship scenarios.
For this task, you will use the animation method from before to visualise the movement of cars, but now, you need to create animations for both fixed and dynamic friendship scenarios. You can manually repeat the animation code for each scenario or make the process more efficient by placing both scenarios in a dictionary and iterating through them. This way, you avoid redundancy and create animations for both traffic models in a streamlined and efficient manner. Each animation should reflect the different behaviours of the cars in the fixed and dynamic friendship models. Be sure to update the titles and labels to differentiate between the scenarios.
b) Speed Analysis: For each scenario, plot the mean and standard deviation of speeds over time.
In this task, you will plot the mean and standard deviation of speeds for both the fixed friendship and dynamic friendship scenarios over time. You can use Seaborn’s lineplot() function, which allows you to plot both the mean and the standard deviation of speeds at each time step.
First, run the models for the fixed friendship and dynamic friendship scenarios over a set number of time steps. After running the models, extract the agent-level data from the model’s data collector.
For each scenario, you can use lineplot() to visualise the speeds by specifying x=’Step’ for the time step and y=’speed’ for the speeds. Add the errorbar=’sd’ parameter to display the standard deviation. Ensure that you label both axes and include appropriate titles for each plot. You can either create separate plots manually for each scenario or handle both in a loop for efficiency.
Exercise 3: discussion#
Analysis of behavioural correlation: Discuss the effect of friendship-induced behavioural correlations on traffic patterns. Consider traffic smoothness, congestion, and variability in speed.
Solution
Task 3: discussion:
Analysis of behavioural correlation: Discuss the impact of these friendship-induced behavioural correlations on traffic patterns. Consider factors like traffic smoothness, congestion, and variability in speed.
NOTE: The discussion depends on the results you get. But here is an example of potential observations you could have:
Overall, the behaviour in both the fixed and dynamic friendship scenarios is quite similar. However, a few differences are noticeable:
Fixed Scenario:
Mean Speed: The speed fluctuates but remains somewhat consistent over time, without any significant long-term drift. There are oscillations in speed, but the mean remains around the 0.08 to 0.1 range.
Standard Deviation: The shaded area representing the standard deviation is relatively large and increases as the steps progress. This indicates higher variability in speed, particularly in the second half of the simulation. The spread shows that individual speeds are oscillating around the mean, with significant deviations.
Dynamic Scenario:
Mean Speed: The speed in the dynamic scenario starts at a similar level as the fixed scenario, but it shows more noticeable fluctuations, especially earlier in the steps. The mean decreases slightly and oscillates more irregularly, showing an unstable pattern without clear stabilization.
Standard Deviation: The variability (shaded area) is higher in the initial steps and remains quite large throughout the steps, indicating considerable fluctuations in the speed. However, compared to the fixed scenario, the variation appears more erratic and does not smooth out as much, suggesting the dynamic scenario may have more complex or unstable underlying factors driving these fluctuations.
Comparision:
The fixed friendship scenario allows for a more predictable traffic flow as drivers gradually adapt to the same friends over time, leading to fewer disruptions in speed. Meanwhile, the dynamic friendship scenario introduces more variability and unpredictability, preventing the system from reaching a stable equilibrium. Therefore, fixed friendships may result in a relatively smoother traffic patterns, while dynamic friendships tend to generate more traffic disturbances and congestion due to the constant behavioural changes.
Completion and reflection#
Before you finish, confirm that you can:
Run and visually inspect the base traffic model before changing parameters.
Use a one- or two-dimensional sweep with repetitions to support a claim.
Distinguish a random fluctuation from a parameter effect in your explanation.
State which metric best captures the traffic mechanism you investigated.