基于学习算法的交通仿真软件参数标定方法、系统及介质与流程

文档序号:19529713发布日期:2019-12-27 15:16阅读:357来源:国知局
基于学习算法的交通仿真软件参数标定方法、系统及介质与流程

本发明涉及交通仿真领域,具体地,涉及一种基于学习算法的交通仿真软件参数标定方法、系统及介质。尤其地,涉及基于机器学习算法的微观交通仿真软件参数标定方法。



背景技术:

微观交通仿真技术是交通工程师进行交通影响评价的主要技术,通过对仿真技术的输出结果进行分析验证交通规划方案的有效性,为确保结果的准确性需要微观仿真软件能尽可能符合实际交通情况。然而不同地点的驾驶行为,道路线型等因素都有差别,需要一种软件的参数标定方法快速准确的调整相关的软件参数,为后续的进一步分析与评价提供支持。

很多其他的算法被应用于微观交通仿真软件参数标定研究,常见的方法都是基于遗传算法、模拟退火算法、禁忌搜索算法以及其改进方法进行标定。然而,常见的方法求解效率不高,算法设计也比较复杂,难以应用到实际交通评价工作中。粒子群算法相比其他方法的优势主要有:收敛速度快;算法规则简单、容易实现;可调参数少且相关理论较成熟。上述优势都是在工程应用中需要重点考虑的问题。

微观交通仿真软件相对于宏观与中观交通仿真软件来说,更加注重单个车辆的行驶细节,尺度更精细,同时也伴随着更长的仿真时长。如果将微观交通仿真软件直接与粒子群算法结合使用,仿真次数过多,耗时过长,效率很低,不符合工程应用的实际需要。因此需要通过深度学习(神经网络)的方法,直接拟合出待标定参数与相关输出结果的函数关系,而忽略微观交通仿真软件关注的其他细节,进而提高效率。在工程应用中,待标定参数与相关输出结果函数关系形式往往未知,不能通过数据直接拟合得到,而神经网络作为一个黑箱模型,只要求使用者提供一定量的输入输出数据集便可自行探索最优模型,因此用神经网络进行探索是一个可行的方案。

现有的微观交通仿真软件参数标定方法,效率不高,算法规则复杂,无法很好的在实际交通评价工程中应用。另外,现有的参数标定方法往往与微观交通仿真软件结合使用,耗时过长,效率过低,提出神经网络训练的方法代替微观交通仿真软件与粒子群算法结合运用,从而提出一种基于神经网络与粒子群算法的参数标定方法。

专利文献109544511a(申请号:201811252918.x)公开了人工智能与医学影像分析相结合的领域,涉及基于粒子群算法优化的卷积神经网络对肺结节识别的方法,包括以下步骤:获取病人肺部的ct切片图像;对ct切片图像进行预处理,将获取的ct切片图像进行标注,形成数据集;构造卷积神经网络;使用粒子群算法优化卷积神经网络的超参数;利用标注好的数据集对优化后的卷积神经网络进行训练;使用训练完成的卷积神经网络提取肺结节特征。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于机器学习算法的微观交通仿真软件参数标定方法。

根据本发明提供的一种基于学习算法的交通仿真软件参数标定方法,包括:

步骤a:对参数进行初步筛选,并对筛选后的参数进行灵敏度分析,获取符合预设要求的第一待标定参数,并采集训练用数据集;

步骤b:根据获取的第一待标定参数及训练用数据集,进行神经网络模型训练,获得训练后的神经网络模型;

步骤c:根据获得的训练后的神经网络模型,进行粒子群算法寻优。

优选地,所述步骤a包括如下步骤:

步骤a1:对工程应用中的参数或仿真结果有影响的参数进行初步筛选;

所述初步筛选是选出与工程相关或需要重点关注确定其影响程度的参数;

步骤a2:对初步筛选的参数进行灵敏度分析,找出符合预设影响程度的参数作为本次标定过程中的第一待标定参数;

步骤a3:以需要研究的地点为背景,运用待标定的微观交通仿真软件建立路网模型;所述研究的地点包含γ条目标路段,选取某一个指标以及已知路网中目标路段对应指标的实际值;

步骤a4:训练数据采集:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集;

步骤a5:根据获得的训练用数据集,再根据研究目标选取指标,并分析根据研究目标选取的指标是否落在训练用数据集输出结果的取值范围内以确保神经网络模型能够包含实际情况,若真实的指标不落在数据集输出结果的取值范围内,则调整采数据集时的参数取值范围重新采样;否则,则不重新采样;

所述根据研究目标选取的指标指:本次标定过程中与实际情况一致的路段的指标,包括:平均速度、流量。

优选地,所述步骤b包括如下步骤:

步骤b1:根据获取的第一待标定参数,从不同的驾驶情景下取值情况不同的第一待标定参数中,通过灵敏度分析的方法选出影响程度符合预设要求的α个参数作为第二待标定参数;

步骤b2:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集,然后将得到的数据集以预设比例分为训练集、验证集以及测试集;

所述预设比例根据工程实践确定;

步骤b3:训练神经网络:

首先,确定神经网络的初始参数,包括:隐含层的层数、每个隐含层神经元个数、每层的激活函数、学习率以及正则项;

