一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于SSA-D3QN的盐场结晶计算方法、系统、设备及介质

2022-06-05 03:19:57 来源:中国专利 TAG:

基于ssa-d3qn的盐场结晶计算方法、系统、设备及介质
技术领域
1.本发明属于电子信息技术领域,涉及一种基于ssa-d3qn的盐场结晶计算方法、系统、设备及介质。


背景技术:

2.盐场的晒盐生产是利用盐田滩晒的方法,将卤水逐级浓缩到饱和浓度并析出海盐的过程。这个过程主要利用太阳辐照和风的作用进行水分蒸发,所以在盐场盐田建设光伏项目,则势必对盐场的晒盐产量造成影响,“盐光一体”项目必须考虑对盐场的产量损失提供经济补偿,而补偿的金额会直接影响到项目的经济性,因此定量评估此类项目中光伏项目对晒盐产量影响幅度是必不可少的,在项目开发的过程中才能合理掌控谈判的边界。在对结晶模型进行计算的过程中,结晶模型需要实现正反算功能,即可以根据海水初浓度、各级盐田浓度等设计出各级盐田,包括蒸发池,结晶池;也可根据已知的各级盐田面积等,计算出各级卤水浓度,并给出改进后最佳蒸结比。简单来说,可以归结为正向计算和反向计算,其中正向计算所需要的参数为海水初浓度、各级盐田浓度等数据,输出的结果为各级蒸发及结晶池的面积大小,反向计算则相反,需要根据目前盐场的现有的蒸发结晶池的面积大小以及海水出浓度来计算出最合适的各级盐田浓度。
3.现有计算方式通常为利用遗传算法或者遗传算法相关的搜索算法,如粒子群,蝴蝶算法,人工蜂群算法,萤火虫算法,烟花算法等。在具体实现过程中,发现现有遗传算法会出现耗时长,占用空间大,误差偏大,甚至无法收敛至要求精度等问题,而麻雀搜索算法(ssa)的精度可以满足要求,但是时间复杂度过高,现亟需一种能够满足结晶模型反向计算的精度且用时短的方法。


技术实现要素:

4.本发明的目的在于解决现有技术中的问题,提供一种基于ssa-d3qn的盐场结晶计算方法、系统、设备及介质,利用麻雀搜索算法ssa和深度强化学习算法d3qn协同解决盐场结晶模型反向计算问题,能够满足结晶模型的精度,并且缩短计算时间,提高计算效率。
5.为达到上述目的,本发明采用以下技术方案予以实现:
6.基于ssa-d3qn的盐场结晶计算方法,包括:
7.步骤1:初始化ssa种群以及d3qn网络参数;
8.步骤2:对ssa种群位置进行更新,筛选出最优浓度个体;
9.步骤3:判断所筛选出的个体是否达到精度要求,若是,进行步骤4;若否,重复步骤2,直至所筛选出的个体满足精度要求;
10.步骤4:将最优浓度个体作为agent进行训练,并将经验存储至优先经验回访池priority replay buffer中;
11.步骤5:从优先经验回访池priority replay buffer中抽取样本对d3qn网络进行训练;
12.步骤6:对整体模型进行若干次测试,获取若干次测试中的最小值和平均值;
13.步骤7:判断所获取的最小值和平均值是否满足误差要求,若是,则训练完成;若否,则重复步骤1到步骤6,直到满足误差要求。
14.本发明的进一步改进在于:
15.ssa种群为一个n*d的矩阵,其中,n为种群数量,d为浓度向量长度,n为蒸发结晶池数目减1,ssa种群的参数为:ts为迭代次数,s
t
为发现者警戒阈值,pr为发现者比例,sd为侦察者比例;
16.d3qn网络参数包括:t为d3qn迭代轮数,γ为衰减因子,∈为探索率,c为目标q网络参数更新频率,s为sumtree的叶子节点数,β为采样权重系数,m为批量梯度下降的样本数,n为测试迭代轮数。
17.对ssa种群位置进行更新,筛选出最优浓度个体,具体为:
18.对ssa种群中的每一个个体进行计算,获取适应度fitness,将种群划分为发现者和跟随者,其中发现者占比为pr;
19.更新发现者的位置,随机初始化一个取值范围为0到1的数r2,按照公式(1)更新发现者的位置,
[0020][0021]
其中,q为服从正态分布的随机数,l是一个长度为d的全1向量,l=[1,1,...]
1*d

