DNEAT: 一个全新的用于OD需求预测的动态节点-边注意力网络

afe47d0bbe0e1cdcc56ff89c81f127c4.png

文章信息

fad3ac5e7993e2d12bc192e12bcac142.png

本周阅读的论文是一篇2020年发表在《Transportation Research Part C》上关于OD需求预测的文章,题目为《DNEAT: A novel dynamic node-edge attention network for origin-destination demand prediction》。

90409cc6e28dffb419fd82516f62e20a.png

摘要

74e8559b78fd70f0c1922df3f56fd680.png

近年来,网约车服务平台在全球范围内取得巨大增长,并吸引了广泛的研究兴趣。网约车服务平台的关键问题之一是如何实现准确可靠的需求预测。然而,大多数现有研究集中在区域级的需求预测上,只有少数尝试解决OD需求预测问题。本文从图角度出发,构建了动态的OD图网络描述网约车需求数据。具体而言,作者提出一种新颖的神经网络结构,即动态节点-边缘注意力网络(DNEAT),该网络从需求生成和需求吸引角度解决OD需求预测的挑战。不同于以往研究,作者在DNEAT中提出一种新的神经网络层,称为k阶时间节点-边缘注意力层(k-TNEAT)以捕捉动态OD图中节点拓扑的时间演化,而不是区域间的预定义关系。文章在两个真实世界数据集上对模型进行评估,实验结果表明所提出模型优于其他基线模型,且对于高稀疏性需求数据的预测更加稳健。

5543625cf3799df623cf298d144843c4.png

文章信息

344ba8c550280934957acca1e70fd3c2.png

近年来,网约车服务平台例如滴滴、优步等打车服务平台通过智能手机应用程序提供方便的乘车服务,越来越受欢迎。需求预测是提高系统效率和平台利润的基本组成部分。通过提前了解出行需求,平台可以更好的重新平衡车辆资源的空间分布,减少车辆的闲置时间。另外,准确的需求信息还可以实现高效的动态定价方案,以确保更高的平台利润。网约车需求预测问题包括区域级预测和OD级预测。前者旨在预测每个地区总的出行生成或出行吸引,后者旨在预测两个区域间的出行需求。

尽管OD需求预测的适用性更广,但实时OD需求预测相比于区域级需求预测更具挑战。对于OD需求预测而言,给定N个区域,那么在单位时间段内一共存在N*N个OD对需要预测相关需求。当单位时间段较小时(比如10分钟),非零元素的数量将远小于零元素的数量,比如在成都地铁数据集中将近90%的元素为零。这种显著的稀疏性使预测模型对噪声的敏感性和预测精度无法令人满意。此外,OD对间的时空依赖性无法直接从OD需求矩阵中推断出来。现有针对OD需求的研究大部分没有考虑网约车需求数据中的非欧式结构,或者通过静态和无向图捕捉不同区域间的关系。然而,区域间的成对关系在每个时间段都是双向的,且随时间动态变化,这种时变和双向的关系不能简单地用静态和无向图结构来建模。

为此,文章提出一种新的神经网络结构称为动态节点-边缘注意力网络(DNEAT)以联合捕捉OD图中双向和时变的结构。该网络通过从需求生成和需求吸引的角度学习动态需求模式。对于每个角度,一种新颖的网络层k阶时间节点-边注意力层(k-TNEAT)被提出用于捕捉动态双向的OD图性质,该层同时整合了三种类型的信息:(1)节点属性,包括不同时间段内每个区域的乘客需求生成或吸引;(2)边属性,包括不同时间段内每个OD对的需求数量;(3)根据区域之间的领域关系(地理邻近)所定义的静态图结构,这种关系在训练过程中保持不变。通过自适应地调整区域之间的成对关系(基于上述信息),而不是使用预定义的关系,k-TNEAT可以捕捉OD图的动态需求模式。具体来说,给定一系列OD图,k-TNEAT层沿时间维度采取卷积操作。通过堆叠多个k-TNEAT层,DNEAT可以沿时间维度刻画局部和全局图结构。文章的主要贡献如下所示:

(1)作者提出DNEAT用以解决OD需求预测问题,这是首次在单个模型中同时考虑具有静态结构信息的节点-边的动态双向结构特性。