然后,赋予每个神经网络连接权重初始值,根据训练集,运用误差逆传播算法,通过一定次数的迭代,找到输出结果与验证集的损失值最小的模型;

最后,调整神经网络参数,训练新的模型,直到最优模型达到预设要求为止;所述要求指损失值小于预先设定的某个值,所述损失值即在具体问题中可接受的输出结果与实际情况的误差值;

步骤b4:将训练好的模型用测试集进行测试,如果测试集的损失值小于验证集,即认为模型没有收敛,增加迭代次数继续训练,返回步骤b3继续执行;

如果测试集损失值大于验证集且在第一预设范围内,即判定模型可接受;

如果测试集损失值大于验证集且在第二预设范围内,即判定过拟合,返回步骤b3继续执行,重新调参继续训练,直到模型可接受为止。

优选地,所述神经网络包括:输入层,输出层,隐含层以及它们之间的连接权重;

所述输入层的神经元数由第二待标定参数的个数决定;

所述输出层的神经元数由目标路段的个数决定;

所述隐含层的层数以及每层神经元数通过调参确定。

优选地,所述步骤c包括如下步骤:

步骤c1:初始化:设定整个粒子群中有β个粒子,对于第k次迭代:

aki=(aki1,aki2,……,akiα)是第i个粒子在α维线性空间的位置,其中每个分量代表对应参数的取值,i∈[1,β]且i是整数;vki=(vki1,vki2,……,vkiα)是第i个粒子在α维线性空间的速度;fki是第i个粒子的适应值;fi是第i个粒子的最佳适应值;f是整个粒子群的最佳适应值;x0=(x01,x02,……,x0γ)代表目标路段的实际平均速度值;pi=(pi1,pi2,……,piα)是第i个粒子的最优位置;g=(g1,g2,……,gα)是总体最优位置,当k=1时设定:a1i=(a1i1,a1i2,……,a1iα);

v1i=(v1i1,v1i2,……,v1iα);fi=∞;f=∞;pi=0;g=0;

步骤c2:仿真:将aki输入进训练好的神经网络模型中作为参数,并记录模型输出的各目标路段平均速度记为xki=(xki1,xki2,……,xkiγ);

步骤c3:计算适应值:按照如下公式计算各个粒子在该次迭代的适应值:

其中,fki表示第i个粒子在第k次迭代的适应值;

xkij表示第i个粒子在第k次迭代的目标路段模型输出的第j条目标路段平均速度;

x0j表示第j条目标路段的实际平均速度;

步骤c4:更新每个粒子以及整个粒子群的最优适应值与最优位置:

若,fki≤fi则接受新的适应值:将fki的值赋给fi,将aki的值赋给pi;

否则拒绝新的适应值:保留fi和pi的值不变;

若minfi≤f,则更新全局最优适应值:将minfi的值赋给f,将minpi的值赋给g;

否则,保留f和g的值不变;

其中,minfi表示整个粒子群当前最小适应值;

minpi表示最小适应值对应的粒子位置;

步骤c5:更新每个粒子的位置与速度:

粒子根据下面的公式更新每次迭代的位置与速度:

a(k+1)i=aki+vki

v(k+1)i=ρkvki+c1r1(pi-a(k+1)i)+c2r2(g-a(k+1)i)

其中,a(k+1)i表示下一次迭代第i个粒子的位置;

v(k+1)i表示下一次迭代第i个粒子的速度;

ρkvki表示第k次迭代第i个粒子的速度与本次迭代的惯性系数乘积;

c1r1表示学习因子1与一个0到1的随机数的乘积;

c2r2表示学习因子2与一个0到1的随机数的乘积;

步骤c6:判断是否符合停止条件:

若k<n且minfi≠maxfi,那么令k加1,返回步骤c2,继续执行;否则,停止,输出当前全局最优适应值与对应的最优位置;

其中,maxfi表示整个粒子群当前最大适应值,n表示根据工程实际需要预先设定的最大迭代次数。

根据本发明提供的一种基于学习算法的交通仿真软件参数标定方法参数标定系统,包括:

模块a:对参数进行初步筛选,并对筛选后的参数进行灵敏度分析,获取符合预设要求的第一待标定参数,并采集训练用数据集;

模块b:根据获取的第一待标定参数及训练用数据集,进行神经网络模型训练,获得训练后的神经网络模型;

模块c:根据获得的训练后的神经网络模型,进行粒子群算法寻优。

优选地,所述模块a包括:

模块a1:对工程应用中的参数或仿真结果有影响的参数进行初步筛选;

所述初步筛选是选出与工程相关或需要重点关注确定其影响程度的参数;

模块a2:对初步筛选的参数进行灵敏度分析,找出符合预设影响程度的参数作为本次标定过程中的第一待标定参数;

模块a3:以需要研究的地点为背景,运用待标定的微观交通仿真软件建立路网模型;所述研究的地点包含γ条目标路段,选取某一个指标以及已知路网中目标路段对应指标的实际值;

模块a4:训练数据采集:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集;