[0022]
更新跟随者的位置,跟随者会监控适应度最好的发现者来寻找食物,其位置更新如公式(2)所示:
[0023][0024]
其中,为第t代种群中的最差位置,为第t 1代种群中生产者的最佳位置,a

=a
t
(aa
t
)-1
,a是一个大小为1*d的矩阵,其中元素在(1,-1}中随机选取;
[0025]
每代随机选择侦察者,比例为sd,发现者和跟随者都有几率成为侦察者,更新侦察者的位置,其位置更新如公式(3)所示:
[0026][0027]
其中,fi表示当前个体适应度,fg和fw表示最优和最差适应度;ε为一个非零的极小值。
[0028]
步骤3具体为:
[0029]
判断t 1代种群中最优个体的loss是否满足进行强化学习训练的阈值,若满足,则将其记为φ(s)进行步骤4,否则循环进行步骤2。
[0030]
将最优浓度个体作为agent进行训练,并将经验存储至优先经验回访池priority replay buffer中,具体为:
[0031]
在q网络中使用φ(s)作为输入,输入的φ(s)即为agent本身,得到q网络对应的q值输出,其中输入维度为d,输出为度为d/2,采用∈-贪婪法选择当前s下对应的动作a;
[0032]
根据动作a计算对应的agent向量位置,增加一个步长τ,得到新的特征向量φ(s

),进行计算得到奖励r,判断如果误差小于最终阈值,则将is_end标记为true,否则标记为false;
[0033]
若is_end的值为true,则表示训练已经达到目标,即可退出训练,最终输出浓度结果为φ(s

);若is_end的值为false,则继续训练;
[0034]
将{φ(s),a,r,φ(s

),is_end}五元组存入经验回放sumtree中。
[0035]
采用差值计算进行奖励r的计算,即分别计算φ(s

)和φ(s)的loss,记其差值与系数δ的乘积为奖励r,如果q网络输出的操作使得loss变大,则奖励r为负数,如果q网络输出的操作使得loss变小,则奖励r为正数。
[0036]
从优先经验回访池priority replay buffer中抽取样本对d3qn网络进行训练,具体为:
[0037]
判断优先经验回访池priority replay buffer样本数量是否超过minibatch的大小,若否,则φ(s)=φ(s

);若是,则从优先经验回访池priority replay buffer中采样m个样本,其中每个样本被采样的概率基于损失函数权重计算当前目标q值yj,minibatch是每次进行随机梯度下降时所需要的数据集;
[0038]
使用均方差损失函数通过反向传播来更新参数w;
[0039]
重新计算所有样本误差δj=y
j-q(φ(sj),aj,w),更新经验回放池中所有节点的优先级为pj=|δj|;
[0040]
若当前迭代轮回数t%c==0,则更新目标q参数w

