
起因国庆第一天我在家门口的十字路口被堵住了。站在路边等的那几分钟我盯着信号灯看了老半天发现一个挺明显的事南北向的车排成长队东西向基本没几辆可红绿灯还是照老规矩南北30秒、东西30秒地轮着放。我脑子里就冒出个念头车流都这么不均匀了红绿灯就不能看人下菜、跟着车流自己调吗这篇文章就是把今天的观察和想法、加上后来查的东西整理成一篇随笔。一、发现问题路口是怎么堵起来的那天的情况用一句话就能说清该放车的时候不够放不该放的时候白白放。南北向车多绿灯那30秒根本不够用车越积越长东西向车少30秒绿灯大部分时间是空的纯浪费。这种一头多一头少的车流行话叫潮汐车流。国庆这种日子方向性特别强比平时更明显老配时的毛病也就被放大了。我当时的疑问很简单现在的红绿灯配时基本都是写死的——每方向绿灯几秒、多久轮一次设好就不怎么动。能不能让灯自己长眼睛南北车多就给南北多点绿灯东西没车就干脆跳过别让它干等。这想法后来一查还真不新鲜城市交通里早就在做专业名字叫自适应信号控制。二、思考和检索自适应信号灯到底行不行1.它是怎么看和算的说穿了就三步看——靠地感线圈、摄像头、雷达这些家伙实时知道每个方向排了多少车、车流多大算——根据各方向的需求算出绿灯该给多久动——信号机执行新配时比如把南北绿灯从30秒拉到50、60秒东西压到15~20秒甚至直接跳过。落在那天那个路口大概就是这么回事方向现在的固定配时自适应会怎么改南北绿灯30秒延长到50~60秒东西绿灯30秒缩短到15~20秒没车时跳过目标说白了就一句在保障安全、也保住行人过街时间的前提下把绿灯尽量给排队长、等得久的方向让大家平均等待时间最短。2.现实里的做法自适应不是一种技术是一家子常见的这么几种感应控制最简单的有车就延。每个方向给个最低绿灯后面还有车就再延几秒没车立刻切。东西向没车就跳过、南北向连着放很多小路口在用。单点自适应只管一个路口四个方向的配时。便宜、上得快但只看得见自己容易把拥堵推到下一个路口。区域协同绿波一片路口联网统一调度不光看当前路口还看上下游做成一路绿灯。代表作是英国的SCOOT、澳大利亚的SCATS杭州城市大脑也算这类。强化学习让路口自己玩着学着通过大量仿真和真实数据慢慢学会车多就给绿灯、没车就跳过。这几年很火但训练贵、还讲不清为什么这么配。3.那为什么大街上没全换道理不难落地却卡在几个硬地方费钱摄像头、雷达、线圈要装要养老路口改造是一笔钱小路口一般不配不能只盯着机动车东西向车少可要是行人、电动车多绿灯就不能压太短过街安全是底线没得商量极端流量它也怕算法一般是短时微调绿灯有上限。比如南北上限60秒车再多也不能一直放得给对向留最低时间不然那边就饿死了黄灯、全红不能省那是保命的时间车没走完就放另一方向会出事故单点调好了可能坑了邻居一个路口优化完堵点会往下一个路口挪。所以一句话技术上早就可行了现实里卡在钱、安全和协调上于是很多路口还是老配时。三、发散和总结从路口想到网络再想到人1. 红绿灯其实和网络的堵车是一回事发散一想我忽然觉得路口信号灯和计网里的拥塞控制特别像。都是在有限资源里实现资源的合理调度、避免无效浪费。交通路口计算机网络十字路口路由器车道通行能力链路带宽车辆数据包排队车辆路由器缓冲区绿灯时长分给某个方向的传输时间相通的地方好几条挑几条说都拿队伍长度当信号红绿灯看排队车数网络看缓冲区排队延迟变大、丢包队伍长了就多给资源或降速资源都有上限不能无限分南北绿灯不能无限长、东西必须保底网络里每个流也有最小保障和速率上限都怕突发国庆瞬时车流暴涨对应网络的流量突发都有局部好了、全局未必好的坑单路口调好可能把堵挪到下一个路口单路由器只盯自己缓冲区也容易把拥塞甩给下游都得靠区域或全局协同。网络的经验可以迁移到智慧交通的红绿灯控制上别等堵死再动手网络里有个思路叫RED队列快到满之前就提前干预。红绿灯可以学排队接近阈值就提前慢慢加绿灯而不是排到上一个路口才猛调按权重分网络里按权重分带宽红绿灯可以学南北车多权重高多分点东西权重低但保底别让谁饿死。不过说到底两者有个没法照搬的根本差别网络能丢包交通不能丢车。网络堵了直接丢包、让发送方重传就行车不能扔只能限流慢慢放。这是最大的不同路口是你用我就不能用南北通行时东西绝不能放相位互斥网络链路可以多条流一起走车有惯性、司机还是人车不能瞬间加速消失司机还会抢道、犹豫比数据包难伺候多了数据包能存车不能存网络需求可以压一压再发交通需求当下消化不掉就变成堵。2. 那天四个交警其实在干人工自适应的活那天现场来了4个交警站的位置和干的活我看下来大概是这样南北进口一个管着驶进路口的车不让车一直往里堆防路口里面塞满——车一塞满绿灯也走不动叫死锁东西进口一个压着东西机动车进来给行人、电动车找空当放行路口中央一个指挥把路口里滞留的车清走保证上一个方向的车走干净了远端机动一个盯着排队尾巴看上游还有没有车源源不断来好通知进口岗控流顺便处理剐蹭、乱停。他们最核心的一招就一句先把路口里面清空再管放不放车而不是一个劲儿放。我原来也以为南北车多就多放南北绿灯就行后来才明白路口一旦塞满放多少车都白搭只会越堵越死。所以交警宁可间歇性截断来车等路口消化完再放一批。这套东西换成网络的词就是入口限流——不是等缓冲区满了才丢包而是提前管住涌进来的流量。那我们普通人遇到这种堵能干嘛进路口前看一眼对面出口——出口堵死了就算绿灯也别开进去不然卡在中间把横向车流也锁死了这是最要紧的一条别抢道别加塞加塞只会让清空更慢越添越堵交警的手势永远优先于红绿灯这是法规规定的远远看到长队提前找小路绕别硬往主路挤。3. 自动化和人各自能干到哪回头把这两天琢磨的拢一拢自适应红绿灯7×24自动转便宜、规范、有保底但只能做微调遇上路口被填满这种死锁就没辙也处理不了事故、占道交警现场指挥看得全、能限流能分流、能临时改规则、能处理死锁但费人力、不能一直盯着还受视线体力限制。所以堵也得分两层只是排队长、路口里面是空的——自适应红绿灯就能解多给主方向绿灯消化排队就行路口里面都被车填满了——光调绿灯时长完全没用必须从外面控流这正是交警在干的事。很多自适应系统的局限也在这只能处理第一层第二层的死锁还得靠人。4. 以后的路口会变成什么样把这一天捋下来脉络其实很清楚现在多数路口还是固定配时节假日靠节假日专用方案或者交警人力兜底趋势从固定配时到自适应到一片路的协同再到大数据和强化学习驱动的智慧交通现实算法在进步可人力还得兜底。更合理的前景不是算法取代交警而是算法管日常、交警管突发、系统把交警的操作记下来反哺算法人机一起干活。最后把这篇随笔收个尾给大家留几个问题讨论你心目中的智慧交通是什么样的未来的交通管控会是什么样随着无人驾驶时代的到来需要哪些配套的基础设施欢迎在评论区聊聊你的看法。