模块a5:根据获得的训练用数据集,再根据研究目标选取指标,并分析根据研究目标选取的指标是否落在训练用数据集输出结果的取值范围内以确保神经网络模型能够包含实际情况,若真实的指标不落在数据集输出结果的取值范围内,则调整采数据集时的参数取值范围重新采样;否则,则不重新采样;

所述根据研究目标选取的指标指:本次标定过程中与实际情况一致的路段的指标,包括:平均速度、流量。

优选地,所述模块b包括:

模块b1:根据获取的第一待标定参数,从不同的驾驶情景下取值情况不同的第一待标定参数中,通过灵敏度分析的方法选出影响程度符合预设要求的α个参数作为第二待标定参数;

模块b2:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集,然后将得到的数据集以预设比例分为训练集、验证集以及测试集;

所述预设比例根据工程实践确定;

模块b3:训练神经网络:

首先,确定神经网络的初始参数,包括:隐含层的层数、每个隐含层神经元个数、每层的激活函数、学习率以及正则项;

然后,赋予每个神经网络连接权重初始值,根据训练集,运用误差逆传播算法,通过一定次数的迭代,找到输出结果与验证集的损失值最小的模型;

最后,调整神经网络参数,训练新的模型,直到最优模型达到预设要求为止;所述要求指损失值小于预先设定的某个值,所述损失值即在具体问题中可接受的输出结果与实际情况的误差值;

模块b4:将训练好的模型用测试集进行测试,如果测试集的损失值小于验证集,即认为模型没有收敛,增加迭代次数继续训练,调用模块b3;

如果测试集损失值大于验证集且在第一预设范围内,即判定模型可接受;

如果测试集损失值大于验证集且在第二预设范围内,即判定过拟合,调用模块b3,重新调参继续训练,直到模型可接受为止;

所述神经网络包括:输入层,输出层,隐含层以及它们之间的连接权重;

所述输入层的神经元数由第二待标定参数的个数决定;

所述输出层的神经元数由目标路段的个数决定;

所述隐含层的层数以及每层神经元数通过调参确定。

优选地,所述模块c包括如下模块:

模块c1:初始化:设定整个粒子群中有β个粒子,对于第k次迭代:

aki=(aki1,aki2,……,akiα)是第i个粒子在α维线性空间的位置,其中每个分量代表对应参数的取值,i∈[1,β]且i是整数;vki=(vki1,vki2,……,vkiα)是第i个粒子在α维线性空间的速度;fki是第i个粒子的适应值;fi是第i个粒子的最佳适应值;f是整个粒子群的最佳适应值;x0=(x01,x02,……,x0γ)代表目标路段的实际平均速度值;pi=(pi1,pi2,……,piα)是第i个粒子的最优位置;g=(g1,g2,……,gα)是总体最优位置,当k=1时设定:a1i=(a1i1,a1i2,……,a1iα);

v1i=(v1i1,v1i2,……,v1iα);fi=∞;f=∞;pi=0;g=0;

模块c2:仿真:将aki输入进训练好的神经网络模型中作为参数,并记录模型输出的各目标路段平均速度记为xki=(xki1,xki2,……,xkiγ);

模块c3:计算适应值:按照如下公式计算各个粒子在该次迭代的适应值:

其中,fki表示第i个粒子在第k次迭代的适应值;

xkij表示第i个粒子在第k次迭代的目标路段模型输出的第j条目标路段平均速度;

x0j表示第j条目标路段的实际平均速度;

模块c4:更新每个粒子以及整个粒子群的最优适应值与最优位置:

若,fki≤fi则接受新的适应值:将fki的值赋给fi,将aki的值赋给pi;

否则拒绝新的适应值:保留fi和pi的值不变;

若minfi≤f,则更新全局最优适应值:将minfi的值赋给f,将minpi的值赋给g;

否则,保留f和g的值不变;

其中,minfi表示整个粒子群当前最小适应值;

minpi表示最小适应值对应的粒子位置;

模块c5:更新每个粒子的位置与速度:

粒子根据下面的公式更新每次迭代的位置与速度:

a(k+1)i=aki+vki

v(k+1)i=ρkvki+c1r1(pi-a(k+1)i)+c2r2(g-a(k+1)i)

其中,a(k+1)i表示下一次迭代第i个粒子的位置;

v(k+1)i表示下一次迭代第i个粒子的速度;

ρkvki表示第k次迭代第i个粒子的速度与本次迭代的惯性系数乘积;

c1r1表示学习因子1与一个0到1的随机数的乘积;

c2r2表示学习因子2与一个0到1的随机数的乘积;

模块c6:判断是否符合停止条件:

若k<n且minfi≠maxfi,那么令k加1,调用模块c2;否则,停止,输出当前全局最优适应值与对应的最优位置;

其中,maxfi表示整个粒子群当前最大适应值,n表示根据工程实际需要预先设定的最大迭代次数。

根据本发明提供的一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现上述中任一项所述的基于学习算法的交通仿真软件参数标定方法的步骤。

与现有技术相比,本发明具有如下的有益效果:

