发明名称 一种基于GA-PSOBP算法的地质灾害危险性评价方法
摘要 本发明公开了一种基于GA-PSOBP算法的地质灾害危险性评价方法,该方法将BP算法与遗传算法相结合,提出混合智能算法;先用遗传算法对网络进行训练,找到一个较优解,然后将这一结果作为BP算法中的网络初始参数再进行训练,这种方法可以提高网络的分类能力,避免结果陷入局部最优;并且在训练迭代中采用PSO算法进行更改连接权值和阈值,从而加快了网络的收敛速度。
申请公布号 CN103699943A 申请公布日期 2014.04.02
申请号 CN201310751220.3 申请日期 2013.12.27
申请人 长春工业大学 发明人 刘铭;王轶;董小刚;何禹德
分类号 G06Q10/04(2012.01)I;G06N3/02(2006.01)I;G06N3/12(2006.01)I 主分类号 G06Q10/04(2012.01)I
代理机构 长春市四环专利事务所(普通合伙) 22103 代理人 张建成
主权项 1.一种基于GA-PSOBP算法的地质灾害危险性评价方法,该方法包括以下步骤:(一)、确定神经网络结构:包括输入层、隐含层、输出层的神经元个数;(二)、染色体的编码:采用实数编码,即x=(w,θ,v,γ),w为输入层和隐层之间的连接权值,θ为隐层的阈值,v为隐层和输出层之间的连接权值,γ为输出层的阈值;(三)、适应度函数的构造:目标函数选取网络误差函数E,<![CDATA[<math><mrow><msub><mi>E</mi><mi>t</mi></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msup><mrow><mo>(</mo><msubsup><mi>c</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>-</mo><msubsup><mi>y</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><![CDATA[<math><mrow><mi>E</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>T</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msup><mrow><mo>(</mo><msubsup><mi>c</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>-</mo><msubsup><mi>y</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>T</mi></munderover><msub><mi>E</mi><mi>t</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,T为样本总数,m为输出神经元个数,E<sub>p</sub>为各单元的误差和,c<sub>k</sub>为实际输出,y<sub>k</sub>为目标输出;作为目标函数,要取到极小,而目标函数值越小,适应度函数越大,本文取适应度函数为F(E),F(E)=1/(E+1)   (3)(四)、选择算子的确立:选择策略使用遗传算法中常用的适应度比例方法,即蒙特卡罗法,设群体规模为G,其中第i个个体的适应度为f<sub>i</sub>,则其被选中的概率为P<sub>i</sub>,<![CDATA[<math><mrow><msub><mi>P</mi><mi>i</mi></msub><mo>=</mo><mfrac><msub><mi>f</mi><mi>i</mi></msub><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>G</mi></munderover><msub><mi>f</mi><mi>j</mi></msub></mrow></mfrac><mo>.</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>(五)、交叉算子的设计:由于采用的是实数编码,所以交叉算子采用算术交叉策略,设有个体<img file="FDA0000448699200000021.GIF" wi="190" he="78" />二者进行算术交叉,则交叉运算后所产生出的两个新个体是<img file="FDA0000448699200000022.GIF" wi="212" he="75" /><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>x</mi><mi>A</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mi>&alpha;</mi><msubsup><mi>x</mi><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><msubsup><mi>x</mi><mi>A</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mi>&alpha;</mi><msubsup><mi>x</mi><mi>A</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><msubsup><mi>x</mi><mi>B</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mtd></mtr></mtable></mfenced><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,α为在(0,1)之间的符合均匀分布的随机数;(六)、变异算子的设计:变异算子采用均匀变异策略,假设有一个体为X=x<sub>1</sub>x<sub>2</sub>...x<sub>k</sub>...x<sub>i</sub>,若x<sub>k</sub>为变异点,其取值范围为<img file="FDA0000448699200000024.GIF" wi="281" he="78" />在该点对个体X进行均匀变异操作后,可得到一个新的个体X=x<sub>1</sub>x<sub>2</sub>...x'<sub>k</sub>...x<sub>i</sub>其中变异点的新基因值是x'<sub>k</sub>,<![CDATA[<math><mrow><msubsup><mi>x</mi><mi>k</mi><mo>&prime;</mo></msubsup><mo>=</mo><msubsup><mi>X</mi><mi>min</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mi>r</mi><mrow><mo>(</mo><msubsup><mi>X</mi><mi>max</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>-</mo><msubsup><mi>X</mi><mi>min</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,r为在(0,1)之间符合均匀分布的随机数;(七)、智能网络权值和阈值初始化:经过遗传算法训练结束后,找出适应度值最大的个体,把该个体的各个分量解码成相应的参数值,就是网络的初始权值和阈值;(八)、初始化智能网络中的粒子群参数:粒子位置、速度向量的维数为所有连接权值和阈值,维数D等于输入层至隐含层连接权值的个数、隐含层至输出层的连接权值的个数、隐含层的阈值个数以及输出层的阈值个数之和;初始化学习因子c<sub>1</sub>,c<sub>2</sub>;初始化粒子速度v和位置x;初始化惯性权重w<sup>*</sup>;设定误差最小值以及最大迭代次数;(九)、输入样本的选取:选取一组输入样本<![CDATA[<math><mrow><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>x</mi><mi>n</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow></mrow></math>]]></maths>和目标样本<![CDATA[<math><mrow><msub><mi>Y</mi><mi>k</mi></msub><mo>=</mo><mrow><mo>(</mo><msubsup><mi>y</mi><mn>1</mn><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>,</mo><msubsup><mi>y</mi><mn>2</mn><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>y</mi><mi>m</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>将它们提供给网络;(十)、计算隐层的输出值:计算隐层各单元的输入值s<sub>j</sub>,<![CDATA[<math><mrow><msub><mi>s</mi><mi>j</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>w</mi><mi>ij</mi></msub><msub><mi>x</mi><mi>i</mi></msub><mo>-</mo><msub><mi>&theta;</mi><mi>j</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>p</mi><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中w<sub>ij</sub>为输入层到隐层之间的连接权值,θ<sub>j</sub>为隐层的阈值,n为输入神经元个数,p为隐层个数;再由s<sub>j</sub>求出隐层的输出值B<sub>j</sub>,j=1,2,...,p,B<sub>j</sub>=f<sub>1</sub>(s<sub>j</sub>),j=1,2,...,p,   (8)其中,f<sub>1</sub>(x)为传递函数,必须是连续可微的,往往采用S型的对数函数、正切函数和线性函数;(十一)、计算输出层各单元的响应值:计算输出层各单元的输入值L<sub>u</sub>,<![CDATA[<math><mrow><msub><mi>L</mi><mi>u</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>P</mi></munderover><msub><mi>v</mi><mi>ju</mi></msub><msub><mi>b</mi><mi>j</mi></msub><mo>-</mo><msub><mi>&gamma;</mi><mi>u</mi></msub><mo>,</mo><mi>u</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>p</mi><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>通过传递函数C<sub>u</sub>=f<sub>2</sub>(L<sub>u</sub>),再计算出输出层各单元的响应值C<sub>t</sub>,C<sub>u</sub>=f<sub>2</sub>(L<sub>u</sub>),u=1,2,...,p,   (10)其中,f<sub>2</sub>(x)为传递函数,往往选取一种和f<sub>1</sub>(x)不同的,但必须是连续可微的S型函数;(十二)、计算输出层各单元的均方误差和:采用最小二乘误差函数,根据公式(1)计算输出层各单元的误差和E<sub>p</sub>;选取其他样本,重复步骤(十)~(十二),当所有样本都输入一次后,全局误差即为公式(2)中的E;若全局误差满足需求,则算法终止;否则调用粒子群算法更改连接权值和阈值;(十三)、采用粒子群算法更新连接权值和阈值:粒子群算法中的适应度函数选取公式(2)中的误差函数作为适应度函数,以神经网络的最小二乘误差作为粒子搜索的评价指标,计算适应度函数的值,找出每个粒子的最优位置p<sub>id</sub>,以及所有粒子中的最优位置p<sub>gd</sub>;BP网络中的连接权值和阈值与粒子的位置相对应;对每一个粒子,如果当前适应度小于迭代前的个体极值,则进行个体极值p<sub>id</sub>的更新;否则p<sub>id</sub>保持不变;若当前适应度小于全局最优值,则进行全局最优解p<sub>gd</sub>的更新;否则p<sub>gd</sub>保持不变;在所有的个体极值,适应度最优的个体极值即为全局极值;全局极值对应的神经网络的权值与阈值,为粒子种群的当前最优解;(十四)、调整惯性权重w<sup>*</sup>:惯性权重w<sup>*</sup>对于粒子群的收敛性起到很大的作用,较大的w<sup>*</sup>值有较强的全局寻找最优解的能力,而较小的w<sup>*</sup>值有较强的局部收敛能力;传统粒子群算法是给出一个固定的w<sup>*</sup>值;通过动态调整w<sup>*</sup>值来控制粒子之前的速度对当前粒子速度的影响,使其兼顾全局搜索和局部搜索,从而可以帮助粒子群在最短时间内寻找到全局最佳解;根据公式(11)来更新惯性权值系数w<sup>*</sup>:<![CDATA[<math><mrow><msup><mi>w</mi><mo>*</mo></msup><mo>=</mo><msubsup><mi>w</mi><mi>max</mi><mo>*</mo></msubsup><mo>-</mo><mfrac><mrow><msubsup><mi>w</mi><mi>max</mi><mo>*</mo></msubsup><mo>-</mo><msubsup><mi>w</mi><mi>min</mi><mo>*</mo></msubsup></mrow><msub><mi>N</mi><mi>max</mi></msub></mfrac><mo>&times;</mo><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,<img file="FDA0000448699200000042.GIF" wi="237" he="78" />分别为w<sup>*</sup>的最大值和最小值,N<sub>max</sub>,N分别为最大迭代次数和当前迭代次数;(十五)、根据公式(12)和公式(13)更新粒子的速度和位置:v<sub>id</sub>=w<sup>*</sup>v<sub>id</sub>+c<sub>1</sub>rand<sub>1</sub>()(p<sub>id</sub>-x<sub>id</sub>)+c<sub>2</sub>rand<sub>2</sub>()(p<sub>gd</sub>-x<sub>id</sub>)   (12)x<sub>id</sub>(t+1)=x<sub>id</sub>(t)+v<sub>id</sub>(t+1)   (13)其中,v<sub>id</sub>,x<sub>id</sub>为粒子的速度和位置(十六)、停止条件判断:对迭代新产生的粒子群进行适应度评价,判断算法是否达到规定的误差或达到最大迭代次数,如果满足条件则转步骤(十七);否则迭代次数增加一次,返回步骤(八)继续迭代计算,直到满足条件结束;(十七)、生成全局最优解:当全局误差E小于预先设定的允许误差时,算法停止,称这一结果为网络收敛;此时全局极值对应的神经网络权值与连接结构即为GA-PSOBP算法所求问题的最优解;如果学习次数大于预先设定的学习次数,则网络无法收敛。
地址 130012 吉林省长春市延安大街2055号