(2)作者提出k-TNEAT层用以捕捉时变OD图的动态需要模式,通过在不同时间间隔自适应调整每个OD对之间的关系来学习节点和边的表示。

(3)作者设计了一个动态节点拓扑表示方法以联合表示OD图的静态、双向和动态结构信息。这种表示是顺序可变的,节点的顺序(即OD矩阵中节点的行和列的索引)可以调整。因此,提出的方法既适用于欧式距离数据集,也适用于非欧式距离数据集。

(4)作者在两个真实世界网约车需求数据(成都和纽约)上对模型性能进行验证,模型与其他基线相比性能得到提升,且对于高稀疏性的需求数据具有较强的鲁棒性。

7ef01a68d6128d6ee0f07f19f3cafc7b.png

定义

276166a3821fdaf806cbc4bd38861174.png

定义(1):OD图

文章定义OD图G=(V,E)为一个加权双向图,其中V表示n个区域的集合,E表示边的集合。每个节点具有两个属性和,其中表示以该节点为起始站点的需求数量,表示以该节点为目标节点的需求数量。每一条边包含一个权重3f2fc15746fc62f2d7cbcd3f8241e3b9.png,表示由节点到节点的需求数量,并且每一个权重都是单向的,且满足ba8aa24879a13d62e17f9fc831723a54.pnge2b09cc03ede7cd5f1d9c483cd3474d7.png

OD图描述了乘客的需求模式,会随着不同时间段改变。图1表明不同时间间隔的参考需求模式存在很大不同。文章通过捕捉历史OD图的需求模式演化预测未来OD需求。因此,作者定义动态OD图由一系列OD图构成222db6abdb0df4c440547a6874f0d62e.png,其中是时间段t的动态OD图,且是OD图的数量,动态OD图集合可以表示为41c0b6487b2b16e673efc1027bfa7d18.png,其中T表示可以从历史观察中h获得的动态OD图的数量。动态OD图和静态图的最大不同是前者的图的结构会随时间变化。

f24419792a9f2c45fba38da4c241887a.png

图1 早中晚不同时间段的不同乘客需求模式

然而,上述定义的动态OD图仅包含历史交易数据的信息,无法表示区域间的地理关系。在城市中,两个区域之间的相互依赖程度高度依赖于它们之间的空间距离。当历史交易数据不足或有噪声时,地理信息可以极大地提高预测的准确性和鲁棒性。为了解决这类问题,最近研究提出了不同类型的关联性用于定义区域间的成对关系,包括空间接近性、功能相似性(基于兴趣点信息或时间序列属性)和交通连通性。由于这些预定义关系不会随时间变化,本文将其纳入静态信息的范畴,并基于静态结构信息进一步定义OD图中每一个节点的k阶领域。

定义(2):k阶领域

给定一个确定的静态结构信息,节点和节点的相似性可以通过一个离散函数衡量961ca3fe4c54c650969303460a325bb7.png,将两个节点之间的接近度转换为分类变量[0,1,...,K]。邻近度为k表示两个节点间的邻近程度属于第k个范围。特别地,当节点为自身时,邻近度等于0。节点的k阶领域定义为ece4301bb5f35bcad6ff3e1fd41797a6.png,其中33abae21cf864c19995cbbd0092fc508.png

定义(2)基于静态结构信息定义了两个节点间的邻近度。对于规则网格,节点间的邻近度通过函数ce175a6562d22ca911a0c3a427caa90b.png计算,其中row(i)row(j)表示行索引,col(i)col(j)表示列索引。对于不规则区域,通过将所有节点对的最短路径距离划分为K+1个范围来计算邻接度7ed5990efbd979cc5f3d73208dcf60e3.png,其中median表示邻近度的中位数。超参数K是邻近度的阈值,用于控制以每个节点为中心的邻域范围。通常,两个区域之间的接近程度代表了它们相互影响的程度。

定义(3):动态节点拓扑

