一种高维化工数据共轭粒子群算法处理方法与流程

文档序号:16856240发布日期:2019-02-12 23:20阅读:290来源:国知局
一种高维化工数据共轭粒子群算法处理方法与流程

本发明属于化工数据处理技术领域,尤其涉及一种高维化工数据共轭粒子群算法处理方法。



背景技术:

化学反应的速率通常与反应物的浓度、压力、温度以及所用的催化剂等有关,建立反应速率模型,进而可用于预测与优化,亦可用于深入研究化学反应的内涵。建模可从机理出发;也可基于实验数据,先依据机理导出模型的函数形式,其中尚有的待定参数,以样本数据为基础进行估计,这种半机理半经验的模型往往是较好的选择。化工问题得到的样本数据多为高维数据,从而依据样本数据进行参数估计就为高维函数的优化问题。粒子群算法对维数较低的目标函数能取得良好的效果,而当目标函数的维数较高时则效果不如意。

综上所述,现有技术存在的问题是:化工数据多为高维数据,而粒子群算法对求解高维优化问题易陷局部极值。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种高维化工数据共轭粒子群算法处理方法。

本发明是这样实现的,一种高维化工数据共轭粒子群算法处理方法包括以下步骤:

步骤一,粒子群算法迭代了一定步数而陷入局部极值并得局部最优解x*时,以x*为初值,用共轭方向法对其求解;

步骤二,利用粒子群算法对低维优化问题的有效性,将得新的更优的当前最优解x**,从而使算法跳出局部极值;

步骤三,在新极值的条件下,又用粒子群算法对原问题求解,如此反复直至结束。

进一步,所述基本粒子群算法及其数学分析为:

设优化问题表述为:

(1)基本粒子群算法(pso):

粒子群算法(pso)[1~3]是对鸟群等群体生物行为的仿生,称每个生物个体为粒子,pso将由一组粒子在n维空间中搜索最优解,每个粒子所处的位置表示一解向量,作为智能体它能记住自身搜索到的最优解,并获取全粒子群所经历过的最优解,由此指导其移动,逐步迭代寻得最优解。

记第i个粒子在第j代时的位置为xi(j),它本身和全粒子群所搜索到的最优解分别为pid(j)和pgd(j),它的移动速度矢量为vi(j),则在第j+1代时第i个粒子将移至:

vi(j+1)=ωφ1vi(j)+η1φ2(pid(j)-xi(j))+η2φ3(pga(j)-xi(j))(2)

xi(j+1)=xi(j)+vi(j+1)(3)

其中:ω,η1,η2均为取值于[0,1]中的控制参数,其对算法性能有重要影响但很难确定适当的值,φ1,φ2,φ3是[0,1]区间的随机数;同时不同的邻域结构对于算法效率和收敛速度的影响。

该算法概念简单,易于实现,因而得到很快发展,迅速得到了国际演化计算研究领域的认可,并在工程中得到广泛应用,但算法有存在易陷局部极值的不足,特别是对高维优化函数更是如此;为此有不少关于该算法改进策略的提出;主要的改进有:①改进控制参数;②对粒子状态变量重新赋值;③与其它进化算法结合;④使用新的位置或速度更新等式;⑤新的群体组织形式等。

(2)粒子群算法的数学分析

对于粒子群算法:①若算法只有一个粒子且不含1,把(2)式代入(3)式得:

xi(j+1)=xi(j)+(η1φ1+η2φ2)(pid(j)-xi(j));

从这个角度看,粒子群算法是爬山算法的一种推广,每次都朝最优方向前进;②从整个算法看,它可以看作以方向pid(j)-xi(j)与方向pgd(j)-xi(j)的加权作为搜索方向;pgd起引领作用,每个粒子在各自的某一范围内进行搜索;一般初始粒子是均匀分布在整个搜索域内,所以对目标函数不是很高时一般能得到问题的最优解。而当目标函数的维数较高时,若算法一旦陷入局部极值,由于各维变量之间的相互制约,并且若在几步中不变,例如第1步与第2步不变,即pid(1)=pid(2),则:

xi(2)=xi(1)+(η1φ1+η2φ2)(pid(1)-xi(1))

xi(3)=xi(2)+(η1φ1+η2φ2)(pid(1)-xi(2))=xi(1)+k(pid(1)-xi(1));

其中:k=2(η1φ1+η2φ2)-(η1φ1+η2φ2)2,从这可看出,在pia(j)不变的情况下,算法的搜索方向也是不变的,从而pgd将很难有所改进,因此仅靠算法自身是很难跳出局部极值的。对含有ωφ1vi(j)项,情况也类似。为此对高维优化函数,算法易陷局部极值,只有引入新的机制,使之迅速跳出局部极值。才能最终获得更满意的解。

