评分模型在路网通勤习惯分析中的应用——提出问题(1)

1、问题的由来、目标和意义

最近一段时间和公司其它业务部门讨论时,发现一个有趣的交通路网问题,车辆从S点行驶到V点共用时40分钟,这段时间内路网中的卡口摄像头识别到了车辆通过的信息。如下图所示:
在这里插入图片描述
设计师需要通过这些有限的路网数据,分析出当前车辆最可能的行驶路径,并且基于一段时间(1个月、2个月甚至3个月)内某车辆多个行驶路径样本,分析后得到车辆A的通勤习惯数据。能够支持解决这个问题的基础数据是有限的,它们包括:

  • 相对静态的数据:地图交通网数据(没有结构化,需研发团队自行结构化)、道路级别数据、卡口位置数据等

  • 相对动态的数据:从外部得到的周期更新的交通网拥堵、卡口摄像数据(最关键的数据)、交通事故数据等

解决这个问题,在业务层面还需要注意以下几个关键点:

1、数据的采集主要通过设置在主道上的卡口摄像头,或者设置在路口的卡口摄像头完成。两者的区别主要在于,前者只能提供车辆车牌信息和行驶方向信息,而后者由于是安装在路口,所以不止可以提供车牌信息,还能提供车辆在路口可能的转向信息。

2、由于技术问题、采光问题、清晰度问题,卡口摄像头做不到100%正确识别车辆车牌信息,也就是说如果卡口摄像头在一段时间内没有拍摄到某个车辆的车牌信息,也不能代表这辆车在这段时间内一定没有行驶过这段道路。

3、根据车辆某一天最可能的行驶轨迹情况,是不能得到车辆一段时间的通勤习惯的,需要多个分析样本,再利用回归分析的方式,才能得出车辆在一段时间内的通勤习惯。

车辆可能的行驶路径信息、通勤习惯信息至少能够为城市的智慧交通领域提供以下业务支持:

  • **优化交通流量‌:**通过分析通勤习惯数据,交通部门可以识别交通高峰时段和瓶颈路段,从而采取措施进行改善,如调整交通信号灯、增加公交线路或建设新的交通基础设施,以优化交通流量和提高道路利用效率。

  • 提升公共交通系统效率‌:公共交通运营商可以利用通勤习惯数据来优化公交线路和时间表,提高公共交通的准点率和便捷性。例如,通过分析通勤者的出发时间和到达时间,可以调整公交和地铁的发车频率和运营时间,以满足乘客的需求‌。

  • 改善城市规划‌:城市规划者可以基于通勤习惯数据进行更合理的城市布局和基础设施建设。例如,通过分析通勤路线和交通状况,可以确定哪些区域需要更多的公共交通设施或道路改善,以减轻交通拥堵和提高居民的生活质量‌。

  • 提高通勤者生活质量‌:通过减少通勤时间和改善通勤体验,可以显著提升通勤者的生活质量和工作效率。例如,通过分析通勤者的出行习惯,可以提供个性化的出行建议和路线规划,减少通勤时间和疲劳‌。

所以通勤习惯分析属于智慧交通业务中的基础分析,其分析的结果可以用于支撑智慧交通业务的上层能力。实际上通勤习惯分析属于OD(Origin-Destination,起止点)分析中的一种具体形式,OD分析主要通过收集和分析数据,识别出行起点和终点之间的车辆流动情况。在交通规划中,OD分析可以帮助了解交通流量、识别高峰期和瓶颈区,优化交通网络设计和管理。此外,OD分析也广泛应用于物流、零售等领域,通过分析货物流动和顾客行为,提高资源配置和运营效率‌。

2、解决问题需要具备的知识结构

2.1、OD分析可能的解决方案剖析