本发明提出在微观交通仿真软件仿真结果与实际交通情况相差较大时,对仿真软件的参数标定方法,以使其输出结果与实际交通情况差距大幅缩小。该方法首先用神经网络训练一个模型,使其拟合出待标定参数与对应目标路网输出结果的函数关系,而忽略其他与参数标定无关的关系,进而为下一步寻优过程节约大量时间,提高效率。然后利用粒子群算法,结合已经训练好的神经网络模型,寻找最优解。相比于其他启发式算法,粒子群算法收敛速度快;算法规则简单、容易实现;可调参数少且相关理论较成熟。将神经网络与粒子群算法结合,可以整合两者优点,在寻优过程中避免不断引入仿真软件,进而大幅节约寻优时间,提高效率。因此,本发明提出的方法能够高效的找到适合于当前路网的最优参数,且适合于实际应用。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明提供的基于学习算法的交通仿真软件参数标定方法的流程示意图。

图2为本发明提供的路网示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

根据本发明提供的一种基于学习算法的交通仿真软件参数标定方法,包括:

步骤a:对参数进行初步筛选,并对筛选后的参数进行灵敏度分析,获取符合预设要求的第一待标定参数,并采集训练用数据集;

步骤b:根据获取的第一待标定参数及训练用数据集,进行神经网络模型训练,获得训练后的神经网络模型;

步骤c:根据获得的训练后的神经网络模型,进行粒子群算法寻优。

具体地,所述步骤a包括如下步骤:

步骤a1:对工程应用中的参数或仿真结果有影响的参数进行初步筛选;

所述初步筛选是选出与工程相关或需要重点关注确定其影响程度的参数;

步骤a2:对初步筛选的参数进行灵敏度分析,找出符合预设影响程度的参数作为本次标定过程中的第一待标定参数;

步骤a3:以需要研究的地点为背景,运用待标定的微观交通仿真软件建立路网模型;所述研究的地点包含γ条目标路段,选取某一个指标以及已知路网中目标路段对应指标的实际值;

步骤a4:训练数据采集:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集;

步骤a5:根据获得的训练用数据集,再根据研究目标选取指标,并分析根据研究目标选取的指标是否落在训练用数据集输出结果的取值范围内以确保神经网络模型能够包含实际情况,若真实的指标不落在数据集输出结果的取值范围内,则调整采数据集时的参数取值范围重新采样;否则,则不重新采样;

所述根据研究目标选取的指标指:本次标定过程中与实际情况一致的路段的指标,包括:平均速度、流量。

具体地,所述步骤b包括如下步骤:

步骤b1:根据获取的第一待标定参数,从不同的驾驶情景下取值情况不同的第一待标定参数中,通过灵敏度分析的方法选出影响程度符合预设要求的α个参数作为第二待标定参数;

步骤b2:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集,然后将得到的数据集以预设比例分为训练集、验证集以及测试集;

所述预设比例根据工程实践确定;

步骤b3:训练神经网络:

首先,确定神经网络的初始参数,包括:隐含层的层数、每个隐含层神经元个数、每层的激活函数、学习率以及正则项;

然后,赋予每个神经网络连接权重初始值,根据训练集,运用误差逆传播算法,通过一定次数的迭代,找到输出结果与验证集的损失值最小的模型;

最后,调整神经网络参数,训练新的模型,直到最优模型达到预设要求为止;所述要求指损失值小于预先设定的某个值,所述损失值即在具体问题中可接受的输出结果与实际情况的误差值;

步骤b4:将训练好的模型用测试集进行测试,如果测试集的损失值小于验证集,即认为模型没有收敛,增加迭代次数继续训练,返回步骤b3继续执行;

如果测试集损失值大于验证集且在第一预设范围内,即判定模型可接受;

如果测试集损失值大于验证集且在第二预设范围内,即判定过拟合,返回步骤b3继续执行,重新调参继续训练,直到模型可接受为止。

具体地,所述神经网络包括:输入层,输出层,隐含层以及它们之间的连接权重;

所述输入层的神经元数由第二待标定参数的个数决定;

所述输出层的神经元数由目标路段的个数决定;

所述隐含层的层数以及每层神经元数通过调参确定。

具体地,所述步骤c包括如下步骤:

步骤c1:初始化:设定整个粒子群中有β个粒子,对于第k次迭代:

aki=(aki1,aki2,……,akiα)是第i个粒子在α维线性空间的位置,其中每个分量代表对应参数的取值,i∈[1,β]且i是整数;vki=(vki1,vki2,……,vkiα)是第i个粒子在α维线性空间的速度;fki是第i个粒子的适应值;fi是第i个粒子的最佳适应值;f是整个粒子群的最佳适应值;x0=(x01,x02,……,x0γ)代表目标路段的实际平均速度值;pi=(pi1,pi2,……,piα)是第i个粒子的最优位置;g=(g1,g2,……,gα)是总体最优位置,当k=1时设定:a1i=(a1i1,a1i2,……,a1iα);

v1i=(v1i1,v1i2,……,v1iα);fi=∞;f=∞;pi=0;g=0;

步骤c2:仿真:将aki输入进训练好的神经网络模型中作为参数,并记录模型输出的各目标路段平均速度记为xki=(xki1,xki2,……,xkiγ);

步骤c3:计算适应值:按照如下公式计算各个粒子在该次迭代的适应值:

