DRT

drtOnline.py#

drtOnline.py 工具可用于模拟共享的需求响应式交通(DRT)。 该工具使用 TraCI出租车设备 来控制 请求和 DRT 车辆。请求动态到达,并由调度器处理,调度器旨在合并多个请求, 以在最小化整个车辆车队里程的同时,最大化服务的请求数量。

如果您不需要模拟共享服务,可以直接使用 SUMO 中的出租车设备, 无需使用此工具。请参阅 出租车 和 相应的 出租车服务教程

该工具需要 python3 和 Python 线性规划(LP)建模工具 PuLP(至少 2.0 版本)。 在 Ubuntu 20.04(或更早版本)上,请不要安装 python3-pulp 包, 请使用 pip 代替。

最基本的调用方式如下:

python tools/drt/drtOnline.py -n <net-file> -r <route-file> --taxi <vehicle-file>

路线文件包含请求,这些请求被定义为带有乘车元素的人员,并包含 DRT 车辆的班次信息。例如:

<routes>
    <person id="0" depart="0.00">
        <ride from="edgeStart" to="edgeEnd" lines="taxi"/>
    </person>
</routes>

车辆文件包含 DRT 车辆,这些车辆必须配备出租车设备。文件应如下所示:

<routes>
    <vType id="taxi" vClass="taxi">
        <param key="has.taxi.device" value="true"/>
    </vType>
    <trip id="taxiA" depart="0.00" type="taxi" personCapacity="12">
        <stop lane="edge0" triggered="person"/>
    </trip>
</routes>

您可以像在 SUMO 中一样更改车辆的容量以及其他属性。请参阅 车辆属性

作为输出,会生成一个 tripinfo.xml 文件,其中包含有关每个请求或人员以及车辆的信息。结果属性为 <vehicle="NULL"> 的人员代表无法服务的订单,因此被拒绝。

该工具有不同的选项来调整 DRT 服务。最相关的选项有:--max-wait 选项,用于定义接载请求的最大等待时间(默认 900 秒);--sim-step,用于定义收集新预约的时间步长(默认 30 秒);--drf 选项,用于定义直接路线因子,该因子用作设置人员可接受的 DRT 服务最大行程时间的辅助参数。DRT 服务的最大行程时间不能大于直接行程时间乘以该因子,默认值等于 2。

darpSolvers.py#

这是 drtOnline.py 使用的辅助工具,包含可用于 DRT 车辆路径规划的算法。

drtOrtools.py#

工具 drtOrtools.py 通过 TraCI出租车设备 在 SUMO 中对需求响应式交通(DRT)进行建模,并使用 ortools 来解决车辆路径问题。

drtOnline.py 类似,请求动态到达,并合并多个请求,以在最小化整个车辆车队的里程(或持续时间)的同时,最大化服务的请求数量。由于使用 ortools 作为求解器,进一步的扩展更容易建模。

该工具需要 python 以及 numpyortools 包。最基本的调用方式如下:

python drtOrtools.py -s example.sumocfg

其中 example.sumocfg 是一个有效的 SUMO 配置文件,引用了网络文件、路线等。路线文件应包含带有出租车设备的出租车以及带有包含 lines="taxi" 的乘车信息的人员(或容器)。 也可以进行 预订单

drtOrtools.py 具有以下选项:

属性名称 值类型 默认值 描述
-e --end int (秒) .sumocfg 中的结束时间,否则为 90000 秒 结束仿真的时间步长
-i --interval int (秒) 30 秒 收集请求的时间间隔,如果在此间隔后有新请求,求解器将启动
-n --nogui bool false 如果为 true,则仅使用命令行版本的 sumo,否则使用 sumo-gui
-v --verbose bool false 打印更多有关调度计算的信息
-t --time-limit int (秒) 10 秒 求解器计算单个调度问题的最大时间
-d --cost-type str('distance' 或 'time') distance 定义是使用距离还是时间作为调度的成本
-f --drf float 1.5 直接路线因子:请求路线的允许最大成本与最小可能成本(直接路线)的比值因子;使用 '-1' 忽略此约束
-a --fix-allocation bool false 如果为 true:一旦找到解决方案并且请求已分配给出租车,该分配将在所有后续计算中保持不变
-w --waiting-time int (秒) 900 秒 自发预订后或最早接载时间后等待服务的最大时间;使用 '-1' 忽略等待时间
-p --penalty-factor 'dynamic' 或 int 'dynamic' 约束的不同惩罚相对于路径规划成本的因子;'dynamic' 倾向于保持已接受请求的约束,而不是接受新请求

有关命令行参数的更多帮助,请运行:

python drtOrtools.py --help

求解器需要一个包含在下客地点、上客地点和当前车辆位置之间行驶的成本矩阵。 根据 --cost-type 选项,成本可以是距离或行驶时间。 成本是在仿真期间通过调用 traci.simulation.findRoute() 获得的。 在固定间隔(选项 --interval)后,开放请求被分配给 DRT 车队的车辆,并将成本矩阵传递给辅助文件 ortools_pdp.py,在该文件中使用 ortools 解决车辆路径问题。 解决方案被转换并应用到 traci.vehicle.dispatchTaxi