在这里插入图片描述
上图将整个问题可能的解决方案剖析成三个部分,第一个部分主要是拍照数据的采集和数据清洗。这个阶段要解决的主要问题是,不同型号、不同通讯方式的卡扣摄像头,如何汇聚数据并初步检测出错误数据。例如一些较新型号的卡口摄像头自带5G通讯模块,可以直接连接到数据采集系统/数据集中平台,通过MQTT等标准协议传输数据。有的卡口摄像头虽然不具备5G通讯模块,但是可以统一接入到IoT网关或者集中管控终端上,再由IoT网关或者终端完成数据传输。空间路网数据亦是采用类似的思路进行数据采集。

这些原始数据都将在数据采集系统/物联数据集中平台进行归集,后者显然需要兼容各种数据传输方式,并完成初步的数据清洗操作。从本文描述的需要解决的问题来说,这些原始数据主要就是各个交通卡口的车牌数据、时间数据、车辆行驶方向数据,等等。显然数据采集系统并不负责完成OD轨迹实时分析,也并不是本文讨论的重点。(如果需要详细了解这部分内容,可以参考《软件设计不是CRUD(21):在流式数据处理系统中进行业务抽象落地——需求分析》等文章)

基础数据准备完毕后,会在湖仓一体化的数据存储平台进行存储,以便支持后续的数据分析过程。数据分析的关键过程在流式分析平台上完成,也就是说讨论如何分析得到更匹配真实情况的OD轨迹,甚至如何基于多份OD轨迹样本分析得到单台车辆在一个较长时间段内的通勤习惯,就是讨论在流式分析平台上对数据分析的详细设计。这是解决问题的关键设计部分,也是本文(和后续几篇文章)的重点内容。

整个问题可能的解决方案,还有第三个结构部分,就是基于已分析数据向外提供数据应用能力的平台。数据应用平台至少可以基于轨迹数据、出行习惯数据,以及自身AI分析后得到的其它扩充数据,向上层业务系统/第三方系统提供诸如城市路网规划、拥堵预测与缓解、高峰管制优化、路口信号优化等多种多样的业务支持。虽然这也不是本文讨论的重点,但读者可以明确知道OD分析在智慧交通应用中的意义和重要程度。

2.2、知识准备

本文不讨论技术选型本身,技术选型仅是表象,不同技术经历、技术背景的工程师对于技术选型都有自己的理解,在选型要点和细节上都会有所区别。所以读者进需要知晓上图中涉及的中间件即可:

  • Kafka:Kafka作为在数据分析场景下,在多个中间件之间实时传输数据的消息队列,相信大家不会陌生。在解决本问题的技术架构中,Kafka负责多个任务,包括作为摄像头向数据采集平台/物联数据集中平台传输卡口监控数据的一种渠道、作为数据采集和清洗后,向湖仓一体化的存储方案传输数据的一种渠道。

  • Flink:Flink是一款开源流式数据处理框架,主要用于实时数据流的处理和分析。Flink的核心是用Java和Scala编写的分布式数据流引擎,旨在实现数据流上的有状态计算‌。Flink大量应用在对数据分析有较强实时性要求、较大数据量要求的分析场景。除了本身提供的流式分析特性外,Flink也支持数据的批处理,这也是为什么上图中所示的技术方案中,类似通勤习惯这样的周期性批处理分析,我们也放到了Flink中。

  • StarRocks:StarRocks内部通过MPP计算框架完成SQL的具体执行工作。MPP框架本身能够充分的利用多节点的计算能力,整个查询并行执行,从而实现很好的交互式分析体验。 StarRocks作为一款湖仓一体化的数据存储和计算平台,可以支持与Hive,MySQL,Elastic serach存储方案无缝构建外表。

