公交系统模拟
在交通仿真软件Aimsun中,公交系统模拟是一个重要的模块,用于评估和优化公共交通系统的性能。本节将详细介绍如何在Aimsun中进行公交系统模拟,包括公交线路的创建、公交车辆的配置、公交站台的设置以及公交调度策略的实施。我们将通过具体的例子来说明如何利用Aimsun的API进行二次开发,以便更灵活地控制公交系统的模拟。
公交线路的创建
公交线路的创建是公交系统模拟的基础步骤。在Aimsun中,可以通过图形界面手动创建公交线路,也可以通过Python脚本进行自动化创建。以下是一个通过Python脚本创建公交线路的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 创建公交线路函数defcreate_bus_line(project,name,network,route):""" 创建公交线路 :param project: 当前项目实例 :param name: 公交线路名称 :param network: 网络实例 :param route: 公交线路路径 :return: 创建的公交线路实例 """# 获取公交线路管理器bus_line_manager=project comedic GetFunctionObjectManager("GKBusLine")# 创建新的公交线路new_bus_line=bus_line_manager.create(name)# 设置公交线路的路径new_bus_line.setRoute(route)# 将公交线路添加到网络中network.addFunctionObject(new_bus_line)returnnew_bus_line# 示例数据project=aimsun_project# 假设已经获取了项目实例network=project.getNetwork()# 获取网络实例route=network.getRoute("Route1")# 获取已经创建的路径实例# 调用函数创建公交线路bus_line=create_bus_line(project,"BusLine1",network,route)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
create_bus_line函数用于创建公交线路,参数包括项目实例、线路名称、网络实例和线路路径。获取管理器:通过
GetFunctionObjectManager方法获取公交线路管理器。创建线路:使用管理器的
create方法创建新的公交线路。设置路径:通过
setRoute方法将公交线路与网络中的路径关联起来。添加到网络:将创建的公交线路添加到网络中。
示例数据:假设已经获取了项目实例和网络实例,并且网络中已经存在一条名为"Route1"的路径。
调用函数:调用
create_bus_line函数创建公交线路。
公交车辆的配置
公交车辆的配置主要包括车辆类型、容量、速度等参数的设置。这些参数直接影响公交系统的运行效率和乘客体验。以下是一个通过Python脚本配置公交车辆的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 配置公交车辆函数defconfigure_bus_vehicle(project,bus_line,vehicle_type,capacity,speed):""" 配置公交车辆 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param vehicle_type: 车辆类型 :param capacity: 车辆容量 :param speed: 车辆速度 """# 获取车辆管理器vehicle_manager=project.getVehicleManager()# 创建新的车辆类型new_vehicle_type=vehicle_manager.create(vehicle_type)# 设置车辆容量new_vehicle_type.setCapacity(capacity)# 设置车辆速度new_vehicle_type.setSpeed(speed)# 将车辆类型添加到公交线路中bus_line.setVehicleType(new_vehicle_type)# 示例数据project=aimsun_project# 假设已经获取了项目实例bus_line=project.getBusLine("BusLine1")# 获取已经创建的公交线路实例# 配置公交车辆configure_bus_vehicle(project,bus_line,"BusType1",50,30)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
configure_bus_vehicle函数用于配置公交车辆,参数包括项目实例、公交线路实例、车辆类型、容量和速度。获取管理器:通过
getVehicleManager方法获取车辆管理器。创建车辆类型:使用管理器的
create方法创建新的车辆类型。设置容量:通过
setCapacity方法设置车辆的容量。设置速度:通过
setSpeed方法设置车辆的速度。添加到线路:将创建的车辆类型添加到公交线路中。
示例数据:假设已经获取了项目实例和公交线路实例。
调用函数:调用
configure_bus_vehicle函数配置公交车辆。
公交站台的设置
公交站台的设置包括站台位置、类型、容量等参数。这些参数对于仿真结果的准确性至关重要。以下是一个通过Python脚本设置公交站台的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 设置公交站台函数defconfigure_bus_stop(project,name,location,type,capacity):""" 设置公交站台 :param project: 当前项目实例 :param name: 站台名称 :param location: 站台位置 :param type: 站台类型 :param capacity: 站台容量 :return: 创建的公交站台实例 """# 获取公交站台管理器bus_stop_manager=project.getFunctionObjectManager("GKBusStop")# 创建新的公交站台new_bus_stop=bus_stop_manager.create(name)# 设置站台位置new_bus_stop.setLocation(location)# 设置站台类型new_bus_stop.setType(type)# 设置站台容量new_bus_stop.setCapacity(capacity)# 将公交站台添加到网络中network=project.getNetwork()network.addFunctionObject(new_bus_stop)returnnew_bus_stop# 示例数据project=aimsun_project# 假设已经获取了项目实例location=project.getNode("Node1")# 获取已经创建的节点实例# 设置公交站台bus_stop=configure_bus_stop(project,"BusStop1",location,"Platform",100)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
configure_bus_stop函数用于设置公交站台,参数包括项目实例、站台名称、站台位置、站台类型和站台容量。获取管理器:通过
GetFunctionObjectManager方法获取公交站台管理器。创建站台:使用管理器的
create方法创建新的公交站台。设置位置:通过
setLocation方法设置站台的位置。设置类型:通过
setType方法设置站台的类型。设置容量:通过
setCapacity方法设置站台的容量。添加到网络:将创建的公交站台添加到网络中。
示例数据:假设已经获取了项目实例和网络实例,并且网络中已经存在一个名为"Node1"的节点。
调用函数:调用
configure_bus_stop函数设置公交站台。
公交调度策略的实施
公交调度策略的实施包括车辆发车间隔、停站时间、班次安排等参数的设置。这些参数直接影响公交系统的运营效率和服务质量。以下是一个通过Python脚本实施公交调度策略的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 设置公交调度策略函数defconfigure_bus_schedule(project,bus_line,headway,dwell_time,start_time,end_time):""" 设置公交调度策略 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param headway: 发车间隔(秒) :param dwell_time: 停站时间(秒) :param start_time: 调度开始时间(秒) :param end_time: 调度结束时间(秒) """# 获取公交调度管理器bus_schedule_manager=project.getFunctionObjectManager("GKBusSchedule")# 创建新的公交调度策略new_bus_schedule=bus_schedule_manager.create("BusSchedule1")# 设置发车间隔new_bus_schedule.setHeadway(headway)# 设置停站时间new_bus_schedule.setDwellTime(dwell_time)# 设置调度时间new_bus_schedule.setStartTime(start_time)new_bus_schedule.setEndTime(end_time)# 将调度策略添加到公交线路中bus_line.addSchedule(new_bus_schedule)# 示例数据project=aimsun_project# 假设已经获取了项目实例bus_line=project.getBusLine("BusLine1")# 获取已经创建的公交线路实例# 设置公交调度策略configure_bus_schedule(project,bus_line,600,30,0,86400)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
configure_bus_schedule函数用于设置公交调度策略,参数包括项目实例、公交线路实例、发车间隔、停站时间、调度开始时间和调度结束时间。获取管理器:通过
GetFunctionObjectManager方法获取公交调度管理器。创建调度策略:使用管理器的
create方法创建新的公交调度策略。设置发车间隔:通过
setHeadway方法设置发车间隔。设置停站时间:通过
setDwellTime方法设置停站时间。设置调度时间:通过
setStartTime和setEndTime方法设置调度的开始和结束时间。添加到线路:将创建的调度策略添加到公交线路中。
示例数据:假设已经获取了项目实例和公交线路实例。
调用函数:调用
configure_bus_schedule函数设置公交调度策略。
公交系统模拟的高级应用
在公交系统模拟中,除了基本的线路、车辆和站台设置,还可以进行更高级的应用,如动态调度、乘客行为建模等。以下是一些高级应用的示例。
动态调度
动态调度是指在仿真过程中根据实时交通情况调整公交车辆的发车间隔和路线。以下是一个通过Python脚本实现动态调度的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 动态调度函数defdynamic_bus_scheduling(project,bus_line,traffic_data,adjustment_factor):""" 动态调整公交调度策略 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param traffic_data: 交通数据 :param adjustment_factor: 调整因子 """# 获取公交调度管理器bus_schedule_manager=project.getFunctionObjectManager("GKBusSchedule")# 获取当前调度策略current_schedule=bus_line.getSchedule()# 计算新的发车间隔new_headway=current_schedule.getHeadway()*adjustment_factor# 更新发车间隔current_schedule.setHeadway(new_headway)# 计算新的停站时间new_dwell_time=current_schedule.getDwellTime()*adjustment_factor# 更新停站时间current_schedule.setDwellTime(new_dwell_time)# 示例数据project=aimsun_project# 假设已经获取了项目实例bus_line=project.getBusLine("BusLine1")# 获取已经创建的公交线路实例traffic_data=project.getTrafficData("TrafficData1")# 获取交通数据adjustment_factor=1.2# 调整因子# 动态调整公交调度策略dynamic_bus_scheduling(project,bus_line,traffic_data,adjustment_factor)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
dynamic_bus_scheduling函数用于动态调整公交调度策略,参数包括项目实例、公交线路实例、交通数据和调整因子。获取管理器:通过
GetFunctionObjectManager方法获取公交调度管理器。获取当前调度策略:通过
getSchedule方法获取公交线路当前的调度策略。计算新的发车间隔:根据调整因子计算新的发车间隔。
更新发车间隔:通过
setHeadway方法更新发车间隔。计算新的停站时间:根据调整因子计算新的停站时间。
更新停站时间:通过
setDwellTime方法更新停站时间。示例数据:假设已经获取了项目实例、公交线路实例和交通数据,并且调整因子为1.2。
调用函数:调用
dynamic_bus_scheduling函数动态调整公交调度策略。
乘客行为建模
乘客行为建模是指仿真乘客的上下车行为、路径选择等。以下是一个通过Python脚本实现乘客行为建模的示例。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 乘客行为建模函数defconfigure_passenger_behavior(project,bus_line,boarding_rate,alighting_rate,path_choice_model):""" 设置乘客行为 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param boarding_rate: 上车率 :param alighting_rate: 下车率 :param path_choice_model: 路径选择模型 """# 获取乘客行为管理器passenger_behavior_manager=project.getFunctionObjectManager("GKPassengerBehavior")# 创建新的乘客行为实例new_passenger_behavior=passenger_behavior_manager.create("PassengerBehavior1")# 设置上车率new_passenger_behavior.setBoardingRate(boarding_rate)# 设置下车率new_passenger_behavior.setAlightingRate(alighting_rate)# 设置路径选择模型new_passenger_behavior.setPathChoiceModel(path_choice_model)# 将乘客行为实例添加到公交线路中bus_line.setPassengerBehavior(new_passenger_behavior)# 示例数据project=aimsun_project# 假设已经获取了项目实例bus_line=project.getBusLine("BusLine1")# 获取已经创建的公交线路实例boarding_rate=0.8# 上车率alighting_rate=0.7# 下车率path_choice_model="ShortestPath"# 路径选择模型# 设置乘客行为configure_passenger_behavior(project,bus_line,boarding_rate,alighting_rate,path_choice_model)代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
定义函数:
configure_passenger_behavior函数用于设置乘客行为,参数包括项目实例、公交线路实例、上车率、下车率和路径选择模型。获取管理器:通过
GetFunctionObjectManager方法获取乘客行为管理器。创建乘客行为实例:使用管理器的
create方法创建新的乘客行为实例。设置上车率:通过
setBoardingRate方法设置乘客的上车率。设置下车率:通过
setAlightingRate方法设置乘客的下车率。设置路径选择模型:通过
setPathChoiceModel方法设置乘客的路径选择模型。添加到线路:将创建的乘客行为实例添加到公交线路中。
示例数据:假设已经获取了项目实例和公交线路实例,并且上车率为0.8,下车率为0.7,路径选择模型为"ShortestPath"。
调用函数:调用
configure_passenger_behavior函数设置乘客行为。
公交系统模拟的案例分析
为了更好地理解公交系统模拟的应用,我们通过一个实际案例来分析如何利用Aimsun进行公交系统优化。假设我们需要评估一条新公交线路的可行性,并优化其调度策略。
案例背景
某城市计划新增一条公交线路,该线路将连接城市中心和新开发区。我们需要评估这条线路的乘客流量、车辆利用率和服务质量,并根据评估结果优化调度策略。
案例步骤
创建公交线路:根据城市规划部门提供的路径数据,创建新的公交线路。
配置公交车辆:选择合适的车辆类型,并设置车辆的容量和速度。
设置公交站台:在关键节点上设置公交站台,并配置站台的容量和类型。
实施调度策略:根据初步评估结果,设置公交车辆的发车间隔和停站时间。
乘客行为建模:仿真乘客的上下车行为和路径选择,评估乘客流量和服务质量。
优化调度策略:根据仿真结果,动态调整公交车辆的发车间隔和停站时间,优化公交线路的运营效率。
代码示例
# 导入Aimsun的APIfromaimsun.gkm_apiimport*# 创建公交线路defcreate_bus_line(project,name,network,route):""" 创建公交线路 :param project: 当前项目实例 :param name: 公交线路名称 :param network: 网络实例 :param route: 公交线路路径 :return: 创建的公交线路实例 """# 获取公交线路管理器bus_line_manager=project.getFunctionObjectManager("GKBusLine")# 创建新的公交线路new_bus_line=bus_line_manager.create(name)# 设置公交线路的路径new_bus_line.setRoute(route)# 将公交线路添加到网络中network.addFunctionObject(new_bus_line)returnnew_bus_line# 配置公交车辆defconfigure_bus_vehicle(project,bus_line,vehicle_type,capacity,speed):""" 配置公交车辆 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param vehicle_type: 车辆类型 :param capacity: 车辆容量 :param speed: 车辆速度 """# 获取车辆管理器vehicle_manager=project.getVehicleManager()# 创建新的车辆类型new_vehicle_type=vehicle_manager.create(vehicle_type)# 设置车辆容量new_vehicle_type.setCapacity(capacity)# 设置车辆速度new_vehicle_type.setSpeed(speed)# 将车辆类型添加到公交线路中bus_line.setVehicleType(new_vehicle_type)# 设置公交站台defconfigure_bus_stop(project,name,location,type,capacity):""" 设置公交站台 :param project: 当前项目实例 :param name: 站台名称 :param location: 站台位置 :param type: 站台类型 :param capacity: 站台容量 :return: 创建的公交站台实例 """# 获取公交站台管理器bus_stop_manager=project.getFunctionObjectManager("GKBusStop")# 创建新的公交站台new_bus_stop=bus_stop_manager.create(name)# 设置站台位置new_bus_stop.setLocation(location)# 设置站台类型new_bus_stop.setType(type)# 设置站台容量new_bus_stop.setCapacity(capacity)# 将公交站台添加到网络中network=project.getNetwork()network.addFunctionObject(new_bus_stop)returnnew_bus_stop# 设置公交调度策略defconfigure_bus_schedule(project,bus_line,headway,dwell_time,start_time,end_time):""" 设置公交调度策略 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param headway: 发车间隔(秒) :param dwell_time: 停站时间(秒) :param start_time: 调度开始时间(秒) :param end_time: 调度结束时间(秒) """# 获取公交调度管理器bus_schedule_manager=project.getFunctionObjectManager("GKBusSchedule")# 创建新的公交调度策略new_bus_schedule=bus_schedule_manager.create("BusSchedule1")# 设置发车间隔new_bus_schedule.setHeadway(headway)# 设置停站时间new_bus_schedule.setDwellTime(dwell_time)# 设置调度时间new_bus_schedule.setStartTime(start_time)new_bus_schedule.setEndTime(end_time)# 将调度策略添加到公交线路中bus_line.addSchedule(new_bus_schedule)# 乘客行为建模defconfigure_passenger_behavior(project,bus_line,boarding_rate,alighting_rate,path_choice_model):""" 设置乘客行为 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param boarding_rate: 上车率 :param alighting_rate: 下车率 :param path_choice_model: 路径选择模型 """# 获取乘客行为管理器passenger_behavior_manager=project.getFunctionObjectManager("GKPassengerBehavior")# 创建新的乘客行为实例new_passenger_behavior=passenger_behavior_manager.create("PassengerBehavior1")# 设置上车率new_passenger_behavior.setBoardingRate(boarding_rate)# 设置下车率new_passenger_behavior.setAlightingRate(alighting_rate)# 设置路径选择模型new_passenger_behavior.setPathChoiceModel(path_choice_model)# 将乘客行为实例添加到公交线路中bus_line.setPassengerBehavior(new_passenger_behavior)# 示例数据project=aimsun_project# 假设已经获取了项目实例network=project.getNetwork()# 获取网络实例route=network.getRoute("Route1")# 获取已经创建的路径实例location1=project.getNode("Node1")# 获取已经创建的节点实例location2=project.getNode("Node2")# 获取已经创建的节点实例# 创建公交线路bus_line=create_bus_line(project,"BusLine1",network,route)# 配置公交车辆configure_bus_vehicle(project,bus_line,"BusType1",50,30)# 设置公交站台bus_stop1=configure_bus_stop(project,"BusStop1",location1,"Platform",100)bus_stop2=configure_bus_stop(project,"BusStop2",location2,"Platform",100)# 设置公交调度策略configure_bus_schedule(project,bus_line,600,30,0,86400)# 设置乘客行为configure_passenger_behavior(project,bus_line,0.8,0.7,"ShortestPath")# 运行仿真# 假设已经配置了仿真参数和场景simulation=project.getSimulation()simulation.run()代码解释
导入API:首先导入Aimsun的API模块,以便使用其中的功能。
创建公交线路:调用
create_bus_line函数创建新的公交线路,并将其添加到网络中。配置公交车辆:调用
configure_bus_vehicle函数配置公交车辆的类型、容量和速度。设置公交站台:调用
configure_bus_stop函数设置公交站台的位置、类型和容量。设置公交调度策略:调用
configure_bus_schedule函数设置公交车辆的发车间隔、停站时间和调度时间。设置乘客行为:调用
configure_passenger_behavior函数设置乘客的上车率、下车率和路径选择模型。运行仿真:假设已经配置了仿真参数和场景,调用
project.getSimulation().run()方法运行仿真。
案例分析
1. 创建公交线路
根据城市规划部门提供的路径数据,创建新的公交线路。假设路径数据已经存在于网络中,通过create_bus_line函数将公交线路与路径关联起来。
2. 配置公交车辆
选择合适的车辆类型,并设置车辆的容量和速度。假设选择的车辆类型为"BusType1",容量为50人,速度为30公里/小时。
3. 设置公交站台
在关键节点上设置公交站台,并配置站台的容量和类型。假设在节点"Node1"和"Node2"上分别设置两个站台,每个站台的容量为100人,类型为"Platform"。
4. 实施调度策略
根据初步评估结果,设置公交车辆的发车间隔和停站时间。假设发车间隔为10分钟(600秒),停站时间为30秒,调度时间为全天(0到86400秒)。
5. 乘客行为建模
仿真乘客的上下车行为和路径选择,评估乘客流量和服务质量。假设上车率为0.8,下车率为0.7,路径选择模型为"ShortestPath"。
6. 优化调度策略
根据仿真结果,动态调整公交车辆的发车间隔和停站时间,优化公交线路的运营效率。假设仿真结果显示需要增加发车间隔,可以调用dynamic_bus_scheduling函数进行调整。
动态调整调度策略
假设仿真结果显示在高峰时段需要增加发车间隔,可以使用以下代码进行动态调整:
# 动态调整公交调度策略defdynamic_bus_scheduling(project,bus_line,traffic_data,adjustment_factor):""" 动态调整公交调度策略 :param project: 当前项目实例 :param bus_line: 公交线路实例 :param traffic_data: 交通数据 :param adjustment_factor: 调整因子 """# 获取公交调度管理器bus_schedule_manager=project.getFunctionObjectManager("GKBusSchedule")# 获取当前调度策略current_schedule=bus_line.getSchedule()# 计算新的发车间隔new_headway=current_schedule.getHeadway()*adjustment_factor# 更新发车间隔current_schedule.setHeadway(new_headway)# 计算新的停站时间new_dwell_time=current_schedule.getDwellTime()*adjustment_factor# 更新停站时间current_schedule.setDwellTime(new_dwell_time)# 示例数据project=aimsun_project# 假设已经获取了项目实例bus_line=project.getBusLine("BusLine1")# 获取已经创建的公交线路实例traffic_data=project.getTrafficData("TrafficData1")# 获取交通数据adjustment_factor=1.2# 调整因子# 动态调整公交调度策略dynamic_bus_scheduling(project,bus_line,traffic_data,adjustment_factor)仿真结果分析
乘客流量分析:通过仿真结果分析乘客的流量分布,了解各站台的乘客上下车情况。
车辆利用率分析:评估公交车辆的利用率,包括平均乘客数、空座率等指标。
服务质量分析:分析公交线路的服务质量,包括平均等待时间、乘车时间等指标。
优化建议:根据仿真结果提出优化建议,如调整发车间隔、增加车辆数量、优化站台布局等。
总结
通过上述步骤,我们可以在Aimsun中创建和配置公交系统,并进行仿真和优化。这些方法不仅可以用于评估新公交线路的可行性,还可以用于优化现有公交线路的运营效率。利用Aimsun的API进行二次开发,可以灵活地控制公交系统的各个方面,提高仿真结果的准确性和实用性。