news 2026/1/1 9:40:55

介观交通流仿真软件:VISSIM (介观模式)_(10).行人与自行车模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
介观交通流仿真软件:VISSIM (介观模式)_(10).行人与自行车模型

行人与自行车模型

在VISSIM(介观模式)中,行人和自行车模型是交通仿真中的重要组成部分,它们能够帮助用户更真实地模拟城市交通环境中的步行和自行车交通行为。本节将详细介绍如何在VISSIM中配置和使用行人与自行车模型,并提供具体的代码示例和数据样例。

1. 行人模型

VISSIM中的行人模型基于社会力模型,该模型能够模拟行人在复杂环境中的运动行为,包括行人之间的相互作用、避障行为以及与交通设施的交互。通过合理的配置,可以实现行人流量、行走速度、路径选择等参数的仿真。

1.1 行人路径网络的创建

在VISSIM中,行人路径网络的创建是行人模型的基础。路径网络包括行人道路、人行横道、楼梯、电梯等元素。这些元素的配置需要考虑实际交通环境中的几何布局和交通规则。

1.1.1 创建行人道路

创建行人道路时,需要指定道路的起点和终点,以及道路的宽度。以下是一个简单的示例,展示如何在VISSIM中通过Python脚本创建一条行人道路。

# 导入VISSIM APIimportinro.emme.desktop.appasappimportinro.emme.matrixasemme_matriximportinro.emme.networkasemme_network# 连接到VISSIM桌面应用desktop=app.start_dedicated(True,"C:/Users/YourUsername/VISSIMProjects","C:/Program Files/PTV Vision/PTV VISSIM 2023/bin/Vissim.exe")# 获取当前项目vissim=desktop.project.application# 创建一条行人道路defcreate_pedestrian_path(start_x,start_y,end_x,end_y,width):""" 创建一条行人道路 :param start_x: 起点X坐标 :param start_y: 起点Y坐标 :param end_x: 终点X坐标 :param end_y: 终点Y坐标 :param width: 道路宽度 """# 添加行人道路vissim.Net.PedestrianPaths.addPedestrianPath(StartPos=emme_network.LinkSegment(start_x,start_y),EndPos=emme_network.LinkSegment(end_x,end_y),Width=width)# 示例数据start_x=100start_y=200end_x=150end_y=250width=2# 调用函数创建行人道路create_pedestrian_path(start_x,start_y,end_x,end_y,width)
1.1.2 创建人行横道

人行横道是行人过马路的重要设施,需要在行人路径网络中进行配置。以下代码示例展示如何在VISSIM中创建一条人行横道。

# 创建一条人行横道defcreate_crosswalk(start_x,start_y,end_x,end_y,width):""" 创建一条人行横道 :param start_x: 起点X坐标 :param start_y: 起点Y坐标 :param end_x: 终点X坐标 :param end_y: 终点Y坐标 :param width: 横道宽度 """# 添加人行横道vissim.Net.Crosswalks.addCrosswalk(StartPos=emme_network.LinkSegment(start_x,start_y),EndPos=emme_network.LinkSegment(end_x,end_y),Width=width)# 示例数据start_x=100start_y=200end_x=150end_y=250width=3# 调用函数创建人行横道create_crosswalk(start_x,start_y,end_x,end_y,width)
1.2 行人行为参数的配置

在创建行人路径网络后,需要配置行人行为参数,包括行走速度、行人流量、行人间距等。这些参数的配置可以通过VISSIM的属性设置来实现。

1.2.1 设置行人行走速度

以下代码示例展示如何设置行人的行走速度。

# 设置行人行走速度defset_pedestrian_speed(speed):""" 设置行人的行走速度 :param speed: 行走速度(单位:m/s) """# 获取行人模型pedestrian_model=vissim.Net.PedestrianModels.getPedestrianModel(1)# 设置行走速度pedestrian_model.setPedestrianSpeed(speed)# 示例数据speed=1.5# 调用函数设置行人行走速度set_pedestrian_speed(speed)
1.2.2 设置行人流量