本文的重点是介绍启发式搜索在交通通勤领域的应用,更具体的说,是解决启发式搜索如何有效降低遍历搜索算法的计算成本,提高问题的解决效率。所以以下“图”结构中的基础算法知识,需要读者掌握(本文不会讲解这些基础知识,会直接认为读者已掌握):

  • 加权有向图:‌加权有向图‌是一种图论中的数据结构,它是在有向图的基础上,每条边都赋予了一个权重值。这个权重值,一般和应用场景有关。在交通应用场景中每个顶点代表两个或者多个路段的交汇点(可能是十字路口、丁字路口、匝道、隧道出入口、高速出入口等),每条边代表一个独立的路段,每条边越高的权重,代表出于主观或客观的原因车辆行驶时对路段越高的选择度。

  • 图的最小搜索树:在一个加权有向图中,如果存在一棵各边权重和最小的生成树,那么这棵树就被称为最小生成树。生成树是原图的一个子集,包含图中所有顶点,但仅有n-1条边(n为顶点数),这些边构成了一棵无环的树。

  • 两个顶点的所有路径:既是通过一种算法,找到图结构中两个顶点间所有的联通路径。这种算法一般是某种遍历算法,因为只有了解了图中每个顶点的具体联通情况,才能找出所有联通路径,这就导致要找到两个顶点所有路径的算法时间复杂度一般会比较高——O(N2)

  • 两个顶点的加权最短路径:在加权有向图中,从顶点s到顶点t的最短路径是所有从s到t的路径中权重最小的那条路径。

  • 遍历搜索:遍历搜索,也称为暴力搜索,是一种简单但全面的搜索策略。它不考虑任何智能或优化,只是逐个访问数据结构中的每个节点,直到找到目标值或遍历完所有节点。这种搜索策略适用于没有任何特殊性质的数据结构,如普通的树或图。在遍历搜索中,常见的两种方法是深度优先搜索(DFS)和广度优先搜索(BFS)。

  • 启发式搜索:是一种更智能、更高效的搜索策略。它使用问题相关业务知识来指导搜索过程,以提高搜索效率。具体到图的交通应用场景中,启发式搜索考虑的就是交通常识、驾驶习惯等因素。这种策略在现实业务场景和深度学习中更为适用,常见于最优解、可能性等问题的处理。

3、问题概要分析

3.1、可能性问题与最优解问题的区别

有的读者会疑问,本文开头提出的问题和目前导航服务厂商提供的多途径点规划功能类似,为什么不直接使用地图厂商提供的相关服务,而要作为一个基础问题自己解决呢?这里暂时不分析业务、安全等层面的考虑,单从问题本身的性质来说,这两个问题就存在较大区别:

多途经点规划和可能的OD轨迹分析,两个问题的研究场景不一样。前者是在交通行为还没有发生的情况,在满足多个途径点位的要求下,寻找一个最优解;后者是在交通行为已经发生的情况下,基于交通网的各种历史状态和经过的点位,推导出多种可能性作为分析样本。再基于一段较长时间后,对足够多的样本进行多次回归等方式,找到可能性中的最可能得情况。前者属于单纯的最优解问题,后者属于可能性问题。

可能性问题:可能性问题关注的是某个事件或情况发生的概率或存在的程度。这通常涉及到对不确定性的评估和预测。很明显通过有限的数据在交通路网上还原点位A到点位B可能的路径,就属于可能性问题。可能性问题得到的解并不是最优解,而是根据目前现状后得到最有可能的情况。

最优解问题:最优解是指在问题或情境中能找到的最佳或最理想的解决方案。这个定义涵盖了在一定条件下,没有任何其他解能比这个解更优越,即达到了问题解决的极限状态。

3.2、对问题进行分析