在时间段t,给定动态OD图和k阶邻域集1914b4879456057ddb7e25f5b3096953.png,节点的动态节点拓扑定义为c5e4b43c09a6a9b7bfe226fa1d7ea039.png。这篇文章作者通过捕捉节点的动态节点拓扑学习OD图的动态需求模式。如图2所示,动态节点拓扑e8a2b681563e59a1e856f0d93df93fed.png是基于OD图的静态和动态结构信息所构造的分层表示。这些分层表示具有以下三个优点:(1)可以降低需求数据的复杂性,缓解需求数据的稀疏性问题;(2)顺序可变的(在OD矩阵中节点的顺序可以是任意的),因此可以适用于欧式和非欧式数据集;(3)以每个节点为中心,有助于提出的模型识别具有相似图拓扑的节点的能力。城市中存在许多简单而相似的移动模式,受益于动态节点拓扑表示,所提出的模型能够识别和学习位于城市不同节点相似的移动模式,即使这些节点相距遥远。

定义(4):OD需求预测问题

在时间段t,给定历史动态OD图观测值3ef92eda33ba249466d9c0b270af37eb.pngk阶领域集合45093c5761a9a69b739ed2d21d21dbc1.png,OD需求预测问题旨在预测下一个时间段的OD需求b7f4a8fdd67b96048426a28cb24b129e.png

136ec7556ec2af81e561bfa1a540db54.png

图2 动态节点拓扑

4eb0a4ae5796ae3eaa30d71d4be190b2.png

模型

1531b56b64f00db35e07811d8b55c093.png

动态节点-边注意力网络(DNEAT)主要由以下两个部分组成:需求生成模块和需求吸引模块,用于从不同角度学习动态OD图的表示。每个模块由三个k-TNEAT层组成,用于提取动态节点拓扑的特征,并生成节点和边的学习表示。接着,这些学习到的表示用以预测下一个时间段的OD需求。

5.1 k-TNEAT层

k-TNEAT层对一系列图进行操作。一个k-TNEAT层的输入包括两个部分:(1)节点表示,b0405477eb3aeffa75316171720a9d5d.png;(2)边表示,45491e68d54d338fcbd4cf6672e03e33.png。对于每个节点(或者边),输入表示可以视为具有C个通道的长度为的序列。输出则是新的节点表示和边缘表示集合,它们捕获以每个节点为中心的动态节点拓扑的演化模式。一个典型的k-TNEAT层由两个k阶时间编码层和一个时间节点-边注意力层构成。图3(a)展示了k-TNEAT层的整体框架。

5.1.1 k阶时间编码层

对于图序列,节点i的输入表示为5bc64b9f6e880b220b6477c260ebbb3e.png,边139df71a3c46c3410d47ae5651c5b73d.png的输入表示为2535954639724113b86d11234749b01d.png。该模块首先使用卷积操作对图序列进行处理,产生a2e5b5fced8bbd1d78abc14b9e864d2f.png个时间图891a5ef1ed080716d9df32e1045be0ad.png,其中F表示卷积核的感受野大小。对于每个时间图,时间节点表示为0001fcfa4bbc12cfe76ba63fd1988b7f.png和时间边表示为6588ae663ea873f5665364d0a9cc6360.png,其中6f3ef16f872bcd672c6ce26fc3563988.png0805bea7562122ed89700cef825c7085.png。给定时间图723381068bda81ec0d2a043b96c8822a.png的时间节点表示e5e204e0ffaeee1d486f418d71628110.png以及一组权重为39d264b218ecc834c440c8b4696aaaf9.png的滤波器ae85e7e3e3bc1ae04b5c98acbbd17cad.png,节点i的时间依赖性可以通过以下公式获得:

e411c09d4b0d6a89c48b0656eb86b460.png

给定时间图856e4179d8237529dec9f71860eecf79.png的时间边表示5c8c9912e0f80cd494fedeaf9de611c1.png,作者使用K+1组不同的滤波器编码边的时间和静态结构信息。对于边0e2051f6e002f94503a724741941f815.png,时间表示通过以下公式获得:

173e156371fa7609747b4bf4e2ff7a16.png

