赛题任务
:针对工作日早高峰厦门全岛附近停车和用车问题,自由进行数据分析和算法模型构建,以共享单车资源合理分配为目标,设计共享单车调度方案;
赛题数据
:共享单车轨迹数据、共享单车停车点位(电子围栏)数据、共享单车订单数据、轨道站点进站客流数据、轨道站点出站客流数据 和 轨道站点闸机设备编码数据;
共享单车作为城市交通中重要的一环,可以方便市民便捷出行。但单车具体的位置随着群体波动,并且容易出现单车潮汐和分布不均衡的情况,最终导致单车利用率较低。
$$单车利用率 = \frac{每小时单车骑行秒}{3600秒}$$
首先我们可以统计不同品牌单车的利用率:
# 共享单车轨迹数据
bike_track = pd.concat([
pd.read_csv(PATH + 'gxdc_gj20201221.csv'),
pd.read_csv(PATH + 'gxdc_gj20201222.csv'),
pd.read_csv(PATH + 'gxdc_gj20201223.csv'),
pd.read_csv(PATH + 'gxdc_gj20201224.csv'),
pd.read_csv(PATH + 'gxdc_gj20201225.csv')
])
bike_track = bike_track.sort_values(['BICYCLE_ID', 'LOCATING_TIME'])
bike_use_ratio = bike_track.groupby(['source','BICYCLE_ID', 'hour'])['date'].count() * 15.0 / 3615
bike_use_ratio = bike_use_ratio.reset_index()
bike_use_ratio.groupby(['source', 'hour'])['date'].mean()
统计结果:
source hour
halou 6 0.157031
7 0.221240
8 0.315490
9 0.223382
meituan 6 0.092250
7 0.099389
8 0.099104
9 0.108867
qingju 6 0.054113
7 0.161101
8 0.195099
9 0.120881
Name: date, dtype: float64
从统计结果我们可以看出哈喽单车的利用率是其中最高的,而且随着早高峰的到来变化也非常明显。其次是青桔单车,单车利用率也较高。表现最差的是美团单车,单车利用率较低,且在早高峰并没有充分利用。
对于共享单车利用率比较低的原因主要是单车调度不到位导致的,即在需要骑车的位置要有单车。这个过程就是单车调度的目标,在原始电单车分布的情况下对单车进行调度,让单车利用率变得更高。但是单车调度是存在成本的:
调度具体的衡量因素包括:
因此单车调度方法的优化指标可以写为:
$$ \begin{align} 优化指标 &= min(1-全局单车使用率) + 调度成本 \\ &=min(1-全局单车使用率)+min(调度单车个数) + min(调度单车次数) + min(调度单车距离) \end{align} $$
对于单车调度可以考虑从订单数据和轨迹数据同时入手:
调度的目的是希望增加单车单位时间内的骑行率,所以设计的调度原则可以为:
具体的调度策略可以为:
因此现有的数据可抽象为,在给定具体的潮汐点和停车点位置$V$组成的地图$Map_{bike}$的情况下,具体需要具体位置调度,如从位置$v_1$到$v_2$完成$w_{1-2}$的单车调度。
思路
:按照区域完成单车调度,匹配单车使用需求;
实现过程
:
优缺点:
优点
:计算简单,速度快;缺点
:只能完成局部计算,且不是全局最优的策略;思路
:将每种调度算法视为个体,将单车位置$V$调度过程视为一个变量序列,使用遗传算法完成演化;
实现过程
:
交叉
和变异
操作:交叉
:对两种调度策略互换其中部分调度过程;变异
:选择一种调度策略,对调度过程进行随机修改,如修改调度单车数量和调度路线;优缺点:
优点
:是全局优化的策略,且有可能搜索到最优策略;缺点
:运行时间较长,且演化过程中的交叉和变异,需要解决调度冲突的问题;© 2019-2023 coggle.club 版权所有 京ICP备20022947 京公网安备 11030102010643号