进一步,所述共轭方向法为:

共轭方向法是早在1964年由powell提出的,对(1)式的问题,该方法的基本步骤是:

步骤201,任选一点a作为起始位置,沿第一个坐标轴作一维优化,得到b点。在这一步只需1次一维寻优;

步骤202,对个坐标逐个进行一轮一维优化,每次都从前一次得到的一维极值点出发,这样经过次一维优化得到c点,b和c的连线是这一轮结果得到的一个共轭方向,将取代第一个坐标方向并在方向作一次一维优化。在这一步需要n+1次寻优;

步骤203,每进行一轮一维优化都将得到一个共轭方向,可用以取代一个原先采用的坐标方向;

步骤204,经过1轮一维优化,结果得到d点,总共需作一维优化次数是:1+(n+1)(n-1)=n2

共轭方向法的性质是:如果式(1)的优化函数是二次函数,d点就是维空间中的最优点;如果不是二次函数,则d点比a点更接近最优点,可以由d点开始继续寻优。

进一步,所述共轭方向粒子群算法为:

(1)共轭方向粒子群算法(cdpso)

共轭方向法保证通过一次运算后所得到的点优于原来的初始点,初始点选得越好,则得到的点越好,算法越快收敛到全局最优点,可在优化运算中初值难选取,一般是随机选取,这使算法要收敛到最优点必须经过长时间的运算。粒子群算法是随机算法,算法的初始点(粒子)是任取的,算法是类似于爬山算法,初始点不只一个,各点之间相互协作,所以算法在开始阶段目标函数值下降很快,到一定程度后目标值下降速度越来越慢,最终可能陷入局部极值,特别对高维优化函数更是如此,根据上面的分析,这时算法很难依靠自身跳出局部极值,必须引入新的机制。为此,用共轭方向法改进粒子群算法,在粒子群算法陷入局部极值时,以这时所得到的局部极值点为初始点,用共轭方向法作一次运算,得到的结果记为;根据共轭方向法可知,将优于;这样就使算法跳出局部极值;再以作为全粒子群所搜索到的最优解,又用粒子群算法进行计算。如此反复,直到满足结束条件。

(2)粒子群算法陷入局部极值的判定方法

粒子群算法在运行过程中是否已陷入局部极值一般的判定方法是,当算法在运行过程中,在一定代数(一般取10代或20代)之内,最优值没有任何改变的就认为算法已陷入局部极值。

(3)共轭方向粒子群算法计算步骤

对于式(1)的优化问题,算法的主要步骤为:

步骤301,随机产生规模为的初始种群;

步骤302,按pso方法计算一定的代数之后或计算到出现连续几代(一般20代)之内目标值均无改善之后,设这时的最优解为x*;

步骤303,以x*为初始点,用共轭方向法对(1)式进行优化,同时对用共轭方向法所产生的一维优化问题仍用粒子群算法进行求解,由于只有一维,所以它的初始点不用很多(一般50即可),同时迭代代数也不用很大(一般50即可)。设最后得到结果为x**;

步骤304,检查是否满足终止条件,若未满足,以x**为当前的全部粒子找到的最优,转至步骤2继续迭代;否则结束算法运行,输出最优解。

本发明的优点及积极效果为:本发明将共轭方向法与粒子群算法相结合处理高维数据。当粒子群算法迭代了一定步数而陷入局部极值并得局部最优解x*时,以x*为初值,用共轭方向法对其求解,利用粒子群算法对低维优化问题的有效性,将得新的更优的当前最优解x**,从而使算法跳出局部极值;在新极值的条件下,又用粒子群算法对原问题求解,如此反复直至结束。通过经典的测试函数对其测试,结果表明这一尝试是有效的。最后将算法用于so2催化氧化反应动力学模型的非线性参数估计,获得满意效果。

附图说明

图1是本发明实施提供的高维化工数据共轭粒子群算法处理方法流程图。

图2是本发明实施提供的检测非预期路径图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作进一步描述。

如图1所示,本发明提供一种高维化工数据共轭粒子群算法处理方法包括以下步骤:

步骤s101,粒子群算法迭代了一定步数而陷入局部极值并得局部最优解x*时,以x*为初值,用共轭方向法对其求解;

步骤s102,利用粒子群算法对低维优化问题的有效性,将得新的更优的当前最优解x**,从而使算法跳出局部极值;

步骤s103,在新极值的条件下,又用粒子群算法对原问题求解,如此反复直至结束。

本发明提供的基本粒子群算法及其数学分析为:

设优化问题表述为:

(1)基本粒子群算法(pso):

粒子群算法(pso)[1~3]是对鸟群等群体生物行为的仿生,称每个生物个体为粒子,pso将由一组粒子在n维空间中搜索最优解,每个粒子所处的位置表示一解向量,作为智能体它能记住自身搜索到的最优解,并获取全粒子群所经历过的最优解,由此指导其移动,逐步迭代寻得最优解。

记第i个粒子在第j代时的位置为xi(j),它本身和全粒子群所搜索到的最优解分别为pid(j)和pgd(j),它的移动速度矢量为vi(j),则在第j+1代时第i个粒子将移至:

vi(j+1)=ωφ1νi(j)+η1φ2(pid(j)-xi(j))+η2φ3(pgd(j)-xi(j))(2)

xi(j+1)=xi(j)+vi(j+1)(3)

其中:ω,η1,η2均为取值于[0,1]中的控制参数,其对算法性能有重要影响但很难确定适当的值,φ1,φ2,φ3是[0,1]区间的随机数;同时不同的邻域结构对于算法效率和收敛速度的影响。

该算法概念简单,易于实现,因而得到很快发展,迅速得到了国际演化计算研究领域的认可,并在工程中得到广泛应用,但算法有存在易陷局部极值的不足,特别是对高维优化函数更是如此;为此有不少关于该算法改进策略的提出;主要的改进有:①改进控制参数;②对粒子状态变量重新赋值;③与其它进化算法结合;④使用新的位置或速度更新等式;⑤新的群体组织形式等。

(2)粒子群算法的数学分析

对于粒子群算法:①若算法只有一个粒子且不含1,把(2)式代入(3)式得:

xi(j+1)=xi(j)+(η1φ1+η2φ2)(pid(j)-xi(j));

从这个角度看,粒子群算法是爬山算法的一种推广,每次都朝最优方向前进;②从整个算法看,它可以看作以方向pid(j)-xi(j)与方向pgd(j)-xi(j)的加权作为搜索方向;pgd起引领作用,每个粒子在各自的某一范围内进行搜索;一般初始粒子是均匀分布在整个搜索域内,所以对目标函数不是很高时一般能得到问题的最优解。而当目标函数的维数较高时,若算法一旦陷入局部极值,由于各维变量之间的相互制约,并且若在几步中不变,例如第1步与第2步不变,即pid(1)=pid(2),则:

xi(2)=xi(1)+(η1φ1+η2φ2)(pid(1)-xi(1))

xi(3)=xi(2)+(η1φ1+η2φ2)(pid(1)-xi(2))=xi(1)+k(pid(1)-xi(1));

其中:k=2(η1φ1+η2φ2)-(η1φ1+η2φ2)2,从这可看出,在pid(j)不变的情况下,算法的搜索方向也是不变的,从而pgd将很难有所改进,因此仅靠算法自身是很难跳出局部极值的。对含有ωφ1vi(j)项,情况也类似。为此对高维优化函数,算法易陷局部极值,只有引入新的机制,使之迅速跳出局部极值。才能最终获得更满意的解。

本发明提供的共轭方向法为:

共轭方向法是早在1964年由powell提出的,对(1)式的问题,该方法的基本步骤是:

步骤201,任选一点a作为起始位置,沿第一个坐标轴作一维优化,得到b点。在这一步只需1次一维寻优;

步骤202,对个坐标逐个进行一轮一维优化,每次都从前一次得到的一维极值点出发,这样经过次一维优化得到c点,b和c的连线是这一轮结果得到的一个共轭方向,将取代第一个坐标方向并在方向作一次一维优化。在这一步需要n+1次寻优;

步骤203,每进行一轮一维优化都将得到一个共轭方向,可用以取代一个原先采用的坐标方向;

步骤204,经过1轮一维优化,结果得到d点,总共需作一维优化次数是:

1+(n+1)(n-1)=n2

共轭方向法的性质是:如果式(1)的优化函数是二次函数,d点就是维空间中的最优点;如果不是二次函数,则d点比a点更接近最优点,可以由d点开始继续寻优。

本发明提供的共轭方向粒子群算法为:

(1)共轭方向粒子群算法(cdpso)