图3(b)可视化了k-阶时间编码层的计算过程。首先图序列沿时间维度进行卷积操作以获得时间图93ca5178b2b228c92424159de5429ffb.png;接着对于每一个时间图,通过不同组滤波器编码获得节点的时间表示和边的时间表示;最终利用全连接层将每个时间图表示的维度进行转换。k-阶时间编码层的最终输出通过堆叠所有时间图1d064f811a0f67f3c33bb9d085944688.png的表示所获得:(1)节点的时间表示86a04fcff988f3d44b280f6e712d7544.png;(2)边的时间表示1f942e5d84df49ba6202d17dbaf424f5.png。接着,节点的时间表示和边的时间表示被输入至时间节点-边注意力层。

  1. 时间节点-边注意力层

作者进一步整合时间图0cc8a40d5b3e2a94d62ad803e3f24834.png的动态节点拓扑信息。如图3(c)所示,时间图c6e2279da2f7e7c7be52095023ceab95.png中每个节点的聚合表示通过自适应聚合其k阶邻域的信息获得:

1e16e8d84ff6f1264767807628aa2a85.png

其中,434ba37d08d07c5b40525e15eece6215.png4ec4a58b923ac230a341395d2bead752.png表示线性转换,用于计算6c009a6f80356b5a504101a98acf4402.png13cd184fc4e82d559559457702ef1153.png,表示连接操作。f534928a4093519c2735415703d5922f.png表示门控取值,用于确定节点j的信息是否应该聚合到节点i48e23da1fd624aa9f0a12ffcf5f824ef.png表示时间图b45baabe9095d323dc150321958fb9bc.png中节点i和节点j的注意力分数,通过联合考虑两个节点和相连边的信息计算而得。对于每个节点i而言,注意力权重d25b3a26a4ad42331a265f5ba5a1286a.png从时间图07eaeee68ed10462229bab4bdc80a2b0.png中节点i的动态节点拓扑中可以学习得到,表示节点i和其k阶邻域的时间关系。对于每个时间图4a9ab645d148d59805e6eaae9a043c9b.png,时间节点-边注意力层的输出为fb9c19dd5e07611ed9cffb2124c55bd9.pngb4926a8c8779c36dcb5c177789c61336.png。与k-阶时间编码层类似,对时间节点-边注意力层的输出进行叠加运算得到:(1)节点的聚合表示70d6cf34108fe82284d40824dcc6ceac.png;(2)边的聚合表示f23fd07c6b66e0d38b05112a52c7f8ac.png

在经过时间节点-边注意力层处理后,使用一个新的k阶时间编码层进一步压缩输入图序列的时间维度。在每一个k-TNEAT层,作者压缩时间维度以融合邻接图的时间信息。通过堆叠多个k-TNEAT层,DNEAT可以访问图之间的短期和长期时间依赖关系,并捕获这些图结构的演化模式。总而言之,k阶时间编码层的计算过程如下:

90230708162bfdcd7a27bf7ecdbb044a.png

其中,和是节点和边的归一化表示。总之,k-TNEAT层的输入包括两个部分:(1)节点表示1b5b7c862d538b9681a5b488921a79d2.png;(2)边表示8d644a7a12da208b2c399ef805cc5c76.pngk-TNEAT层的输出包括:(1)节点表示04e77048609b18854c01adee5c74103f.png;(2)边表示a42c568e481044e04d71230cccc2a356.png

6b8958112b90d3cb418a25aa17309671.png

图3 k阶时间节点-边注意力层

5.2 DNEAT框架

5.2.1 DNEAT输入

DNEAT的输入数据包括三个部分:(1)k阶领域数据;(2)需求生成数据;(3)需求吸引数据。k阶领域数据754569c1b47a1daeaf9820b8ff5e355f.png从静态结构信息中蒸馏获得,比如节点质心间的路径距离。对于每个节点7c15bdfcb1deeaf4d8551840351088e1.pngaf01900d0fc375ea15c098a52f91f5f7.png描述了其在动态OD图中的邻域关系,需求生成和吸引模块共享这些静态信息。对于需求生成模块,作者根据历史动态OD图的观察结果f02b4b3f1b00ab8f712fc1c88bd8cd5e.png提取每个节点的行程需求。为了捕捉时间依赖性的趋势和周期性,作者考虑三种不同时间段的需求生成数据:(1)当前成分:c7aae92f2501985c1657ec4e2954097b.png698b3d05411a75ab8c3a460a492868a5.png,可以从当前时间段的动态OD图中提取;(2)日成分:c0b825f612cc74abe36fc7210c93dfa8.png1f7e3a51bdcac8c428a13e29d2af8eb7.png可以从昨天下一时间段的OD图中提取;(3)周成分:fbdf389e5baa43c0b65dd73c4795d830.png13a6e64675c021a5f66dc7ca42b34aea.png,可以从上周下一时间段的动态OD图中提取。因此,节点特征d6066d1cebbd6fb0ae05023412be503c.png可以定义如下:

