
产品经理谈一谈:交通系统运转的核心模型
日常生活中我们会坐高铁、地铁、公交、大巴,这些交通系统为我们的生活带来了极大的便利,车辆时刻表是如何动态维护的?购票逻辑如何处理的?本文展开谈一谈。
1. 概述
本文从产品经理的视角展开内部的实现逻辑,并用Python Pandas实现实时生成列车时刻表、并实现购票的核心逻辑,基于本代码逻辑可以实现其他拓展功能。
输出内容为两张表格:
2. 架构逻辑
架构分为三部分
2.1 前期准备
道路情况、营运资质、前期建设等不是本文关注的点,我们不展开,本文主要关注以下内容
2.1.1 路线
路线就是哪里是出发站,经过哪些站,哪里是终点站。高铁、地铁、公交、专线大巴的运营都是固定路线的运营,都有固定的入站和出站口。都有正方向和反方向的运营。出租和私家车虽然不会有固定的路线,但是每次出行也有出发站、终点站,实际上也适用本模型。路线主要包括:站点编号、站点名称、距离上一个站点的距离三个信息。
2.1.2车辆
交通靠车辆承载,不同的车辆的成本造价、功率、载客量、速度各有不同,同时车辆也是交通运营的主要成本之一。车辆主要关注以下信息:
车辆编号:唯一识别车辆的编号,如果是汽车可以是车牌,如果是高铁和地铁可以是其他自定义标识。
座位:是整个运输过程中任意时间点,最大可承载的客户数量,客户中途有上有下,原则上同一时间可运载的客户不能超员。
功率:功率是指单位距离所做的功,高铁、地铁、油动力汽车、电动力汽车功率各有不同,根据功率和车辆的能量转化率和能量价格,很容易计算每公里花费的金额。车辆成本的计算,本文并未展开,但是留下了钩子。
速度:距离/速度=时间,根据速度可以计算列车运营时间表。
2.1.3 排班表
排班表指的每条路线安排的车辆、发车时间。
始发站/方向:确定车辆行驶经过的车站,用来计算车辆到站的时间。
车次:指的是某个时间点发出的车。高铁因为距离远,车次少,比较容易注意到车次的概念。地铁、公交因为距离近,周期短,所以感知略弱,但是这两者也是有车次的概念。
发车时间:根据发车时间,和每个站的距离和速度可以计算到达每个站的时刻表。实际运营时,一般只有高铁、地铁这些有独立车道的运载工具能做到比较准时,而汽车、大巴这些使用共享车道的车辆,由于道路情况复杂,难以做到准时。不过这些特点不影响本文的分析。
2.2 实际运营
实际运营指的是,基于前期准备产生列车运营时刻表。实际运营主要包括以下核心部分:
2.2.1 根据排班表计算车辆时刻表
排班表给到车辆和发车时间,根据距离下个站点的距离和车辆行驶的速度,可以预估到达后续各站点的时间。
δ时间=δ距离/δ速度
实际车辆运行时,距离是固定的,速度是变化的,所以用该公式计算仅是理想情况。实际业务中可以使用卫星和钟表直接测量,两种取值方式对时刻表的计算逻辑没有影响。
2.2.2 售票
售票场景对高铁这种长距离、车次少的交通工具体验最明显。我们在12306上下单买票,系统必须保证车票不能超售。
2.3 客户服务
客户服务,此处指的是售票、付款等,系统未展开,系统会自动记录售票记录。
2.4 代码片段
完整源代码可以在GitHub中,搜索"ImPmZhang"查看
3. 拓展分析
此处仅举三个场景。
3.1 收入和支出
基于时刻表,可以统计每列车运营的公里数、消耗能量数从而计算成本。
3.2 车站停留时间分析
以高铁为例,车站建好后,车站的吞吐量就定下来了,但是随着城市的发展车站服务的客户可能会持续增加。系统可以根据每个车站上下车的旅客数量,决定是否需要延长或缩短本站的停留时间。
3.3 用户画像分析
地铁、公交因为不提供差异化服务,用户画像分析的意义不是特别强,高铁上有一等座、二等座,可以提供差异化服务,可以基于RFM模型研究不同路线的客户情况,为一等座、二等座的数量安排提供决策依据。
相对于高铁而言,飞机运营更个性化,使用机器学习算法做用户画像分析产生的意义会更大。