行人流量是指单位时间内通过某一点的行人数量。以下代码示例展示如何设置行人的流量。

# 设置行人流量defset_pedestrian_flow(rate,start_time,end_time):""" 设置行人的流量 :param rate: 流量(单位:人/小时) :param start_time: 开始时间(单位:秒) :param end_time: 结束时间(单位:秒) """# 获取行人入口pedestrian_entry=vissim.Net.PedestrianEntries.getPedestrianEntry(1)# 设置流量pedestrian_entry.setPedestrianFlow(rate,start_time,end_time)# 示例数据rate=300start_time=3600# 1小时end_time=7200# 2小时# 调用函数设置行人流量set_pedestrian_flow(rate,start_time,end_time)
1.3 行人模型的仿真

在配置完行人路径网络和行为参数后,可以进行行人模型的仿真。仿真过程中可以通过VISSIM的API获取仿真结果,包括行人的位置、速度、路径等信息。

1.3.1 启动行人仿真

以下代码示例展示如何启动行人仿真。

# 启动行人仿真defstart_pedestrian_simulation(duration):""" 启动行人仿真 :param duration: 仿真持续时间(单位:秒) """# 设置仿真持续时间vissim.Simulation.setSimulationRunDuration(duration)# 启动仿真vissim.Simulation.runSimulation()# 示例数据duration=3600# 1小时# 调用函数启动行人仿真start_pedestrian_simulation(duration)
1.3.2 获取行人仿真结果

仿真结束后,可以通过API获取行人的仿真结果。以下代码示例展示如何获取行人的位置信息。

# 获取行人仿真结果defget_pedestrian_positions():""" 获取行人的位置信息 """# 获取所有行人pedestrians=vissim.Net.Pedestrians.getAllPedestrians()# 存储行人的位置信息positions=[]forpedestrianinpedestrians:# 获取行人的当前位置position=pedestrian.getPosition()positions.append(position)returnpositions# 调用函数获取行人位置信息positions=get_pedestrian_positions()# 打印行人位置信息print(positions)
2. 自行车模型

VISSIM中的自行车模型可以模拟自行车在道路网络中的行驶行为,包括自行车速度、间距、路径选择等。通过合理的配置,可以实现自行车交通的仿真。

2.1 自行车路径网络的创建

在VISSIM中,自行车路径网络的创建是自行车模型的基础。路径网络包括自行车道、自行车停车场等元素。这些元素的配置需要考虑实际交通环境中的几何布局和交通规则。

2.1.1 创建自行车道

创建自行车道时,需要指定道路的起点和终点,以及道路的宽度。以下是一个简单的示例,展示如何在VISSIM中通过Python脚本创建一条自行车道。

# 创建一条自行车道defcreate_bike_path(start_x,start_y,end_x,end_y,width):""" 创建一条自行车道 :param start_x: 起点X坐标 :param start_y: 起点Y坐标 :param end_x: 终点X坐标 :param end_y: 终点Y坐标 :param width: 道路宽度 """# 添加自行车道vissim.Net.BikePaths.addBikePath(StartPos=emme_network.LinkSegment(start_x,start_y),EndPos=emme_network.LinkSegment(end_x,end_y),Width=width)# 示例数据start_x=100start_y=200end_x=150end_y=250width=2# 调用函数创建自行车道create_bike_path(start_x,start_y,end_x,end_y,width)
2.1.2 创建自行车停车场

自行车停车场是自行车停放的重要设施,需要在自行车路径网络中进行配置。以下代码示例展示如何在VISSIM中创建一个自行车停车场。