其中,fki表示第i个粒子在第k次迭代的适应值;

xkij表示第i个粒子在第k次迭代的目标路段模型输出的第j条目标路段平均速度;

x0j表示第j条目标路段的实际平均速度;

步骤c4:更新每个粒子以及整个粒子群的最优适应值与最优位置:

若,fki≤fi则接受新的适应值:将fki的值赋给fi,将aki的值赋给pi;

否则拒绝新的适应值:保留fi和pi的值不变;

若minfi≤f,则更新全局最优适应值:将minfi的值赋给f,将minpi的值赋给g;

否则,保留f和g的值不变;

其中,minfi表示整个粒子群当前最小适应值;

minpi表示最小适应值对应的粒子位置;

步骤c5:更新每个粒子的位置与速度:

粒子根据下面的公式更新每次迭代的位置与速度:

a(k+1)i=aki+vki

v(k+1)i=ρkvki+c1r1(pi-a(k+1)i)+c2r2(g-a(k+1)i)

其中,a(k+1)i表示下一次迭代第i个粒子的位置;

v(k+1)i表示下一次迭代第i个粒子的速度;

ρkvki表示第k次迭代第i个粒子的速度与本次迭代的惯性系数乘积;

c1r1表示学习因子1与一个0到1的随机数的乘积;

c2r2表示学习因子2与一个0到1的随机数的乘积;

步骤c6:判断是否符合停止条件:

若k<n且minfi≠maxfi,那么令k加1,返回步骤c2,继续执行;否则,停止,输出当前全局最优适应值与对应的最优位置;

其中,maxfi表示整个粒子群当前最大适应值,n表示根据工程实际需要预先设定的最大迭代次数。

根据本发明提供的一种基于学习算法的交通仿真软件参数标定方法参数标定系统,包括:

模块a:对参数进行初步筛选,并对筛选后的参数进行灵敏度分析,获取符合预设要求的第一待标定参数,并采集训练用数据集;

模块b:根据获取的第一待标定参数及训练用数据集,进行神经网络模型训练,获得训练后的神经网络模型;

模块c:根据获得的训练后的神经网络模型,进行粒子群算法寻优。

具体地,所述模块a包括:

模块a1:对工程应用中的参数或仿真结果有影响的参数进行初步筛选;

所述初步筛选是选出与工程相关或需要重点关注确定其影响程度的参数;

模块a2:对初步筛选的参数进行灵敏度分析,找出符合预设影响程度的参数作为本次标定过程中的第一待标定参数;

模块a3:以需要研究的地点为背景,运用待标定的微观交通仿真软件建立路网模型;所述研究的地点包含γ条目标路段,选取某一个指标以及已知路网中目标路段对应指标的实际值;

模块a4:训练数据采集:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集;

模块a5:根据获得的训练用数据集,再根据研究目标选取指标,并分析根据研究目标选取的指标是否落在训练用数据集输出结果的取值范围内以确保神经网络模型能够包含实际情况,若真实的指标不落在数据集输出结果的取值范围内,则调整采数据集时的参数取值范围重新采样;否则,则不重新采样;

所述根据研究目标选取的指标指:本次标定过程中与实际情况一致的路段的指标,包括:平均速度、流量。

具体地,所述模块b包括:

模块b1:根据获取的第一待标定参数,从不同的驾驶情景下取值情况不同的第一待标定参数中,通过灵敏度分析的方法选出影响程度符合预设要求的α个参数作为第二待标定参数;

模块b2:运用建立好的路网模型,根据预设的训练精度标准,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值,将参数组与输出结果一一对应得到训练用数据集,然后将得到的数据集以预设比例分为训练集、验证集以及测试集;

所述预设比例根据工程实践确定;

模块b3:训练神经网络:

首先,确定神经网络的初始参数,包括:隐含层的层数、每个隐含层神经元个数、每层的激活函数、学习率以及正则项;

然后,赋予每个神经网络连接权重初始值,根据训练集,运用误差逆传播算法,通过一定次数的迭代,找到输出结果与验证集的损失值最小的模型;

最后,调整神经网络参数,训练新的模型,直到最优模型达到预设要求为止;所述要求指损失值小于预先设定的某个值,所述损失值即在具体问题中可接受的输出结果与实际情况的误差值;

模块b4:将训练好的模型用测试集进行测试,如果测试集的损失值小于验证集,即认为模型没有收敛,增加迭代次数继续训练,调用模块b3;

如果测试集损失值大于验证集且在第一预设范围内,即判定模型可接受;

如果测试集损失值大于验证集且在第二预设范围内,即判定过拟合,调用模块b3,重新调参继续训练,直到模型可接受为止;

所述神经网络包括:输入层,输出层,隐含层以及它们之间的连接权重;

所述输入层的神经元数由第二待标定参数的个数决定;

所述输出层的神经元数由目标路段的个数决定;

所述隐含层的层数以及每层神经元数通过调参确定。

具体地,所述模块c包括如下模块:

模块c1:初始化:设定整个粒子群中有β个粒子,对于第k次迭代:

