以下工具在动态用户分配的背景下非常有用。
分配工具#
duaIterate.py#
"duaIterate.py" 帮助您执行动态用户分配 (DUA) 的计算。它通过交替运行仿真以发现行程时间,然后根据这些行程时间将替代路线分配给部分车辆来工作。这将重复执行定义的迭代步骤次数。脚本必须至少提供两个输入文件:一个 SUMO 网络和一组行程定义。分配后不能保证达到随机用户均衡 (UE) 交通状态。增加迭代步骤的次数会增加收敛到均衡的可能性。
在每个迭代步骤中,脚本会为 duarouter 应用程序生成一个配置文件,并使用该配置文件启动它。然后,构建一个用于 sumo 的配置文件并启动 sumo。这两个配置文件完全在脚本内部定义。默认情况下,对于每个时间步,SUMO 将生成三个转储文件,分别包含按 150、300 和 900 秒聚合的边转储、摘要信息以及行程信息输出。这些输出的名称根据迭代步骤进行编号。如果您想更改输出,也必须查看脚本,但您不应禁用基于边的 900 秒聚合转储,因为 duarouter 在后续迭代步骤中会读取此文件以计算 DUA。
有关脚本的更多选项,请查看源代码或使用 "--help" 选项启动它。
python tools/assign/duaIterate.py -n <PATH_TO_SUMO_NET> -t <PATH_TO_TRIPS>
从附加文件加载车辆类型#
如果文件 vtypes.add.xml 定义了 duaIterate.py 的交通需求输入所需的车辆类型,则必须设置以下选项
--additional vtypes.add.xml duarouter--vtype-output dummy.xml duarouter--additional-files vtypes.add.xml
第一个选项仅将其参数传递给 sumo 进程。其他选项传递给 duarouter,并确保类型被读取但不会写入路线输出文件(否则它们会被 sumo 加载两次,导致错误)。
Caution
前缀为 duarouter-- 的选项必须是所有选项列表中的最后一项
duaIterateMix.py#
此工具旨在解决混合交通流的多类别交通分配问题。此工具中的大多数选项与 duaIterate.py 中的选项相似,但有一些例外。要解决多类别交通分配问题,您需要提供两个需求文件。使用选项 -t 指定寻求 UE 的车辆的需求,使用选项 -r 指定寻求 SO 的车辆的需求。要获得多类别交通分配解决方案,您应设置以下选项:--mix、--marginal-cost 和 --marginal-cost.exp。
duaIterate_analysis.py#
为了检查 dua 估算期间不同仿真参数的演变,提供了一个额外的脚本来分析瞬移计数及其在迭代过程中的演变。
python tools/assign/duaIterate_analysis.py dualog.txt
cadytsIterate.py#
此脚本是 duaIterate.py 的一个变体,它使用由瑞士 EPFL 的 Gunnar Flötteröd 开发的 Cadyts 校准工具。使用此脚本,路线选择将根据给定的路段计数进行调整。SUMO 和 Cadyts 之间的校准验证工作正在进行中。您需要单独下载 Cadyts 并在调用中添加对 jar 文件的引用。
python tools/assign/cadytsIterate.py -n input_net.net.xml -r routes.rou.xml -d input_measurements.xml --classpath cadyts.jar
one-shot.py#
one-shot.py 提供了动态用户分配的一个变体。分配方法与 SUMO 和 dua-iterate.py 使用的方法相同。给定的行程将根据其出发时间和给定的行程时间更新间隔分配到各自的最快路线。用户可以定义不同的行程时间更新间隔,例如 900,即路段行程时间每 900 秒更新一次。如果行程时间更新间隔设置为 -1,则路段行程时间不会更新,并且所有行程都使用自由流速度下的路段行程时间。
使用此脚本不会达到随机用户均衡交通状态。
下面展示了一个示例执行命令。
one-shot.py -f <travel-time updating interval> -n <network file> -t <trip file>
其中 -f 行程时间更新间隔(秒);-1 表示无行程时间更新(默认值:-1,1800,300,15)
-n 网络文件名及相应路径
-t 行程文件名及相应路径
可以通过添加脚本中可以找到的相应选项来进行其他设置,例如摘要和行程信息的输出以及开始时间。
matrixDailyToHourly.py#
此脚本用于从 VISUM 日矩阵生成小时矩阵。具有相同连接路段的交通区的交通需求将被整合。示例命令如下所示。
matrixDailyToHourly.py -m <matrix file> -z <district file> -t <flow time-series file> -o
<output directory>
其中 -m: 矩阵文件名
-z: 分区文件名
-t: 包含交通流时间序列的文件名(可选);如果未指定,定义的日矩阵将平均分配到 24 小时。
-o: 输出目录名及相应路径
costFunctionChecker.py#
重复运行 duarouter 并通过成本函数模拟权重变化。(待续)
仍在建设中\!