推测可能的行驶轨迹,并最终得出驾驶习惯,可以通过以下步骤,结合流处理过程和批处理过程进行问题的解决:
在这里插入图片描述

  1. 对交通地图进行结构化处理

    地图的数据结构本质上是一种加权有向图,且图中存在环状结构。要解决地图上的问题,首先需要将地图进行结构化。实际工作中,这个步骤可以由技术团队自行完成——描述成二维矩阵或者二维表(邻接表),也可以借助市场上成熟的中间件产品,例如PostgreSQL with PostGIS 、Neo4j、Cassandra等数据库都对地理空间数据有专门的存储格式和能力支持。作为后续的技术方案演练,本文将自行构建邻接表来进行空间数据的结构化描述。

  2. 利用具有通勤业务特点的DFS/BFS算法,求A点到B点权值较大的多条可能路径

    这是非常关键的步骤,也是本文讨论的技术核心之一。由于上文已经描述了可能性问题和最优解问题的区别,所以后续内容不再解释为什么核心算法不是诸如Dijkstra这样的最优解算法,而重点放在讨论如何结合启发式信息对常规DFS/BFS算法进行优化,以寻求各种可能的结果。

    在这里插入图片描述
    (导航软件中,这条红色的目标方向辅助线,到底有什么作用?仅仅是为了识别方向吗?)

    另外,在寻找可能路径的过程中,由于路径权重涉及多个领域的基础数据,且这些基础数据并没有一个规范的评分方式,所以确认路径的过程中,就可能使用熵权法对每条路径进行确权,并且需要保证这些评分维度,可以进行扩展。

  3. 利用模糊综合评价法,对路径进行打分,分数最高者为最可能路径

    由上一步骤得到的可能路径如果只有一条,那么就不需要进行本步骤。如果存在多条可能路径,则需要利用综合评分法,找到其中评分最高的一条路径,作为最可能路径。综合评分涉及的评分维度至少包括实际时间和线路预计时间的差异,因为不同的业务场景可能存在的差异,参与综合评分的维度允许进行扩展。

  4. 通过以上分析方式,积累一定规模的路径样本(例如1个月、2个月),通过线性回归方式,求得车辆A在一定时间周期内的通勤习惯。

    通过以上3个步骤,可以得到特定车辆某一次的可能行驶轨迹,但是仅仅一次或者有限的几次行驶轨迹是无法确认车辆驾驶者的驾驶习惯的,需要一个较长时间段的多个轨迹作为分析样本,分析后才能得出驾驶习惯。

下面,我们就对以上解决问题的步骤逐一进行详细讨论。讨论将基于以下的示意性路网结构(片段)进行:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497823.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

Elasticsearch检索方案之一:使用from+size实现分页

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据 Elasticsearch检索之三:官方推荐方案search_after检索实现 前面两篇文章介绍了elasticsearch以及Kibana的安装&…

Unity 实现Canvas显示3D物体

新建一个UI相机,选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体,并将3D物体的层级设置为UI层 适当的放缩3DObjParent,让3D物体能显示出来…

termux-boot安卓开机自动启动应用

termux安装 github 蓝奏云 v119.1 termux-boot安装 github 蓝奏云 v0.8.1 安装 给权限运行加锁后台 am启动应用命令 am start -n 包名/启动项获取包名和启动入口(图中app为爱玩机工具箱) 例 简黑时钟蓝奏云 包名com.hm.jhclock 桌面启动项com.hm.jh…

mybatis-plus自动填充时间的配置类实现

mybatis-plus自动填充时间的配置类实现 在实际操作过程中,我们并不希望创建时间、修改时间这些来手动进行,而是希望通过自动化来完成,而mybatis-plus则也提供了自动填充功能来实现这一操作,接下来,就来了解一下mybatis…

【Agent】Chatbot、Copilot与Agent如何帮助我们的提升效率?

人工智能(AI)技术的迅猛发展正在深刻改变我们的生活和工作方式。你是否曾想过,未来的工作场景会是什么样子?AI的崛起不仅仅是科技的进步,更是我们生活方式的革命。今天,我们将深入探讨三种主要的AI能力&…

爱思唯尔word模板

爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接

【Raven1靶场渗透】

文章目录 一、基础信息 二、信息收集 三、暴力破解 四、提权 一、基础信息 Kali IP :192.168.20.146 靶机IP :192.168.20.153 二、信息收集 nmap -sS -sV -p- -A 192.168.20.153 开放了22,80,111,58305端口 访…

QGIS二次开发(地图符号库操作)