8aa37272e263397977b2dd15c91f1eb7.png

其中,a=[当前,天,周],表示d6be2024d8be26895837198fdd091432.png的时间维度的长度,385e2acd7d8630d6c363570dc3d3439f.png表示在时间段(t, a, q)内从节点i出发的出行需求数量。与此类似的,需求生产模块的边特征d2d075c20e35ecdc8730fc828907d3b9.png同样定义如下:

de5d42b4cf876f5db910c5f39920655c.png

其中,2572095463cc42f5855ddd15e75259cf.png表示在时间段(t, a, q)内从节点i出发到达节点j的需求数量。需求吸引模块的输入数据组织形式与需求生成模块的相似,关注每个节点的需求吸引,其节点特征输入定义如下:

e76a6df0270e58d5d75b7f8d6904ba5f.png

相应的,输入至需求吸引模块的边特征定义如下:

35dc520ba0660f9281f45b3d71d1a824.png

5.2.2 DNEAT架构

d8d4d3d06aac7bb68c012e6ffb85fc91.png

图4 DNEAT框架图

需求生成和需求吸引模块结构相似,均由两个按顺序堆叠的k-TNEAT层构成,旨在从三种不同输入模式中提取信息。在每个模块,这两个k-TNEAT层的参数被所有三个组件共享。随后使用一个单一的k-TNEAT层融合从每个成分生成的表示,并生成具有时间依赖性的跨时间维度的综合表示。上述过程可以表述成以下的公式:

cec8d68a57a25e6a00c421502bf64b57.png

其中,表示拼接运算;7b13a68a7053ada6774f24cdbe7fa814.png7eec86c1b9ff66a485b74b8485b29c49.png分别是需求生成模块和吸引模块的输出;表示经过k-TNEAT层操作后的时间维度长度,表示k-TNEAT层的操作,表示两次使用k-TNEAT层操作。在DNEAT中,作者根据节点之间的需求产生和吸引关系来预测它们之间的需求。理论上,使用一组向量dbf7e9603bcc47b6793bb33dd622731d.png描述这种关系,通过单位卷积操作将两个模块产生的节点和边的时间表示组合起来,具体可以描述为:

0afd22dc287a1c362a9c1f7e19038970.png

其中,4e8a8bd7611e18747a4fa443b647f1e9.pngc2a00f24943bf8164e8a5c78b62490f0.png分别是一对节点和边的组合表示。由于节点和边的组合表示捕获了跨多个历史时间间隔的动态节点拓扑,因此可以用于预测下一个时间间隔的OD需求。此处作者根据节点和边的组合表示,使用两个单位卷积网络预测下一时段的OD需求,其中一个用于预测节点间的OD需求,另一个网络则用于判断节点间的OD需求是否为0。

5.2.3 损失函数

模型通过优化以下损失函数进行训练:

22a5b0bd8b43e3c09df3cbdf52b0c6a7.png

其中,和为惩罚系数用于平衡OD需求为零和非零的边缘损失贡献。在OD需求矩阵,零元素的数量远大于非零元素的数量。由于OD需求矩阵的稀疏性,如果损失函数只考虑减少整体回归误差,那么训练后的模型可能倾向于将大部分非零元素视为噪声,从而产生不精确的预测。为了克服这个问题,文章提出的损失函数联合考虑最小化1be183f7c58556132cf6b899188d29d0.png66f6e1f1f22424561265a1b29e3b0393.png,其中db7564d093f4d72171ee929ae74aec77.png是常用的二次回归损失,519828f73bc46e7a15d10c445ba3a9d0.png是一种辅助损失函数,用于使模型集中在难以预测的边上。例如,如果需求为零的边已被模型很好区分(即98c19702fc9e847620a1bca8696efc27.png),那么其对损失函数的贡献将会非常小。另外,在验证和测试阶段,最后的预测结果通过890781ea7edd92472a70d4ed0fb77022.png获得,其中187c7031b54bd9a955979f6e41bd2f3a.png是用于选择非零边的掩码。

