一种基于遗传算法的辛烷值损失模型参数优化方法

文档序号:25286042发布日期:2021-06-01 17:35阅读:201来源:国知局
一种基于遗传算法的辛烷值损失模型参数优化方法

本发明属于对模型参数优化的遗传算法的技术领域,尤其涉及一种基于遗传算法的辛烷值损失模型参数优化方法。



背景技术:

汽油是小型汽车的主要燃料,汽油燃烧产生的尾气对大气环境有重要影响,所以汽油清洁化对保护环境有重要意义。汽油清洁化重点是降低汽油中的硫、烯烃含量,同时尽量保持其辛烷值。辛烷值(以ron表示)是反映汽油燃烧性能的最重要指标,并作为汽油的商品牌号(例如89#、92#、95#)。现有技术在对催化裂化汽油进行脱硫和降烯烃过程中,普遍降低了汽油辛烷值。辛烷值每降低1个单位,相当于损失约150元/吨。以一个100万吨/年催化裂化汽油精制装置为例,若能降低ron损失0.3个单位,其经济效益将达到四千五百万元。

在化工过程中一般通过建立辛烷值损失预测模型,然后对模型中的参数进行优化来降低辛烷值的损失。辛烷值损失预测模型的参数优化的是一个多参数优化问题,而且这些参数之间也具有高度非线性。常用的优化方法有梯度下降法、牛顿法等。但这些优化算法的效果却在本发明解决的问题中不尽人意:梯度下降法的目标函数是凸函数,通常情况下得到的解往往是局部最优值,而且优化速度也很慢;牛顿法在靠近极值时收敛速度减慢,优化过程可能会出现锯齿形下降。还有利用bp神经网络优化模型参数的方法,但神经网络对于超参数的调节是一个手动尝试的过程,费时费力,同时bp算法本质上也属于梯度下降,而问题中的模型参数又很复杂,因此必然会出现“锯齿形现象”,这使得优化过程十分低效。针对上述问题,有必要设计一种可以快速优化辛烷值损失预测模型参数的方法。

遗传算法是模拟自然界遗传选择与淘汰的生物进化计算模型,由于生物进化与某些问题的最优求解过程存在共通性,即都是在产生或寻找最优的个体(或者问题的解),这就产生了基于自然选择、基因重组、基因突变等遗传行为来模拟生物进化机制的算法,它最终发展成为一种随机全局搜索和优化的算法。遗传算法研究的对象是种群,即很多个体的集合,个体由染色体组成,染色体由基因编码组成。对于多目标优化问题,一个染色体代表一个优化目标,一组染色体代表一组解。当然,开始的时候,也许所有的解不是最优的,经过将这些解进行编码、选择、交叉、变异之后,逐代进化,从子代中可以找到求解问题的全局最优解。



技术实现要素:

基于以上现有技术的不足,本发明所解决的技术问题在于提供一种基于遗传算法的辛烷值损失模型参数优化方法,优化的模型是多目标优化问题,最终得到的解是一组解。

为了解决上述技术问题,本发明通过以下技术方案来实现:

本发明提供的基于遗传算法的辛烷值损失模型参数优化方法,包括以下步骤:

步骤s1:初始化种群参数。population_size种群大小,一般为300~500;chromosome_num染色体数,对应优化的目标个数;iter_num种群迭代次数,一般为200~500;pc交叉概率阈值(0<pc<1),一般取值0.4~0.99;pm变异概率阈值(0<pm<1),一般取值0.0001~0.1。

步骤s2:初始化种群population。种群由个体组成,个体由染色体组成,个体拥有的染色体数为chromosome_num,每条染色体可能的取值个数为population_size;染色体由基因组成,基因是二进制数,染色体长度chromosome_length等于基因的二进制数位数。种群初始化从每个个体的基因开始。每条染色体可能的取值数为population_size,即种群大小。每条染色体具体的长度由该染色体对应优化目标的取值范围决定。

步骤s3:计算种群每个个体的适应度。

步骤s4:对种群中的个体(染色体组)执行选择操作。个体适应度越大,选择该个体的概率就越大。

步骤s5:对种群中的个体进行交叉(交配)操作。

步骤s6:对种群的个体进行变异操作。由于每个个体的每条染色体都有可能发生变异,所以变异操作是对所有个体的所有染色体进行的。如果适应度在更新过程中发现更新缓慢,有可能是落入局部最优导致,此时可适当增大种群的变异概率阈值pm。

步骤s7:算法终止判断。如果满足条件(迭代次数,一般是200~500)则终止算法,输出最优适应度和对应参数。否则从步骤s3开始对种群进行下一轮更新。

进一步的,所述步骤s2的具体步骤为:

步骤s21:计算第i条染色体population[i]用二进制表示时实际所需要的长度chromosome_length[i],并把其中最大的长度记为max_cd;

上式中,mmi[i]表示第i条染色体的十进制取值下限,mma[i]表示第i条染色体的十进制取值上限;m为染色体的小数点精度。

步骤s22:按照从低位到高位的顺序对种群中每个个体的染色体进行二进制化,如果第i条染色体的长度chromosome_length[i]小于最大的染色体长度max_cd,用二进制初始化第i条染色体的chromosome_length[i]个低位,并用0填充max_cd-chromosome_length[i]个高位;否则直接初始化全部基因位。

需要说明的是,为了程序更容易实现且不影响其正确性,初始化时所有染色体的长度取了最大的染色体的长度max_cd,对于那些用二进制表示实际所需长度小于max_cd的染色体,初始化时低位正常初始化,高位用0补充。

接着用步骤s21,步骤s22初始化所有个体。

进一步的,所述步骤s3的具体步骤为:

步骤s31:将第i条染色体的每个取值解码为十进制,并转换到第i条染色体对应优化参数的十进制区间:

上式中,population_decimalism[i][j]表示第i个染色体第j个取值解码后的十进制数;value[i][j]表示第i条染色体第j个可能取值转换区间后的十进制取值;。

步骤s32:计算所有个体的适应度f:

f[j]=w*value[j]+b

f[j]为第j个个体的适应度,w为模型参数的权重参数,b为模型的偏置参。

步骤s33:最好适应度fitness_best的更新,如果f[j]大于种群当前最好的适应度fitness_best,说明第j组染色体的适应度更好,用f[j]替换种群当前的最优适应度fitness_best,并替换f[j]对应的第j组染色体的取值。

进一步的,所述步骤s4的具体步骤为:

步骤s41:首先计算出群体的适应度总和f=∑f[j];

步骤s42:其次计算出第j组染色体的选择概率

步骤s43:计算出第j组染色体的累积概率

步骤s44:再产生一个0到1之间的随机数r;

步骤s45:若r<q[1],选择第一组染色体;若q[j-1]<r<q[j],选择第j组染色体;

步骤s46:重复步骤s44、步骤s45共population_size次,随后将选择到的染色体组作为新种群,淘汰没选择到的染色体组,以此模拟自然选择过程。

进一步的,所述步骤s5的具体步骤为:

步骤s51:对群体中同一条染色体的不同取值进行随机两两配对;

步骤s52:产生0到1之间的随机数r[i],表示第i对染色体的交叉概率;

步骤s53:若r[i]>pc,表示第i对染色体会进行交叉;否则返回步骤s52计算下一对染色体的交叉概率;

步骤s54:产生随机的基因交叉位置;

步骤s55:在第j个基因位切断第i对染色体,并按照染色体长度保持不变的原则对第i对染色体进行部分基因交换,产生一对新个体;把新产生的个体加入群体,删除原先的第i对染色体,模拟种群中新旧个体的繁衍更新。

进一步的,所述步骤s6的具体步骤为:

步骤6.1:产生0到1之间的随机数r[i][j],表示第i个个体第j条染色体的变异概率。

步骤6.2:若r[i][j]>pm(pm代表群体的变异概率,0<pm<1),对第i个个体第j条染色体进行变异操作;否则返回步骤6.1计算下一条染色体的变异概率。

步骤6.3:产生[0,chromosome_length[i]]之间的随机数l,表示染色体变异的基因位点。注意此时l的范围不是[0,max_cd],而是[0,chromosome_length[i]]。因为变异时基因位点的选择是根据染色体用二进制表示所需的长度来随机选择,这样染色体代表的参数才不会超出取值范围。

步骤6.4:对第i条染色体第j个取值的第l个基因位点进行取反操作。将变异的个体加入群体,并删除原先的染色体。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下结合优选实施例,并配合附图,详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍。

图1为遗传算法优化装置界面图;

图2为种群population结构图;

图3为长度为max_cd的染色体结构图;

图4位长度为chromosome_length的染色体结构图;

图5为适应度f[j]的计算过程图;

图6为优化步骤流程图。

图7为选择操作流程图;

图8为交叉操作流程图;

图9为变异操作流程图;

图10为适应度fitness的更新变化图。

具体实施方式

下面结合附图详细说明本发明的具体实施方式,其作为本说明书的一部分,通过实施例来说明本发明的原理,本发明的其他方面、特征及其优点通过该详细说明将会变得一目了然。在所参照的附图中,不同的图中相同或相似的部件使用相同的附图标号来表示。

本发明优化的模型参数是汽油辛烷值损失预测模型的参数,原始数据采集来自于中石化高桥石化实时数据库(霍尼韦尔phd)及lims实验数据库。其中操作变量数据来自于实时数据库,采集时间为2017年4月至2020年5月,采集操作位点数共354个。2017年4月至2019年9月,数据采集频次为3分钟/次;2019年10月至2020年5月,数据采集频次为6分钟/次。原料、产品和催化剂数据来自于lims实验数据库,数据时间范围为2017年4月至2020年5月。

由于原始数据中虽然大部分变量数据正常,但每套装置的数据均有部分位点存在问题,所以我们对数据中的异常值进行了以下处理:

1、对于部分数据为空值的位点,空值处用其前后两个小时数据的平均值代替;

2、根据拉依达准则(3σ准则)去除异常值。

3σ准则:设对被测量变量进行等精度测量,得到x1,x2,……,xn,算出其算术平均值x及剩余误差vi=xi-x(i=1,2,...,n),并按贝塞尔公式算出标准误差σ,若某个测量值xb的剩余误差vb(1<=b<=n),满足|vb|=|xb-x|>3σ,则认为xb是含有粗大误差值的坏值,应予剔除。贝塞尔公式如下:

原料性质和产品性质都不属于操作变量,所以我们用处理之后的数据计算354个操作变量中与原料辛烷值和产品辛烷值的皮尔逊相关系数(皮尔逊相关系数低则代表该变量与原料辛烷值相关度高),选取了15个两次皮尔逊相关系数都低的操作变量,再利用多元线性回归进行建模得到辛烷值损失预测模型,拿出15个操作变量的权重参数和偏置参数,接着我们用本发明提供的方法对这15个主要操作变量进行优化。

表1:建模所用的数据信息(处理后)

如图1至图10所示,本发明的基于遗传算法的辛烷值损失模型参数优化方法的步骤如下:

步骤s1:初始化种群参数。population_size种群大小,一般为300~500;chromosome_num染色体数,对应优化的目标个数;iter_num种群迭代次数,一般为200~500;pc交叉概率阈值(0<pc<1),一般取值0.4~0.99;pm变异概率阈值(0<pm<1),一般取值0.0001~0.1。

表2:种群变量及说明

步骤2:初始化种群population。种群由个体组成,个体由染色体组成,个体拥有的染色体数为chromosome_num,每条染色体可能的取值个数为population_size;染色体由基因组成,基因是二进制数,染色体长度chromosome_length等于基因的二进制数位数,我们对种群进行的选择、交叉和变异操作都是在基因上进行的。种群初始化从每个个体的基因开始。本发明优化的模型中有15个优化目标,所以每个个体都需要初始化15条染色体,每条染色体可能的取值数为population_size,即种群大小。每条染色体具体的长度由该染色体对应优化目标的取值范围决定。初始化具体步骤如下:

步骤2.1:计算第i条染色体population[i]用二进制表示时实际所需要的长度chromosome_length[i],并把其中最大的长度记为max_cd。

上式中,mmi[i]表示第i条染色体的十进制取值下限,mma[i]表示第i条染步骤s22:按照从低位到高位的顺序对种群中每个个体的染色体进行二进制化,如果第i条染色体的长度chromosome_length[i]小于最大的染色体长度max_cd,用二进制初始化第i条染色体的chromosome_length[i]个低位,并用0填充max_cd-chromosome_length[i]个高位;否则直接初始化全部基因位。

需要说明的是,为了程序更容易实现且不影响其正确性,初始化时所有染色体的长度取了最大的染色体的长度max_cd,对于那些用二进制表示实际所需长度小于max_cd的染色体,初始化时低位正常初始化,高位用0补充。用步骤s21,步骤s22初始化所有个体。

图2和图3分别表示长度为max_cd和chromosome_length(chromosome_length<max_cd)的染色体结构。

步骤3:计算种群每个个体的适应度。计算过程如图4所示,具体过程如下:

步骤s31:将第i条染色体的每个取值解码为十进制,并转换到第i条染色体对应优化参数的十进制区间:

上式中,population_decimalism[i][j]表示第i个染色体第j个取值解码后的十进制数;value[i][j]表示第i条染色体第j个可能取值转换区间后的十进制取值;。

步骤s32:计算所有个体的适应度f:

f[j]=w*value[j]+b

f[j]为第j个个体的适应度,w为模型参数的权重参数,b为模型的偏置参。

步骤s33:最好适应度fitness_best的更新,如果f[j]大于种群当前最好的适应度fitness_best,说明第j组染色体的适应度更好,用f[j]替换种群当前的最优适应度fitness_best,并替换f[j]对应的第j组染色体的取值。

步骤4:对种群中的个体(染色体组)执行选择操作。个体适应度越大,选择该个体的概率就越大。本发明中采用轮盘赌的方式进行选择,图5表示选择操作的流程图。选择操作具体实现如下:

步骤s41:首先计算出群体的适应度总和f=∑f[j];

步骤s42:其次计算出第j组染色体的选择概率

步骤s43:计算出第j组染色体的累积概率

步骤s44:再产生一个0到1之间的随机数r;

步骤s45:若r<q[1],选择第一组染色体;若q[j-1]<r<q[j],选择第j组染色体;

步骤s46:重复步骤s44、步骤s45共population_size次,随后将选择到的染色体组作为新种群,淘汰没选择到的染色体组,以此模拟自然选择过程。

步骤5:对种群中的个体进行交叉(交配)操作,流程图如图6所示。具体执行步骤如下:

步骤s51:对群体中同一条染色体的不同取值进行随机两两配对;

步骤s52:产生0到1之间的随机数r[i],表示第i对染色体的交叉概率;

步骤s53:若r[i]>pc,表示第i对染色体会进行交叉;否则返回步骤s52计算下一对染色体的交叉概率;

步骤s54:产生随机的基因交叉位置;

步骤s55:在第j个基因位切断第i对染色体,并按照染色体长度保持不变的原则对第i对染色体进行部分基因交换,产生一对新个体;把新产生的个体加入群体,删除原先的第i对染色体,模拟种群中新旧个体的繁衍更新。

步骤6:对种群的个体进行变异操作。每个个体的每条染色体都有可能发生变异,所以变异操作是对所有个体的所有染色体进行的。如果适应度在更新过程中发现更新缓慢,有可能是落入局部最优导致,此时可适当增大种群的变异概率阈值pm。图7为变异操作的流程图。具体执行步骤如下:

步骤6.1:产生0到1之间的随机数r[i][j],表示第i个个体第j条染色体的变异概率。

步骤6.2:若r[i][j]>pm(pm代表群体的变异概率,0<pm<1),对第i个个体第j条染色体进行变异操作;否则返回步骤6.1计算下一条染色体的变异概率。

步骤6.3:产生[0,chromosome_length[i]]之间的随机数l,表示染色体变异的基因位点。注意此时l的范围不是[0,max_cd],而是[0,chromosome_length[i]]。因为变异时基因位点的选择是根据染色体用二进制表示所需的长度来随机选择,这样染色体代表的参数才不会超出取值范围。

步骤6.4:对第i条染色体第j个取值的第l个基因位点进行取反操作。将变异的个体加入群体,并删除原先的染色体。

步骤7:算法终止判断。种群进行一次上面的所有步骤算做种群的一次迭代更新,此时如果达到迭代次数(一般是200~500)则终止算法,输出当前最优适应度和对应参数。否则从步骤3开始对种群进行下一轮更新。

以上所述是本发明的优选实施方式而已,当然不能以此来限定本发明之权利范围,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变动,这些改进和变动也视为本发明的保护范围。

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