# 创建一个自行车停车场defcreate_bike_parking(start_x,start_y,end_x,end_y,capacity):""" 创建一个自行车停车场 :param start_x: 起点X坐标 :param start_y: 起点Y坐标 :param end_x: 终点X坐标 :param end_y: 终点Y坐标 :param capacity: 停车场容量 """# 添加自行车停车场vissim.Net.BikeParkings.addBikeParking(StartPos=emme_network.LinkSegment(start_x,start_y),EndPos=emme_network.LinkSegment(end_x,end_y),Capacity=capacity)# 示例数据start_x=100start_y=200end_x=150end_y=250capacity=50# 调用函数创建自行车停车场create_bike_parking(start_x,start_y,end_x,end_y,capacity)
2.2 自行车行为参数的配置

在创建自行车路径网络后,需要配置自行车行为参数,包括行驶速度、自行车流量、间距等。这些参数的配置可以通过VISSIM的属性设置来实现。

2.2.1 设置自行车行驶速度

以下代码示例展示如何设置自行车的行驶速度。

# 设置自行车行驶速度defset_bike_speed(speed):""" 设置自行车的行驶速度 :param speed: 行驶速度(单位:m/s) """# 获取自行车模型bike_model=vissim.Net.BikeModels.getBikeModel(1)# 设置行驶速度bike_model.setBikeSpeed(speed)# 示例数据speed=5.0# 调用函数设置自行车行驶速度set_bike_speed(speed)
2.2.2 设置自行车流量

自行车流量是指单位时间内通过某一点的自行车数量。以下代码示例展示如何设置自行车的流量。

# 设置自行车流量defset_bike_flow(rate,start_time,end_time):""" 设置自行车的流量 :param rate: 流量(单位:辆/小时) :param start_time: 开始时间(单位:秒) :param end_time: 结束时间(单位:秒) """# 获取自行车入口bike_entry=vissim.Net.BikeEntries.getBikeEntry(1)# 设置流量bike_entry.setBikeFlow(rate,start_time,end_time)# 示例数据rate=100start_time=3600# 1小时end_time=7200# 2小时# 调用函数设置自行车流量set_bike_flow(rate,start_time,end_time)
2.3 自行车模型的仿真

在配置完自行车路径网络和行为参数后,可以进行自行车模型的仿真。仿真过程中可以通过VISSIM的API获取仿真结果,包括自行车的位置、速度、路径等信息。

2.3.1 启动自行车仿真

以下代码示例展示如何启动自行车仿真。

# 启动自行车仿真defstart_bike_simulation(duration):""" 启动自行车仿真 :param duration: 仿真持续时间(单位:秒) """# 设置仿真持续时间vissim.Simulation.setSimulationRunDuration(duration)# 启动仿真vissim.Simulation.runSimulation()# 示例数据duration=3600# 1小时# 调用函数启动自行车仿真start_bike_simulation(duration)
2.3.2 获取自行车仿真结果

仿真结束后,可以通过API获取自行车的仿真结果。以下代码示例展示如何获取自行车的位置信息。

# 获取自行车仿真结果defget_bike_positions():""" 获取自行车的位置信息 """# 获取所有自行车bikes=vissim.Net.Bikes.getAllBikes()# 存储自行车的位置信息positions=[]forbikeinbikes:# 获取自行车的当前位置position=bike.getPosition()positions.append(position)returnpositions# 调用函数获取自行车位置信息positions=get_bike_positions()# 打印自行车位置信息print(positions)
3. 行人与自行车模型的综合应用

在实际的城市交通仿真中,行人和自行车模型往往需要综合应用,以实现更真实的交通环境模拟。以下是一个综合应用的示例,展示如何在VISSIM中创建行人和自行车路径网络,并设置相应的行为参数。

3.1 创建综合路径网络

首先,创建一条行人道路和一条自行车道,这两条道路在同一个交叉口相遇。

# 创建综合路径网络defcreate_combined_path_network():""" 创建综合路径网络,包括行人道路和自行车道 """# 创建行人道路create_pedestrian_path(100,200,150,250,2)# 创建自行车道create_bike_path(100,200,150,250,2)# 调用函数创建综合路径网络create_combined_path_network()
3.2 设置综合行为参数