c4f7a5eebcf100f00b93386187a4ed19.png

实验

993ab6659dfe0dfeb6c8a7a0bdb3de7f.png

实验部分,作者在两个真实世界的网约车数据集验证模型的预测精度。实验结果表明,相比其他现有方法,DNEAT模型在平均绝对误差和均方根误差等常见预测指标上,具有更好的性能和精度。感兴趣的读者可以阅读原文实验部分。

45413d8d53034e7a5a8cf091e89f6220.png

结论

0b1a1a320374c9f36a2f703d7b559788.png

本文提出了一个全新的神经网络框架DNEAT来对网约车OD需求预测中的不同特征进行建模,模型引入k-TNEAT层捕捉OD图的欧式和非欧式距离的时空依赖性。在每个k-TNEAT层,同样设计了一个时间节点-边注意力机制用于学习网约车OD需求预测中固有的动态双向图结构属性。此外,为减轻高稀疏度对现实世界网约车OD数据集的负面影响,作者仔细设计了一个目标函数,使模型专注于难以预测的边。实验结果表明模型在两个真实世界数据集上取得了令人满意的预测效果,同时对于高稀疏的需求数据更具鲁棒性。

虽然模型的性能仅由OD网约车需求数据证实,但其通用的图形表示方法也可以应用于其他类型的动态图形相关任务,例如共享单车需求预测和交通流预测。通过适度的修改,模型可以扩展到考虑其他类型的地理邻近性,例如兴趣点信息和动态变化的道路旅行时间,以更好地表征两个区域之间的邻里关系。

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

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

相关文章

MCU HardFault_Handler调试方法

一.获取内核寄存器的值 1.在MDK的DEBUG模式下,当程序出现跑飞后,确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器 如下图所…

机器学习-特征工程

一、特征工程介绍 1.1 什么是特征 数值特征(连续特征)、文本特征(离散特征) 1.2 特征的种类 1.3 特征工程 特征是机器学习可疑直接使用的,模型和特征之间是一个循环过程; 实际上特征工程就是将原始数据…

在Photoshop中如何校正倾斜的图片

在Photoshop中如何校正倾斜的图片呢?今天就教大家如何操作。 将需要操作的图片拉到PS软件中,自动形成项目。 点击上方“滤镜”中的“镜头校正”。 进入“镜头校正”窗口,点击左侧的“拉直工具”。文章源自设计学徒自学网-http://www.sx1c.co…

Docker(1)——安装Docker以及配置阿里云镜像加速

目录 一、简介 二、安装Docker 1. 访问Docker官网 2. 卸载旧版本Dokcer 3. 下载yum-utils(yum工具包集合) 4. 设置国内镜像仓库 5. 更新yum软件包索引 6. 安装Docker 7. 启动Docker 8. 卸载Docker 三、阿里云镜像加速 1. 访问阿里云官网 2. …

ElasticSearch快速入门实战

全文检索 什么是全文检索 全文检索是一种通过对文本内容进行全面索引和搜索的技术。它可以快速地在大量文本数据中查找包含特定关键词或短语的文档,并返回相关的搜索结果。全文检索广泛应用于各种信息管理系统和应用中,如搜索引擎、文档管理系统、电子…

Scan2BIM实战:从3D扫描到BIM模型生成

最近,我被问过很多次这个问题,所以我想我会尽力传达答案。 我应该指出,以下是概述,而不是非常详细的分步过程。 有很多因素会决定这项工作; 详细程度、扫描设备、点云配准软件和 CAD 软件等。 由于不知道你可能拥有或感…

netty实战-手写通信框架