=w。
[0041]
基于ssa-d3qn的盐场结晶计算系统,包括:
[0042]
初始化模块,所述初始化模块用于初始化ssa种群以及d3qn网络参数;
[0043]
更新模块,所述更新模块用于对ssa种群位置进行更新,筛选出最优浓度个体;
[0044]
第一判断模块,所述第一判断模块用于判断所筛选出的个体是否达到精度要求,直至所筛选出的个体满足精度要求;
[0045]
第一训练模块,所述第一训练模块用于将最优浓度个体作为agent进行训练,并将经验存储至优先经验回访池priority replay buffer中;
[0046]
第二训练模块,所述第二训练模块用于从优先经验回访池priority replay buffer中抽取样本对d3qn网络进行训练;
[0047]
测试模块,所述测试模块用于对整体模型进行若干次测试,获取若干次测试中的最小值和平均值;
[0048]
第二判断模块,所述第二判断模块用于判断所获取的最小值和平均值是否满足误差要求,直到满足误差要求。
[0049]
一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0050]
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0051]
与现有技术相比,本发明具有以下有益效果:
[0052]
本发明针对单纯d3qn收敛速度慢的问题,采用ssa作为预先计算步骤,使得d3qn的输入值误差变小,加快收敛速度。针对耗时长的问题,采用了经验回放,并且采用prioritized replay dqn,设置了经验存储的优先级,使得算法更容易收敛。针对一般的dqn算法在目标q值计算和更新q网络参数之间的强依赖关系导致的算法收敛慢,采用doubledqn,解耦目标q值动作的选择和目标q值的计算,加快收敛速度,并且减轻过度估计。
附图说明
[0053]
为了更清楚的说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0054]
图1为结晶模块调用流程图;
[0055]
图2为本发明的基于ssa-d3qn的盐场结晶计算方法流程图;
[0056]
图3为麻雀搜索算法ssa流程图;
[0057]
图4为d3qn算法流程图;
[0058]
图5为全连接网络结构图;
[0059]
图6为遗传算法和ssa-d3qn的运算结果对比图;
[0060]
图7为本发明的基于ssa-d3qn的盐场结晶计算系统结构图。
具体实施方式
[0061]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0062]
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0064]
在本发明实施例的描述中,需要说明的是,若出现术语“上”、“下”、“水平”、“内”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0065]
此外,若出现术语“水平”,并不表示要求部件绝对水平,而是可以稍微倾斜。如“水
平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
[0066]
在本发明实施例的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0067]
下面结合附图对本发明做进一步详细描述:
[0068]
参见图1,本发明公开了一种结晶模块调用流程图,具体为:客户通过桌面客户端进行调用,调用过程会传入参数,参数包括大面积蒸发系数,光伏遮盖全年蒸发量,全年蒸发量,全年总降水量,空气湿度,生产期作业天数,换卤周期,蒸发区保卤系数,设计步数,第一步蒸发池面积,海水初浓度,蒸发终浓度,结晶终浓度,结晶区排淡率,结晶区步数,收盐周期。
[0069]
结晶模块计算引擎响应用户调用,进行计算,如果是初次调用,或者参数有变动,会进行网络训练,训练完成后再进行计算,计算完成后返回结果。
[0070]
结晶模块计算引擎的计算问题是一个最优化问题,业界解决方案通常为传统遗传算法,但经过实验,单纯遗传算法在本问题的解决中会存在耗时长,占用空间大,误差偏大等问题,故而考虑采用智能优化算法,其中麻雀搜索算法ssa较为新颖且性能出众,但ssa容易陷入局部最优,经过实验采用d3qn可以有效增加ssa计算效率,并且ssa可以为强化学习的训练提供一个良好的初始环境。
[0071]
在接受到用户调用之后,计算引擎会收到一系列参数,之后根据海水初始浓度和终浓度以及蒸发及结晶池数量来进行计算。参见图2,本发明公布了一种基于ssa-d3qn的盐场结晶计算方法,包括:
[0072]
s101:初始化ssa种群以及d3qn网络参数;
[0073]
参见图3,ssa种群为一个n*d的矩阵,其中,n为种群数量,d为浓度向量长度,n为蒸发结晶池数目减1,ssa种群的参数为:ts为迭代次数,s
t
为发现者警戒阈值,pr为发现者比例,sd为侦察者比例;
[0074]
d3qn网络参数包括:t为d3qn迭代轮数,γ为衰减因子,∈为探索率,c为目标q网络参数更新频率,s为sumtree的叶子节点数,β为采样权重系数,m为批量梯度下降的样本数,n为测试迭代轮数。
[0075]
s102:对ssa种群位置进行更新,筛选出最优浓度个体;
[0076]
对ssa种群中的每一个个体进行计算,获取适应度fitness,将种群划分为发现者和跟随者,其中发现者占比为pr;
[0077]
更新发现者的位置,随机初始化一个取值范围为0到1的数r2,按照公式(1)更新发现者的位置,
[0078][0079]
其中,q为服从正态分布的随机数,l是一个长度为d的全1向量,l=[1,1,...]
1*d

[0080]
更新跟随者的位置,跟随者会监控适应度最好的发现者来寻找食物,其位置更新如公式(2)所示:
[0081][0082]
其中,为第t代种群中的最差位置,为第t 1代种群中生产者的最佳位置,a