aki=(aki1,aki2,……,akiα)是第i个粒子在α维线性空间的位置,其中每个分量代表对应参数的取值,i∈[1,β]且i是整数;vki=(vki1,vki2,……,vkiα)是第i个粒子在α维线性空间的速度;fki是第i个粒子的适应值;fi是第i个粒子的最佳适应值;f是整个粒子群的最佳适应值;x0=(x01,x02,……,x0γ)代表目标路段的实际平均速度值;pi=(pi1,pi2,……,piα)是第i个粒子的最优位置;g=(g1,g2,……,gα)是总体最优位置,当k=1时设定:a1i=(a1i1,a1i2,……,a1iα);

v1i=(v1i1,v1i2,……,v1iα);fi=∞;f=∞;pi=0;g=0;

模块c2:仿真:将aki输入进训练好的神经网络模型中作为参数,并记录模型输出的各目标路段平均速度记为xki=(xki1,xki2,……,xkiγ);

模块c3:计算适应值:按照如下公式计算各个粒子在该次迭代的适应值:

其中,fki表示第i个粒子在第k次迭代的适应值;

xkij表示第i个粒子在第k次迭代的目标路段模型输出的第j条目标路段平均速度;

x0j表示第j条目标路段的实际平均速度;

模块c4:更新每个粒子以及整个粒子群的最优适应值与最优位置:

若,fki≤fi则接受新的适应值:将fki的值赋给fi,将aki的值赋给pi;

否则拒绝新的适应值:保留fi和pi的值不变;

若minfi≤f,则更新全局最优适应值:将minfi的值赋给f,将minpi的值赋给g;

否则,保留f和g的值不变;

其中,minfi表示整个粒子群当前最小适应值;

minpi表示最小适应值对应的粒子位置;

模块c5:更新每个粒子的位置与速度:

粒子根据下面的公式更新每次迭代的位置与速度:

a(k+1)i=aki+vki

v(k+1)i=ρkvki+c1r1(pi-a(k+1)i)+c2r2(g-a(k+1)i)

其中,a(k+1)i表示下一次迭代第i个粒子的位置;

v(k+1)i表示下一次迭代第i个粒子的速度;

ρkvki表示第k次迭代第i个粒子的速度与本次迭代的惯性系数乘积;

c1r1表示学习因子1与一个0到1的随机数的乘积;

c2r2表示学习因子2与一个0到1的随机数的乘积;

模块c6:判断是否符合停止条件:

若k<n且minfi≠maxfi,那么令k加1,调用模块c2;否则,停止,输出当前全局最优适应值与对应的最优位置;

其中,maxfi表示整个粒子群当前最大适应值,n表示根据工程实际需要预先设定的最大迭代次数。

根据本发明提供的一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现上述中任一项所述的基于学习算法的交通仿真软件参数标定方法的步骤。

下面通过优选例,对本发明进行更为具体地说明。

优选例1:

为实现上述发明目的,本发明采用的技术方案为一种基于神经网络与粒子群算法的微观交通仿真软件参数标定方法,方法分为三大部分,整体流程示意图如图1所示,每部分具体步骤如下:

参数的筛选:

步骤1:对工程应用中关心的参数或有可能对关注的仿真结果有较大影响的参数进行初步筛选

所述初步筛选是选出与工程相关或需要重点关注确定其影响程度的参数;

步骤2:对初步筛选的参数进行灵敏度分析,找出影响较为显著的参数作为本次标定过程中的待标定参数;

步骤3:运用仿真软件采集后续训练用数据集(即参数-输出结果对),并分析根据研究目标选取的指标是否落在训练用数据集输出结果的取值范围内以确保神经网络模型能够包含实际情况。若真实的指标不落在数据集输出结果的取值范围内,则需调整采数据集时的参数取值范围重新采样。所述根据研究目标选取的指标即指本次标定想让路段的哪种指标(如平均速度,流量等)与实际情况趋于一致。

神经网络模型训练:

神经网络主要由输入层,输出层,隐含层以及它们之间的连接权重组成。输入层神经元数由待标定参数个数决定,输出层神经元数由目标路段个数决定,而隐含层层数以及每层神经元数由用户通过调参自行确定。

步骤1:建立路网模型:以需要研究的地点为背景,运用待标定的微观交通仿真软件建立路网模型。其中包含γ条目标路段,选取某一个指标(以路段平均速度为例),已知路网中目标路段对应指标的实际值;

步骤2:标定参数选取:初步选取p个在不同驾驶情景下,取值情况不同的参数(如驾驶行为参数,不同国家的驾驶员行为特点不同),再通过灵敏度分析的方法选出影响明显的α个参数作为待标定参数;

步骤3:训练数据采集:运用建立好的路网模型,根据训练精度需要,采集m组数据对,方法如下:随机生成m组参数取值,每组参数分别输入路网模型,多次仿真记录目标路段指标输出结果的平均值。将参数组与输出结果一一对应得到训练用数据集。然后,将得到的数据集以某种比例(如8:1:1)分为训练集,验证集与测试集;

所述某种比例:根据工程实践自行确定,一般训练集的数据要显著多,而验证集与测试集的数量不能过少;