通信框架功能设计 功能描述 通信框架承载了业务内部各模块之间的消息交互和服务调用,它的主要功能如下: 基于 Netty 的 NIO 通信框架,提供高性能的异步通信能力; 提供消息的编解码框架,可以实现 POJO 的序列化和反序…

Android Studio打包AAR

注意 依赖的Android Studio版本为4.2.2 更高的Android Studio版本使用方法可能有所不同,gradle的版本和gradle plugins的版本都会影响使用方式。 基于此,本文只能作为参考,而不能作为唯一答案,如果要完全依赖本文,则…

基于深度学习的菠萝与果叶视觉识别及切断机构设计

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、课题内容二、总体方案确定2.1 方案选择2.2 菠萝的视觉识别流程2.3 菠萝果叶切断机构设计流程 三 基于深度学习的菠萝检测模型3.1 卷积神经网络简介3.2 YOLO卷积神经网络3.3 图像采集与数据制作3.4 数据训练与…

ubuntu(18.04)中架设HiGlass docker镜像服务,已尝试mcool、bedpe、wig格式文件

前言 使用到的软件 docker 文档 : https://www.docker.com/ HiGlass 文档:http://docs.higlass.io/higlass_docker.html#running-locally higlass-docker 地址:https://github.com/higlass/higlass-docker nginx 文档: htt…

Modelsim 使用教程(2)——Basic Simulation

一、概述 在本文中,我们将介绍Modelsim基本的仿真流程,包括有: Create the Working Design Library(创建工具库) Compile the Design Units(编译设计单元) Optimize the Design(优化…

数据库概论

目录 什么是数据库数据库的概念模型层次模型网状模型关系模型 为什么要使用关系型数据库完整性约束结构化查询语言SQL基本语句 什么是数据库 考虑这些问题:当用户使用软件计算时,如果想要保存计算结果或者想选择不同的题目,是否要保存、读取…

利用云计算和微服务架构开发可扩展的同城外卖APP

如今,同城外卖APP已经成为了人们点餐的主要方式之一。然而,要构建一款成功的同城外卖APP,不仅需要满足用户的需求,还需要具备可扩展性,以适应快速增长的用户和订单量。 一、了解同城外卖APP的需求 在着手开发同城外卖…

设计模式(23)解释器模式

一、介绍: 1、定义:解释器(Interpreter)模式是一种对象的行为模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2、组成结构: (1&…

vue项目打包时按一定的名称规范生成对应的压缩包

在项目部署中经常需要将打包的dist按一定的名称压缩成压缩包,今天记录一下打包时生成压缩包的过程。其中有用到的npm包需要自己安装一下。 js文件放置的目录如下 compress.js内容如下: // compress.jsimport fs from "fs"; import shell fro…

外网远程登录之 NAT server

案例: 外网远程登录内网SW: 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1, 用户名和密码是:HCIE/hehe 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1, 用户名和密码是:HCI…

OpenCV 笔记(4):图像的算术运算、逻辑运算

Part11. 图像的算术运算 图像的本质是一个矩阵,所以可以对它进行一些常见的算术运算,例如加、减、乘、除、平方根、对数、绝对值等等。除此之外,还可以对图像进行逻辑运算和几何变换。 我们先从简单的图像加、减、逻辑运算开始介绍。后续会有…

文件fd.

共识原理: 1.文件 内容 属性 2.文件分为打开的文件 和 没打开的文件 3.打开的文件: 谁打开? 进程! ----本质是研究进程和文件的关系! 根据冯诺依曼原理,文件被打开,必须先被加载到内存!不然CPU怎么访问它 那么是文件内容被加载&#xff…

系列七、Mybatis的二级缓存

一、概述 Mybatis的二级缓存是多个sqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession执行两次相同的查询,mybatis会将第一次执行完的数据放到二级缓存中(坑:需要执行close操作,要不然不…

通过Python脚本支持OC代码重构实践(二):数据项提供模块接入数据通路的代码生成

作者 | 刘俊启 导读 在软件开发中,经常会遇到一些代码问题,例如逻辑结构复杂、依赖关系混乱、代码冗余、不易读懂的命名等。这些问题可能导致代码的可维护性下降,增加维护成本,同时也会影响到开发效率。这时通常通过重构的方式对已…