实习三 地图符号库操作 3.1 任务要求 基于QGIS,实现地图符号的设计/存储与显示;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…

Pytorch | 利用VA-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用VA-I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集VA-I-FGSM介绍相关定义算法流程 VAI-FGSM代码实现VAI-FGSM算法实现攻击效果 代码汇总vaifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对…

Elasticsearch:使用 Ollama 和 Go 开发 RAG 应用程序

作者:来自 Elastic Gustavo Llermaly 使用 Ollama 通过 Go 创建 RAG 应用程序来利用本地模型。 关于各种开放模型,有很多话要说。其中一些被称为 Mixtral 系列,各种规模都有,而一种可能不太为人所知的是 openbiollm,这…

实战案例——ZooKeeper集群部署(新手教程超详细)

案例目标 了解ZooKeeper分布式应用程序协调服务使用3台机器搭建ZooKeeper集群使用ZooKeeper集群 案例分析 规划节点 ZooKeeper集群节点规划 Ip 主机名 节点 192.168.110.10 zookeeper1 集群节点 192.168.110.20 zookeeper2 集群节点 192.168.110.30 zookeeper3 …

上手教程:使用Terraform打造弹性VPC架构

最近Akamai发布的虚拟专用云(VPC)功能提供了一种隔离的网络,让云资源可以用私密的方式进行通信。 关于Akamai VPC功能,最棒的地方在于它有着极高的灵活性。用户可以通过Cloud Manager、开发人员工具(如CLI&#xff09…

基于python的扫雷游戏

游戏 游戏目标: 揭开所有非地雷的格子。 如果揭开地雷,游戏失败。 使用标记功能(🚩)来标记可能的地雷位置。 格子类型: 空白格子:表示周围没有地雷。 数字格子:显示周围 8 个格子…

利用Java爬虫速卖通按关键字搜索AliExpress商品

在这个信息爆炸的时代,数据的价值日益凸显。对于电商领域的从业者来说,能够快速获取商品信息成为了一项重要的技能。速卖通(AliExpress)作为全球领先的跨境电商平台,拥有海量的商品数据。本文将介绍如何使用Java语言编…

Java中三大构建工具的发展历程(Ant、Maven和Gradle)

🐸 背景 我们要写一个Java程序,一般的步骤是编译,测试,打包。 这个构建的过程,如果文件比较少,我们可以手动使用java, javac,jar命令去做这些事情。但当工程越来越大,文件越来越多&#xff0c…

ubuntu快速入门

1.进入某个文件夹 cd workspace/2.tab自动补全 3.列出当前文件夹所有文件 ls列出所有文件包括隐藏文件 ls -a 4.创建文件夹 mkdir linuxLearn 5.创建文件 gedit command.sh在commmand.sh键入 echo hello echo hi? echo how are you? PS:touch hello.txt(也可以创建新…

meshy的文本到3d的使用

Meshy官方网站: 中文官网: Meshy官网中文站 ​编辑 Opens in a new window ​编辑www.meshycn.com Meshy AI 中文官网首页 英文官网: Meshy目前似乎还没有单独的英文官网,但您可以在中文官网上找到英文界面或相关英文资料。 链…

嵌入式入门Day34

网络编程 Day1 为什么要学习网络编程?网络发展历史APRAnet阶段TCP/IP两个协议阶段网络体系结构及OSI开放系统系统互联模型网络体系结构概念OSI开放系统互联模型 TCP和UDP异同网络基础相关的概念字节序IP地址的转换IP地址子网掩码端口号 为什么要学习网络编程&#x…

代码解析:安卓VHAL的AIDL参考实现

以下内容基于安卓14的VHAL代码。 总体架构 参考实现采用双层架构。上层是 DefaultVehicleHal,实现了 VHAL AIDL 接口,并提供适用于所有硬件设备的通用 VHAL 逻辑。下层是 FakeVehicleHardware,实现了 IVehicleHardware 接口。此类可模拟与实…