共轭方向法保证通过一次运算后所得到的点优于原来的初始点,初始点选得越好,则得到的点越好,算法越快收敛到全局最优点,可在优化运算中初值难选取,一般是随机选取,这使算法要收敛到最优点必须经过长时间的运算。粒子群算法是随机算法,算法的初始点(粒子)是任取的,算法是类似于爬山算法,初始点不只一个,各点之间相互协作,所以算法在开始阶段目标函数值下降很快,到一定程度后目标值下降速度越来越慢,最终可能陷入局部极值,特别对高维优化函数更是如此,根据上面的分析,这时算法很难依靠自身跳出局部极值,必须引入新的机制。为此,用共轭方向法改进粒子群算法,在粒子群算法陷入局部极值时,以这时所得到的局部极值点为初始点,用共轭方向法作一次运算,得到的结果记为;根据共轭方向法可知,将优于;这样就使算法跳出局部极值;再以作为全粒子群所搜索到的最优解,又用粒子群算法进行计算。如此反复,直到满足结束条件。

(2)粒子群算法陷入局部极值的判定方法

粒子群算法在运行过程中是否已陷入局部极值一般的判定方法是,当算法在运行过程中,在一定代数(一般取10代或20代)之内,最优值没有任何改变的就认为算法已陷入局部极值。

(3)共轭方向粒子群算法计算步骤

对于式(1)的优化问题,算法的主要步骤为:

步骤301,随机产生规模为的初始种群;

步骤302,按pso方法计算一定的代数之后或计算到出现连续几代(一般20代)之内目标值均无改善之后,设这时的最优解为x*;

步骤303,以x*为初始点,用共轭方向法对(1)式进行优化,同时对用共轭方向法所产生的一维优化问题仍用粒子群算法进行求解,由于只有一维,所以它的初始点不用很多(一般50即可),同时迭代代数也不用很大(一般50即可)。设最后得到结果为x**;

步骤304,检查是否满足终止条件,若未满足,以x**为当前的全部粒子找到的最优,转至步骤2继续迭代;否则结束算法运行,输出最优解。

1、算法性能测试与讨论

1.1算法的性能测试

测试1以10维的广义rastrigin函数:

进行测试,该函数的最优点x*为(0,0,…,0),最优值f(x*)=0。

分别用pso与cdpso进行优化,参数设置为ω1=0.53、η1=0.35、η2=0.45,初始粒子数200,迭代代数1000代;同时在用cdpso进行优化时,只要有10代最优值不变即认为陷入局部极值;

在对共轭方向法所产生的一维优化问题仍用粒子群算法进行求解,这时的初始粒子数为50,迭代代数也为50。所得结果如表1、表2所示。

测试2以30维的广义griewank函数:

进行测试,该函数的最优解*为0,0,,0,最优值*为0。所有参数和测试1一样。由于是随机算法,对每一种算法都独立运行10次。10次运算所得10个最优值如表3所示。

1.2算法的性能分析

上面的测试表明,pso算法在求解高维的优化函数时容易陷入局部极值,在对10维的广义rastrigin函数进行优化时,200代以后就陷入局部极值而无法跳出;而cdpso却能很好地跳出局部极值,这主要是通过引入共轭方向法的作用,使算法能及时跳出局部极值点,这样不断的交替使用共轭方向法,增强了算法对高维问题的优化性能。

表1rastrigin的pso优化结果

表2rastrigin的cdpso优化结果

表3griewank的优化结果

2、在so2氧化反应动力学模型参数估计中的应用

文献对so2催化氧化机理作了深入研究,推导出其动力学模型为:

式中:r——反应速率;——o2,so2,so3的分压。

k1=k01exp(-e1/rt);k2=k02exp(-e2/rt);k3=k03exp(-e3/rt);

2.1pso与cdpso对模型参数的估计

本文根据文献[6]所提供的实验数据,采用cdpso对模型参数k01、k02、k03、e1、e2和e3进行估计。为作比较,同时也应用pso进行参数估计。参数估计原则是使(6)式的达到最小,此为优化目标函数。

式中:m——样本容量,——第i个样本的实验值与估算值。两个算法的参数设置和性能测试1一样,由于是随机算法,对每一种算法都独立运行10次,10次运算所得10个最优值列如表4所示。

2.2结果分析

表4的数据表明cdpso优于pso,同时把所得结果与文献[6]用powell非线性优化方法和文献[7]用改进遗传算法(ega)以及文献[8]用优进策略差分进化算法(mde)进行参数估计时所得的结果进行比较如表5所示。

表5进一步说明了cdpso用于处理化工高维数据的有效性。

如果(t.systemv=t′.systemv)那么转换路径是合理的非预期状态转换路径否则转换路径是不合理的非预期状态转换路径算法结束;否则返回步骤2;

如图2所示的状态转换路径,其中集合在路径中改变为空集,且环境向量值没有改变,表示此路径为一合理非预期路径。

表4pso与dpso对(17)式的优化结果比较

表5不同的优化算法优化最优模型所得的参数估计值的比较

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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