配置行人和自行车的行为参数,包括行走速度、行驶速度、流量等。

# 设置综合行为参数defset_combined_behavior_parameters():""" 设置综合行为参数,包括行人行走速度和自行车行驶速度 """# 设置行人行走速度set_pedestrian_speed(1.5)# 设置自行车行驶速度set_bike_speed(5.0)# 设置行人流量set_pedestrian_flow(300,3600,7200)# 设置自行车流量set_bike_flow(100,3600,7200)# 调用函数设置综合行为参数set_combined_behavior_parameters()
3.3 启动综合仿真

启动综合仿真,模拟行人和自行车在同一路径网络中的运动行为。

# 启动综合仿真defstart_combined_simulation(duration):""" 启动综合仿真 :param duration: 仿真持续时间(单位:秒) """# 启动行人仿真start_pedestrian_simulation(duration)# 启动自行车仿真start_bike_simulation(duration)# 示例数据duration=3600# 1小时# 调用函数启动综合仿真start_combined_simulation(duration)
3.4 获取综合仿真结果

仿真结束后,获取行人的位置信息和自行车的位置信息,进行综合分析。

# 获取综合仿真结果defget_combined_simulation_results():""" 获取综合仿真结果,包括行人的位置信息和自行车的位置信息 """# 获取行人位置信息pedestrian_positions=get_pedestrian_positions()# 获取自行车位置信息bike_positions=get_bike_positions()returnpedestrian_positions,bike_positions# 调用函数获取综合仿真结果pedestrian_positions,bike_positions=get_combined_simulation_results()# 打印仿真结果print("行人位置信息:",pedestrian_positions)print("自行车位置信息:",bike_positions)

通过以上步骤,可以在VISSIM中实现行人和自行车模型的综合仿真。这些模型的配置和仿真结果的获取,可以帮助用户更全面地分析城市交通环境中的步行和自行车交通行为,为交通规划和管理提供科学依据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/29 23:26:58

力扣解题步骤

核心思路回顾通过哈希表存储「已遍历元素值 → 下标」的映射,遍历数组时计算当前元素的 “补数”(目标值 - 当前值),若补数存在于哈希表中,则直接返回结果;若不存在,将当前元素存入哈希表&#…

作者头像 李华
网站建设 2025/12/19 3:26:25

企业级中小社区疫情信息管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 近年来,全球范围内的突发公共卫生事件频发,尤其是新冠疫情的暴发,凸显了社区疫情防控信息化建设的重要性。传统社区疫情管理多依赖人工登记和纸质档案,存在效率低、数据共享困难、信息更新滞后等问题,难以应对大规…

作者头像 李华
网站建设 2025/12/19 3:22:57

我发现多中心数据术语冲突 后来用SNOMEDCT编码统一才对齐

📝 博客主页:jaxzheng的CSDN主页 目录医疗数据科学:当Excel表格遇见心跳监测仪 一、从“算术课代表”到医疗数据民工 二、AI诊断系统:当神经网络开始学中医把脉 三、可穿戴设备:当智能手表开始管我吃火锅 四、医疗大数…

作者头像 李华
网站建设 2025/12/19 3:15:19

JVM(JAVA虚拟机内存不足)

这是本人第二次遇到这个问题,打开pycharm还没有Start就撒由那拉了,报出来一堆IDE错误,看都看不懂,上次遇到是大模型的指导改了配置文件依然没解决,这次跟着大佬操作,电脑十分丝滑 步骤(win11&am…

作者头像 李华
网站建设 2025/12/23 19:47:26

类变量和全局变量的生命周期分别是多久?

类变量和全局变量的生命周期核心差异在于创建时机、存活范围、销毁条件,本质由它们的 “归属对象”(类 vs 模块)决定,以下是分维度的精准解析:一、先明确核心前提Python 中变量的生命周期依附于其所属的命名空间对象&a…

作者头像 李华