2026 年,城市交通信号控制正在从“固定配时”走向“自适应优化”。
过去,很多路口红绿灯按照固定周期运行。早高峰、晚高峰、平峰和夜间可能有不同方案,但本质上仍然是预设规则。
这种方式简单稳定,但面对突发拥堵、学校放学、商圈活动、事故占道和天气变化时,固定配时很难及时适应。
现在,随着视频检测、地磁感应、车联网数据、地图导航数据和 AI 预测能力发展,交通信号控制开始进入新的阶段。
系统可以根据车流量、排队长度、平均车速、公交优先需求和相邻路口状态,动态调整信号周期,并形成绿波协调。
城市拥堵不是静态问题。
一个路口放行时间过短,会导致车辆排队外溢;一个方向绿灯过长,又会浪费其他方向通行能力。如果多个路口缺少协同,还可能出现“刚过一个绿灯,又遇到下一个红灯”的情况。
智慧交通信号系统可以帮助管理者回答几个问题:
下面用 Python 写一个简化版智慧交通信号优化系统。
第一步是定义路口状态。
每个路口包含四个方向的排队长度、车流量、平均车速和当前信号周期。
import json
import random
from datetime import datetime
from collections import defaultdict
DIRECTIONS = ["north", "south", "east", "west"]
class Intersection:
def __init__(self, intersection_id, name):
self.intersection_id = intersection_id
self.name = name
self.signal_cycle = 90
self.green_plan = {
"north_south": 40,
"east_west": 40
}
self.updated_at = datetime.now().isoformat()
def to_dict(self):
return {
"intersection_id": self.intersection_id,
"name": self.name,
"signal_cycle": self.signal_cycle,
"green_plan": self.green_plan,
"updated_at": self.updated_at
}路口是交通信号优化的基本单位。
真实系统中,路口数据可能来自摄像头、雷达、地磁和导航平台。
第二步是模拟采集各方向交通状态。
def collect_traffic_data(intersection: Intersection):
direction_data = {}
for direction in DIRECTIONS:
direction_data[direction] = {
"queue_length": random.randint(0, 80),
"vehicle_count": random.randint(20, 300),
"avg_speed": round(random.uniform(5, 45), 2),
"bus_waiting": random.random() < 0.15
}
return {
"intersection_id": intersection.intersection_id,
"name": intersection.name,
"signal_cycle": intersection.signal_cycle,
"current_green_plan": intersection.green_plan,
"directions": direction_data,
"collect_time": datetime.now().isoformat()
}交通数据必须尽量实时。
如果数据延迟过大,信号优化可能反而造成新的拥堵。
第三步是计算每个方向的拥堵程度。
def calculate_congestion_score(direction_record):
score = 0
issues = []
if direction_record["queue_length"] > 60:
score += 4
issues.append("排队长度较长。")
elif direction_record["queue_length"] > 35:
score += 2
issues.append("排队长度偏高。")
if direction_record["avg_speed"] < 10:
score += 4
issues.append("平均车速较低。")
elif direction_record["avg_speed"] < 20:
score += 2
issues.append("车速偏低。")
if direction_record["vehicle_count"] > 220:
score += 2
issues.append("车流量较大。")
if direction_record["bus_waiting"]:
score += 1
issues.append("存在公交优先需求。")
if score >= 7:
level = "high"
elif score >= 4:
level = "medium"
elif score > 0:
level = "low"
else:
level = "normal"
return {
"congestion_score": score,
"congestion_level": level,
"issues": issues
}拥堵评分可以把复杂交通状态转化为可决策指标。
信号优化要优先处理高拥堵方向。
第四步是把南北方向和东西方向进行聚合。
def analyze_intersection_pressure(traffic_record):
direction_results = {}
for direction, data in traffic_record["directions"].items():
direction_results[direction] = calculate_congestion_score(
data
)
ns_score = (
direction_results["north"]["congestion_score"]
+ direction_results["south"]["congestion_score"]
)
ew_score = (
direction_results["east"]["congestion_score"]
+ direction_results["west"]["congestion_score"]
)
if ns_score > ew_score:
main_pressure = "north_south"
elif ew_score > ns_score:
main_pressure = "east_west"
else:
main_pressure = "balanced"
return {
"intersection_id": traffic_record["intersection_id"],
"direction_results": direction_results,
"north_south_score": ns_score,
"east_west_score": ew_score,
"main_pressure": main_pressure
}路口信号通常按相位控制。
通过方向聚合,可以判断应该优先放行哪一组方向。
第五步是根据路口压力生成新的绿灯方案。
def optimize_signal_plan(intersection, pressure_result):
base_cycle = intersection.signal_cycle
min_green = 25
max_green = 60
ns_green = intersection.green_plan["north_south"]
ew_green = intersection.green_plan["east_west"]
if pressure_result["main_pressure"] == "north_south":
ns_green = min(ns_green + 10, max_green)
ew_green = max(base_cycle - ns_green - 10, min_green)
elif pressure_result["main_pressure"] == "east_west":
ew_green = min(ew_green + 10, max_green)
ns_green = max(base_cycle - ew_green - 10, min_green)
else:
ns_green = 40
ew_green = 40
return {
"intersection_id": intersection.intersection_id,
"old_plan": intersection.green_plan,
"new_plan": {
"north_south": ns_green,
"east_west": 31224.t.kuaisou.com
},
"message": "已根据路口压力生成信号优化方案。"
}信号优化不能无限延长某个方向绿灯。
必须在多个方向之间保持平衡,避免转移拥堵。
第六步是根据相邻路口压力生成绿波协调建议。
def generate_green_wave_suggestion(pressure_results):
suggestions = []
high_pressure = [
item for item in pressure_results
if item["main_pressure"] != "balanced"
]
direction_count = defaultdict(int)
for item in high_pressure:
direction_count[item["main_pressure"]] += 1
for direction, count in direction_count.items():
if count >= 2:
suggestions.append({
"corridor_direction": direction,
"action": "green_wave_coordination",
"message": "多个路口同方向压力较高,建议启用绿波协调。"
})
if not suggestions:
suggestions.append({
"corridor_direction": "all",
"action": "31225.t.kuaisou.com ",
"message": "当前路网压力相对均衡,保持常规控制。"
})
return suggestions绿波协调可以提升干线道路通行效率。
它不是只优化单个路口,而是优化一段道路的连续通行体验。
最后模拟多个路口的交通信号优化。
def run_smart_traffic_signal_optimization():
intersections = [
Intersection("I001", "人民路-建设路"),
Intersection("I002", "人民路-青年路"),
Intersection("I003", "人民路-科技路")
]
traffic_records = []
pressure_results = []
signal_plans = []
for intersection in intersections:
record = collect_traffic_data(intersection)
pressure = analyze_intersection_pressure(record)
plan = optimize_signal_plan(
intersection,
pressure
)
traffic_records.append(record)
pressure_results.append(pressure)
signal_plans.append(plan)
green_wave = generate_green_wave_suggestion(
pressure_results
)
report = {
"report_name": "智慧交通信号自适应优化报告",
"traffic_records": traffic_records,
"pressure_results": pressure_results,
"signal_plans": 31227.t.kuaisou.com
"green_wave_suggestions": green_wave,
"generate_time": datetime.now().isoformat()
}
return report
if __name__ == "__main__":
report = run_smart_traffic_signal_optimization()
print(json.dumps(
report,
ensure_ascii=False,
indent=2
))从这套流程可以看到,智慧交通信号正在从固定配时走向自适应控制。
未来,红绿灯不会只按照预设时间运行,而会根据实时车流、排队长度、公交需求和相邻路口状态动态优化。
交通治理的重点,也会从单点控制走向路网协同。
谁能把路口感知、拥堵预测和绿波协调结合起来,谁就更容易提升城市道路通行效率。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。