=a
t
(aa
t
)-1
,a是一个大小为1*d的矩阵,其中元素在{1,-1}中随机选取;
[0083]
每代随机选择侦察者,比例为sd,发现者和跟随者都有几率成为侦察者,更新侦察者的位置,其位置更新如公式(3)所示:
[0084][0085]
其中,fi表示当前个体适应度,fg和fw表示最优和最差适应度;ε为一个非零的极小值。
[0086]
s103:判断所筛选出的个体是否达到精度要求,若是,进行s104;若否,重复s102,直至所筛选出的个体满足精度要求。
[0087]
判断t 1代种群中最优个体的loss是否满足进行强化学习训练的阈值,若满足,则将其记为φ(s)进行s104,否则循环进行s102。
[0088]
由于池子之间有先后顺序,前面的池子面积一定大于后面的池子,同理前面池子的浓度一定小于后面池子的浓度,所以可以在初始化的时候将浓度部分提取出一个基础向量,即d3qn的输入为一个偏移向量,这样在进行网络训练的时候会加快收敛速度。
[0089]
s104:将最优浓度个体作为agent进行训练,并将经验存储至优先经验回访池priority replay buffer中。
[0090]
参见图4,在q网络中使用φ(s)作为输入,输入的φ(s)即为agent本身,得到q网络对应的q值输出,其中输入维度为d,输出为度为d/2,采用∈-贪婪法选择当前s下对应的动作a;
[0091]
根据动作a计算对应的agent向量位置,增加一个步长τ,得到新的特征向量φ(s

),进行计算得到奖励r,判断如果误差小于最终阈值,则将is_end标记为true,否则标记为false;
[0092]
若is_end的值为true,则表示训练已经达到目标,即可退出训练,最终输出浓度结果为φ(s

);若is_end的值为false,则继续训练;
[0093]
将{φ(s),a,r,φ(s

),is_end}五元组存入经验回放sumtree中。
[0094]
其中,采用差值计算进行奖励r的计算,即分别计算φ(s

)和φ(s)的loss,记其差值与系数δ的乘积为奖励r,如果q网络输出的操作使得loss变大,则奖励r为负数,如果q网络输出的操作使得loss变小,则奖励r为正数。
[0095]
s105:从优先经验回访池priority replay buffer中抽取样本对d3qn网络进行训练;
[0096]
判断优先经验回访池priority replay buffer样本数量是否超过minibatch的大
小,若否,则φ(s)=φ(s

);若是,则从优先经验回访池priority replay buffer中采样m个样本,其中每个样本被采样的概率基于损失函数权重计算当前目标q值yj,minibatch是每次进行随机梯度下降时所需要的数据集;
[0097]
使用均方差损失函数通过反向传播来更新参数w;
[0098]
重新计算所有样本误差δj=y
j-q(φ(sj),aj,w),更新经验回放池中所有节点的优先级为pj=|δj|;
[0099]
若当前迭代轮回数t%c==0,则更新目标q参数w

=w。
[0100]
s106:对整体模型进行若干次测试,获取若干次测试中的最小值和平均值;
[0101]
将若干次测试所获取的结果进行求和,然后基于求和的结果得到测试的平均值;并且对比若干次测试结果的大小,在这些结果中找到最小的测试值。
[0102]
s107:判断所获取的最小值和平均值是否满足误差要求,若是,则训练完成;若否,则重复s101-106,直到满足误差要求。
[0103]
如果精度未达到要求,需要返回ssa进行下一轮循环,生成新的浓度向量个体,然后进行d3qn算法计算。
[0104]
本发明使用的网络为全连接网络,基本构造如图5所示,蒸发结晶池个数为7,n维的输入向量就是浓度值,在池子数量很多时,可以考虑增加中间隐藏层的数目,来达到更好的收敛效果。
[0105]
在执行1000轮后,业内常用遗传算法和dueling double dqn的运算结果如图6所示,训练好的网络在进行计算的时候,计算进行到400步的时候,ssa-d3qn的收敛性已经满足精度要求,并且之后趋于平稳,震荡趋势不明显。遗传算法则在900步左右达到最优值,loss值趋近2000左右,明显高于d3qn。经验证,遗传算法在运行2000步之后,有几率将loss降低至200,但是时间成本过高。而强化学习算法在模型训练成功之后,时间复杂度极低,时间消耗主要集中在模型训练。
[0106]
参见图7,本发明公布了一种基于ssa-d3qn的盐场结晶计算系统,包括:
[0107]
初始化模块,所述初始化模块用于初始化ssa种群以及d3qn网络参数;
[0108]
更新模块,所述更新模块用于对ssa种群位置进行更新,筛选出最优浓度个体;
[0109]
第一判断模块,所述第一判断模块用于判断所筛选出的个体是否达到精度要求,直至所筛选出的个体满足精度要求;
[0110]
第一训练模块,所述第一训练模块用于将最优浓度个体作为agent进行训练,并将经验存储至优先经验回访池priority replay buffer中;
[0111]
第二训练模块,所述第二训练模块用于从优先经验回访池priority replay buffer中抽取样本对d3qn网络进行训练;
[0112]
测试模块,所述测试模块用于对整体模型进行若干次测试,获取若干次测试中的最小值和平均值;
[0113]
第二判断模块,所述第二判断模块用于判断所获取的最小值和平均值是否满足误差要求,直到满足误差要求。
[0114]
本发明一实施例提供的终端设备。该实施例的终端设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
[0115]
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。
[0116]
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。
[0117]
所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
[0118]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。
[0119]
所述终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0120]
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献