步骤4:训练神经网络:确定神经网络的初始参数,主要包括:(1)隐含层的层数;(2)每个隐含层神经元个数;(3)每层的激活函数;(4)学习率;(5)正则项。赋予每个神经网络连接权重初始值,运用误差逆传播算法,通过一定次数的迭代,找到输出结果与验证集的损失值(由用户定义)最小的模型,所述损失值可以根据需要自行定义,可以是均方差,可以是均值差等等,主要是看实际应用中需要用哪一个方式度量输出结果与实际情况接近程度。调整神经网络参数,训练新的模型,直到最优模型达到要求为止,所述要求指损失值小于预先设定的某个值(即在具体问题中可接受的输出结果与实际情况的误差值);

步骤5:测试模型:将训练好的模型用测试集进行测试,如果测试集的损失值小于验证集,考虑到模型没有收敛,应返回步骤4,增加迭代次数继续训练;如果测试集损失值略大于验证集,模型可接受;如果测试集损失值显著大于(根据实际工程实践中选取的损失值计算方式以及精度要求综合确定)验证集,考虑到有可能过拟合,需要返回步骤4,重新调参继续训练,直到模型可接受为止。

粒子群算法寻优:

步骤1:初始化:设定整个粒子群中有β个粒子,对于第k次迭代:

aki=(aki1,aki2,……,akiα)是第i个粒子在α维线性空间的位置,其中每个分量代表对应参数的取值(i∈[1,β]且i是整数);vki=(vki1,vki2,……,vkiα)是第i个粒子在α维线性空间的速度;fki是第i个粒子的适应值;fi是第i个粒子的最佳适应值;f是整个粒子群的最佳适应值;x0=(x01,x02,……,x0γ)代表目标路段的实际平均速度值;pi=(pi1,pi2,……,piα)是第i个粒子的最优位置;g=(g1,g2,……,gα)是总体最优位置。当k=1时设定:a1i=(a1i1,a1i2,……,a1iα);

v1i=(v1i1,v1i2,……,v1iα);fi=∞;f=∞;pi=0;g=0。

步骤2:仿真:将aki输入进训练好的神经网络模型中作为参数,并记录模型输出的各目标路段平均速度记为xki=(xki1,xki2,……,xkiγ);

步骤3:计算适应值:按照如下公式计算各个粒子在该次迭代的适应值:

其中,

fki表示第i个粒子在第k次迭代的适应值

xkij表示第i个粒子在第k次迭代的目标路段模型输出的第j条目标路段平均速度

x0j表示第j条目标路段的实际平均速度。

步骤4:更新每个粒子以及整个粒子群的最优适应值与最优位置:

若,fki≤fi则接受新的适应值:fi=fki,pi=aki;

否则拒绝新的适应值:fi=fi,pi=pi。

若minfi≤f,则更新全局最优适应值:f=minfi,g=minpi;

否则f=f,g=g。

其中,

minfi表示整个粒子群当前最小适应值

minpi表示最小适应值对应的粒子位置

步骤5:更新每个粒子的位置与速度:

粒子根据下面的公式更新每次迭代的位置与速度:

a(k+1)i=aki+vki

v(k+1)i=ρkvki+c1r1(pi-a(k+1)i)+c2r2(g-a(k+1)i)

其中,

a(k+1)i表示下一次迭代第i个粒子的位置

v(k+1)i表示下一次迭代第i个粒子的速度

ρkvki表示第k次迭代第i个粒子的速度与本次迭代的惯性系数乘积。

c1r1表示学习因子1与一个0到1的随机数的乘积

c2r2表示学习因子2与一个0到1的随机数的乘积

步骤6:停止条件:

若k<n且minfi≠maxfi,那么令k=k+1,返回步骤2。否则,停止,输出当前全局最优适应值与对应的最优位置;

其中,

maxfi表示整个粒子群当前最大适应值,n表示根据工程实际需要预先设定的最大迭代次数。

优选例2:

考虑到微观交通仿真软件在实际应用过程中,需要标定相关参数以使得软件的输出结果更符合实际的交通情况。考虑到实际项目中对效率有较高要求,因此提出一种相对于传统的仿真软件+遗传算法的方法效率更高的神经网络+粒子群算法的方法。

第一步:筛选出待标定参数并确定其取值范围,具体步骤如下:

(1)依据待仿真路段的实际情况在微观交通仿真软件中建立仿真路网模型;

(2)由于随机种子每次仿真的取值都不同,相同的仿真设置输出结果一般不同,将所有参数都取默认值连续仿真10次,得到的某条目标路段的流量、速度最大值与最小值之差分别记为δq与δu;

其中,

△q表示改变随机种子后,选取的某条目标路段的软件输出流量最大值与最小值之差;

△u表示改变随机种子后,选取的某条目标路段的软件输出速度最大值与最小值之差

(3)分别将待检测的n个参数取软件建议取值范围的最大值与最小值,保持其他参数取值为默认值不变,得到的同一条路段的流量、速度最大值与最小值之差分别记为δq1,…,δqn与δu1,…,δun;

(4)比较δq1,…,δqn与δq,δu1,…,δun与δu,如果更改参数流量或速度的变化大于随机种子变化的影响,那么对应的参数影响较显著。

第二步:训练出人工神经网络以拟合待标定参数与软件输出结果的函数,具体步骤如下:

(1)使用建立好的仿真路网模型采集训练用数据集。在参数的取值范围内随机生成若干组参数(数量不宜过少,建议400组以上),每组参数分别输入仿真软件仿真5次取平均结果以降低随机种子对输出结果的影响,记录每组参数以及其对应的输出结果作为训练用数据集;

(2)将训练用数据集按一定比例(如8:1:1)分为训练集,验证集,测试集。训练集用于拟合得到函数关系,验证集用于验证训练好的模型以确保不过拟合以及挑选效果最好的模型,测试集则用于测试最后的模型性能。

(3)使用传统的误差逆传播(errorbackpropagation,bp)算法训练模型,bp算法具体步骤如下:

步骤1:网络初始化:给网络中各连接权重值分别赋一个区间(-1,1)内的随机数,设定误差函数,给定收敛条件:误差收敛值与最大学习次数;

步骤2:在训练集中随机选取k个输入样本以及对应的期望输出;

步骤3:根据选取的激活函数计算隐含层个神经元的输入和输出;

步骤4:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数;

步骤5:利用隐含层到输出层的连接权值,误差函数对输出层的偏导数和隐含层的输出计算误差函数对隐含层神经元的偏导数,逐层向前计算直到得到误差函数对所有神经元的偏导数;

步骤6:利用步骤5中各神经元计算的偏导数和上一层各神经元的输出来修正连接权值;

步骤7:使用验证集的数据计算全局误差,即网络实际输出与期望输出的平均平方误差;

步骤8:判断网络误差是否满足要求。当误差达到预设的收敛精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到步骤3,进入下一轮学习。

(4)运用(3)中的方法,调整不同神经网络参数,训练多个模型,根据最终验证集的全局误差,选出最优模型;

(5)将最优模型用测试集的数据测试其性能,性能达到要求则训练结束。

第三步:将训练好的神经网络模型代入粒子群算法进行计算,具体步骤如下:

(1)在α维线性空间中(α为待标定参数个数),随机确定若干个粒子(由用户指定,建议大于等于10),每个粒子的位置代表一组参数的取值;

(2)将各组粒子对应的参数值分别输入训练好的神经网络模型中,得到各粒子的输出值;

(3)参照目标路段的选取指标实际值(如实际平均速度),根据第5部分式(1)适应度函数确定每个粒子的适应值,并确定每个粒子目前的最优适应值与最优位置,以及整个粒子群的最优适应值与最优位置;

(4)若达到停止条件(最优适应值足够小),则输出最优位置,否则根据第5部分式(2)、(3)更新粒子的速度与位置,返回到(2)。

优选例3:

以下面具体的实施例来说明该方法可以有效地标定微观交通仿真软件的参数。实施例采用图2所示的2公里长的路网(上海市南北高架路的一段)建立仿真模型,其中黄色部分为三条目标路段,评价指标为路段车辆的平均速度。微观交通仿真软件选用transmodeler。为简单起见而不影响说明方法的效果,同时考虑到各个参数对目标路段的影响大小不同,实施例只标定一种驾驶员跟车模型的6个参数。经测试(如第一步),上述6个参数影响显著且目标参数值落在建议取值范围内。

仿真采用的流量数据采用2018年3月28日早9:00-10:00南北高架对应路段的交通数据。相关路段高架路上没有交通信号控制,地面道路以及某些匝道的信号配时信息也同时采集得到。

参数对应的跟车模型具体形式如式5所示,其中a+,b+,c+(用于计算加速车辆加速度),a-,b-,c-(用于计算减速车辆加速度)为待标定参数:

其中,

vib±[t]表示该车当前速度的b±次方(+为该车加速时,-为减速时)

dc±i,i-1[t]表示该车与前车当前距离的c±次方(+为该车加速时,-为减速时)

跟车模型各变量代表的含义如表1所示。

然后在取值范围内随机生成460组参数的值,分别输入路网模型进行仿真,每组参数仿真5次,取5次仿真各个目标路段平均速度的平均值作为参数的期望输出。将得到的460组数据集以8:1:1的比例分为训练集,验证集,测试集,按照第二步的方法,训练出神经网络模型用来拟合输入参数与输出的函数关系。其中,隐含层的层数为4,每个隐含层的神经元数为25,每个隐含层的随机丢弃正则项为0.2以避免过拟合。

最后将训练好的神经网络模型代入pso算法,按照第三步的方法,得到标定好的参数值。其中粒子个数为100,最大迭代轮数为200。最终得到的参数值分别为4.99、-0.67、-2.99、-0.34、-2.89、-2.96。将标定好的参数代入仿真软件中,软件输出的三条路段的平均速度分别为50.6km/h、4.5km/h、52.3km/h,目标路段的实际平均速度为48.67km/h、6.74km/h、51.17km/h,若采用默认参数不进行标定,软件输出的三条路段的平均速度分别为50.8km/h、0.8km/h、49.7km/h,标定后软件的平均平方误差由13.99降低为3.34。

综上,采用上述标定方法,能够有效地提高微观交通仿真软件的精度,进而辅助交通工程师进行交通评价、分析等工作。

表1跟车模型变量含义

在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1