城市主干道路网络数据生成:20个节点、10个时刻、交通拥堵模拟
城市主干道路网络数据生成:20个节点、10个时刻、交通拥堵模拟
本代码生成一个包含 20 个节点、100 条无向边的城市主干道路网络数据。每个节点在每个时刻都包含车辆密度和平均车速,并根据这些特征模拟交通拥堵程度,分为拥堵、缓行、畅通三类。代码提供节点连接关系、节点特征和对应标签。
import random
# 生成节点连接关系
def generate_edges(nodes):
edges = []
for i in range(len(nodes)):
for j in range(i+1, len(nodes)):
edges.append((nodes[i], nodes[j]))
return edges
# 生成节点特征和对应标签
def generate_features(nodes, edges, num_timeslots):
features = []
labels = []
for _ in range(num_timeslots):
node_features = {}
for node in nodes:
# 随机生成车辆密度和平均车速
density = random.randint(1, 100)
speed = random.randint(30, 100)
node_features[node] = (density, speed)
# 根据车辆密度和平均车速确定交通拥堵程度
for edge in edges:
source, target = edge
source_density, source_speed = node_features[source]
target_density, target_speed = node_features[target]
if source_density > 70 and target_density > 70:
label = '拥堵'
elif source_density > 50 or target_density > 50 or source_speed < 50 or target_speed < 50:
label = '缓行'
else:
label = '畅通'
labels.append(label)
features.append(node_features)
return features, labels
# 生成节点列表
nodes = [i for i in range(1, 21)]
# 生成节点连接关系
edges = generate_edges(nodes)
# 生成节点特征和对应标签
features, labels = generate_features(nodes, edges, 10)
# 输出节点连接关系
print('节点连接关系:')
for edge in edges:
print(edge)
# 输出节点特征和对应标签
for i in range(len(features)):
print('时刻{}的特征和标签:'.format(i+1))
for node, feature in features[i].items():
print('节点{}:车辆密度={}, 平均车速={}, 标签={}'.format(node, feature[0], feature[1], labels[i*len(edges)+nodes.index(node)]))
代码说明:
generate_edges(nodes)函数生成节点之间的连接关系,共 100 条无向边。generate_features(nodes, edges, num_timeslots)函数生成每个节点在每个时刻的车辆密度和平均车速,并根据这些特征判断交通拥堵程度。- 代码中车辆密度和平均车速的生成是随机的,可以根据实际情况进行修改。
- 交通拥堵程度的判断逻辑也可以根据实际需求进行调整。
输出内容:
代码会输出节点连接关系,以及每个时刻每个节点的车辆密度、平均车速和对应的交通拥堵程度标签。
应用场景:
本代码可以用于模拟城市交通状况,为交通管理提供数据支持,例如:
- 交通流量预测
- 拥堵路段识别
- 交通信号控制优化
- 导航系统开发
原文地址: https://www.cveoy.top/t/topic/jz5k 著作权归作者所有。请勿转载和采集!