发明名称 一种基于PSO自适应分段线性拟合的海浪有效波高反演模型建模方法
摘要 本发明提出一种基于PSO自适应分段线性拟合的海浪有效波高反演模型建模方法,属于海浪参数反演技术领域,包括数据的去野值点处理、数据的稀疏化处理、初始化粒子群中参数、对粒子速度进行初始化、对粒子速度进行更新以及对粒子位移进行更新等步骤。本发明提出的一种自适应分段线性粒子群的海浪有效波高反演模型建模方法,利用粒子群算法对波高进行反演,不但可以完成传统算法的功能,达到传统算法的精度,还可以进行更精确的波高反演,且本发明中分段个数大于等于两段时,与传统建模方法相比具有更高的建模精度,利用本发明建立的反演模型比传统方法建立的反演模型具有更高的反演精度,且本发明方法的适用性广,灵活性高。
申请公布号 CN102799770B 申请公布日期 2015.08.26
申请号 CN201210219893.X 申请日期 2012.06.29
申请人 哈尔滨工程大学 发明人 刘利强;戴运桃;范志超
分类号 G06F19/00(2011.01)I 主分类号 G06F19/00(2011.01)I
代理机构 北京永创新实专利事务所 11121 代理人 官汉增
主权项 一种自适应分段线性粒子群的海浪有效波高反演模型建模方法,其特征在于:包括以下几个步骤:步骤一:数据的去野值点处理:原始数据点集为Y,有任意数据点A,<img file="FDA0000686961200000015.GIF" wi="186" he="66" />若对于数据点A的某一邻域ρ(A,r),r>0,r表示邻域的半径,存在数据点B,<img file="FDA0000686961200000016.GIF" wi="158" he="35" />使得B∈ρ(A,r),则点A属于真值集,Y中所有满足点A这一性质的点组成的集合构成真值集Z;有任意数据点A′,<img file="FDA0000686961200000017.GIF" wi="168" he="39" />若对于点A′的某一邻域ρ(A′,r),r>0,对于<img file="FDA0000686961200000018.GIF" wi="178" he="39" />均有<img file="FDA0000686961200000019.GIF" wi="271" he="48" />则点A′属于野值集,Y中所有满足点A′这一性质的点组成的集合构成野值集U,根据真值集和野值集进行去野值点处理:第1步:将原始数据点集Y中的数据点按照数据点的横坐标由小到大进行排序,得到排序后的数据点集为{A<sup>k′</sup>}k′=1,2,3,...,m,其中m为原始数据点集Y中的所有数据点的个数,角标k′表示数据点按照横坐标大小由小到大依次排列,邻域半径为r,令k′=1,向左判断参数tl初始值满足tl=1,向右判断参数tr初始值满足tr=1;第2步:判断k′‑tl>0是否成立,若不成立进入第4步,若成立判断A<sup>k′</sup>‑A<sup>k′‑tl</sup><r是否成立,若不成立进入第4步,若成立判断<img file="FDA0000686961200000011.GIF" wi="272" he="124" />是否成立,若成立,记录点A<sup>k′</sup>属于集合B中,进入第6步,其中集合B表示剔除野值之后的真值集,若不成立进入第3步;<img file="FDA0000686961200000012.GIF" wi="272" he="121" />表示“A<sup>k′</sup>”与“A<sup>k′‑tl</sup>”两点之间的长度小于邻域半径的值;第3步:令向左判断参数tl加1,即tl=tl+1,返回到第2步;第4步:判断k′+tr<m是否成立,若不成立进入第6步,若成立判断A<sup>k′+tr</sup>‑A<sup>k′</sup><r是否成立,若不成立进入第6步,若成立判断<img file="FDA0000686961200000013.GIF" wi="270" he="117" />是否成立,若成立,记录点A<sup>k′</sup>属于集合B中,进入第6步,若不成立进入第5步;<img file="FDA0000686961200000014.GIF" wi="276" he="116" />表示“A<sup>k′</sup>”与“A<sup>k′+tl</sup>”两点之间的长度小于邻域半径的值;第5步:令向右判断参数tr加1,即tr=tr+1,返回到第4步;第6步:令角标k′加1,即k′=k′+1,判断k′≤m是否成立,若不成立进入第7步,若成立令tl=1,tr=1,返回到第2步;第7步:集合B中的所有点组成剔除野值点之后的真值集;步骤二:数据的稀疏化处理:原始数据点集为Y,存在任意点C,<img file="FDA0000686961200000025.GIF" wi="183" he="46" />若对于点C的某一邻域ρ(C,r′),r′>0,<img file="FDA0000686961200000026.GIF" wi="173" he="46" />使得D∈ρ(A,r′),则称点C属于密集集,r′表示邻域判断半径,Y中所有满足点C这一性质的点组成的集合构成密集集M;存在任意点C′,<img file="FDA0000686961200000027.GIF" wi="182" he="48" />若对于点C′的某一邻域ρ(C′,r′),r′>0,对于<img file="FDA0000686961200000028.GIF" wi="192" he="49" />均有<img file="FDA0000686961200000029.GIF" wi="297" he="58" />则称点C′属于稀疏集,Y中所有满足点C′这一性质的点组成的集合构成稀疏集S;野值集、真值集、密集集和稀疏集之间存在交叉关系为:设Z<sub>s</sub>=Z∩S,当r′≤r时,有<img file="FDA00006869612000000210.GIF" wi="158" he="47" />U∩Z<sub>s</sub>=Φ,并且U∪Z<sub>S</sub>=S,Z<sub>s</sub>表示真值集与稀疏集的交集;稀疏化处理的具体步骤为:第1步:将步骤一中得到的集合B中的数据点,按照数据点的横坐标由小到大进行排序,得到排序后的数据点集{C<sup>k″</sup>}k″=1,2,3,...,n,其中n为集合B中所有数据点的个数,角标k″表示数据点按照横坐标大小由小到大依次排列,设稀疏化处理时邻域判断半径为r′,令k″=1,t=1,m′=n,{D<sup>k″</sup>}={C<sup>k″</sup>}k″=1,2,3,...,m′;t表示向右判断参数,{D<sup>k″</sup>}用于表示将去野值后的数据又进行了稀疏化处理的数据点,m′表示每次提出野值后集合{D<sup>k″</sup>}中所剩下的数据点的个数;第2步:判断k″+t<m′是否成立,若不成立进入第4步,若成立判断D<sup>k″+t</sup>‑D<sup>k″</sup><r′是否成立,若不成立进入第4步,若成立判断<img file="FDA0000686961200000021.GIF" wi="276" he="115" />是否成立,若成立,剔除点D<sup>k″+t</sup>,令m′=m′‑1,进入第3步,若不成立进入第4步;<img file="FDA0000686961200000022.GIF" wi="285" he="117" />表示“D<sup>k′</sup>”与“D<sup>k′+tl</sup>”两点之间的长度小于邻域半径的值;第3步:令t=t+1,返回到第2步;第4步:将集合{D<sup>k″</sup>}中剩余的数据点,按照原横坐标大小由小到大排列顺序依次重新记录到{D<sup>k″</sup>}k″=1,2,3,...,m′中,令k″=k″+1,判断k″≤m′是否成立,若不成立进入第5步,若成立令t=1,返回到第2步;第5步:集合{D<sup>k″</sup>}k″=1,2,3,...,m′中的点便是将去野值后的数据又进行了稀疏化处理的数据点;步骤三:设置粒子的编码方式并初始化粒子群各参数:直线方程由截距式表示,每个粒子由所有确定直线的截距A和斜率B构成,粒子群算法粒子的编码方式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mo>{</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mi>k</mi></msubsup><mo>,</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mi>k</mi></msubsup><mo>}</mo></mrow>]]></math><img file="FDA0000686961200000023.GIF" wi="397" he="96" /></maths>其中i=1,2,...,N,N≥2为粒子个数,j=1,2,...,l,l≥1表示分段数,即参与拟合的直线条数;k表示粒子群的迭代次数;<img file="FDA0000686961200000024.GIF" wi="260" he="93" />分别表示第k次迭代中第i个粒子第j条直线的截距、斜率,<img file="FDA0000686961200000036.GIF" wi="58" he="55" />表示第i个粒子的位置;初始化直线的截距和斜率为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>=</mo><msub><mi>A</mi><mi>max</mi></msub><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mi>rand</mi><mo>+</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>A</mi><mi>max</mi></msub><mo>-</mo><msub><mi>A</mi><mi>min</mi></msub><mo>)</mo></mrow></mrow><mi>l</mi></mfrac></mtd></mtr><mtr><mtd><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mn>1</mn></msubsup><mo>=</mo><msub><mi>B</mi><mi>min</mi></msub><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mi>rand</mi><mo>+</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>B</mi><mi>max</mi></msub><mo>-</mo><msub><mi>B</mi><mi>min</mi></msub><mo>)</mo></mrow></mrow><mi>l</mi></mfrac></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686961200000031.GIF" wi="1526" he="294" /></maths>其中rand为0到1之间的随机数;A<sub>max</sub>和A<sub>min</sub>分别表示截距的最大和最小值,满足min(Hs)≤A<sub>max</sub>≤max(Hs),min(Hs)和max(Hs)分别为波高数据中波高的最大值和最小值,A<sub>min</sub><A<sub>max</sub>;B<sub>max</sub>和B<sub>min</sub>分别表示斜率的最大值和最小值,满足0≤B<sub>min</sub>≤B<sub>max</sub>;i=1,2,...,N,N≥2为粒子个数,j=1,2,...,l,l≥1表示分段数,<img file="FDA0000686961200000037.GIF" wi="99" he="71" />和<img file="FDA0000686961200000038.GIF" wi="104" he="71" />分别表示初始化中第i个粒子第j条直线的截距和斜率;粒子位移的初始化为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>=</mo><mi>rand</mi><mo>&CenterDot;</mo><msub><mi>v</mi><mi>max</mi></msub></mtd></mtr><mtr><mtd><msubsup><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mn>1</mn></msubsup><mo>=</mo><mi>rand</mi><mo>&CenterDot;</mo><msub><mi>v</mi><mi>max</mi></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686961200000032.GIF" wi="1203" he="183" /></maths>其中rand为0到1之间的随机数;v<sub>max</sub>>0为粒子位移的最大值;<img file="FDA0000686961200000033.GIF" wi="262" he="90" />分别表示初始化中第i个粒子第j条直线的截距位移项和斜率位移项;粒子群各参数初始化如下:设种群数为N;初始化时第i个粒子为<img file="FDA0000686961200000034.GIF" wi="410" he="100" />i=1,2,...,N,j=1,2,...,l;自身学习因子为c<sub>1</sub>≥0,全局学习因子为c<sub>2</sub>≥0;惯性权重上限和下限分别为ω<sub>max</sub>和ω<sub>min</sub>,0≤ω<sub>min</sub>≤ω<sub>max</sub>≤1;分段个数为l,l≥1;最大迭代次数k<sub>max</sub>满足k<sub>max</sub>≥2;种群数为N;零次项系数最大值和最小值分别为A<sub>max</sub>和A<sub>min</sub>,A<sub>max</sub>≥A<sub>min</sub>,一次项系数最大值和最小值分别为B<sub>max</sub>和B<sub>min</sub>,B<sub>max</sub>≥B<sub>min</sub>≥0;位移最大步长v<sub>max</sub>满足v<sub>max</sub>>0;迭代停止阀值h<sub>max</sub>为h<sub>max</sub>=l·E,其中E用于确定随分段个数的增加,循环跳出的阀值随之增大的速度;步骤四:粒子速度的初始化方法如下:令i=1,j=1,根据式(4),初始化第i个粒子位移为<maths num="0004" id="cmaths0004"><math><![CDATA[<mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>=</mo><mi>rand</mi><mo>&CenterDot;</mo><msub><mi>v</mi><mi>max</mi></msub></mtd></mtr><mtr><mtd><msubsup><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mn>1</mn></msubsup><mo>=</mo><mi>rand</mi><mo>&CenterDot;</mo><msub><mi>v</mi><mi>max</mi></msub></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000686961200000035.GIF" wi="366" he="186" /></maths>其中rand为0到1之间的随机数;根据式(3)初始化第i个粒子位置为<maths num="0005" id="cmaths0005"><math><![CDATA[<mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>=</mo><msub><mi>A</mi><mi>max</mi></msub><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mi>rand</mi><mo>+</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>A</mi><mi>max</mi></msub><mo>-</mo><msub><mi>A</mi><mi>min</mi></msub><mo>)</mo></mrow></mrow><mi>l</mi></mfrac></mtd></mtr><mtr><mtd><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mn>1</mn></msubsup><mo>=</mo><msub><mi>B</mi><mi>min</mi></msub><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mi>rand</mi><mo>+</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>B</mi><mi>max</mi></msub><mo>-</mo><msub><mi>B</mi><mi>min</mi></msub><mo>)</mo></mrow></mrow><mi>l</mi></mfrac></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000686961200000041.GIF" wi="867" he="292" /></maths>其中rand为0到1之间的随机数;A<sub>max</sub>和A<sub>min</sub>分别表示截距的最大和最小值,满足min(Hs)≤A<sub>max</sub>≤max(Hs),min(Hs)和max(Hs)分别中波高的最大值和最小值,A<sub>min</sub><A<sub>max</sub>;B<sub>max</sub>和B<sub>min</sub>分别表示斜率的最大值和最小值,满足0≤B<sub>min</sub>≤B<sub>max</sub>;i=1,2,...,N,N≥2为粒子个数,即群体大小;j=1,2,...,l,l≥1表示分段数,即参与拟合的直线条数;<img file="FDA00006869612000000413.GIF" wi="103" he="70" />和<img file="FDA00006869612000000414.GIF" wi="105" he="70" />分别表示第1次迭代(即初始化)中第i个粒子第j条直线的截距和斜率;步骤五:令粒子数加1,即i=i+1,判断i≤N是否成立,若成立返回步骤四,否则进入步骤六;步骤六:令分段数加1,即j=j+1,判断j≤l是否成立,若成立返回步骤四,否则进入步骤七;步骤七:粒子群速度位置更新公式:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>v</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mi>&omega;</mi><mo>&CenterDot;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msub><mi>c</mi><mn>1</mn></msub><msubsup><mi>r</mi><mn>1</mn><mi>k</mi></msubsup><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>P</mi><mi>i</mi><mi>b</mi></msubsup><mo>-</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mn>2</mn></msub><msubsup><mi>r</mi><mn>2</mn><mi>k</mi></msubsup><mo>&CenterDot;</mo><mrow><mo>(</mo><msup><mi>P</mi><mi>g</mi></msup><mo>-</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>X</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>V</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686961200000042.GIF" wi="1509" he="180" /></maths>其中<img file="FDA0000686961200000043.GIF" wi="324" he="98" />表示第i个粒子的位移;<img file="FDA0000686961200000044.GIF" wi="384" he="100" />表示第i个粒子的位置,i=1,2,...,N,N≥2为粒子个数,即群体大小,j=1,2,...,l,l≥1表示分段数,即参与拟合的直线条数,k表示粒子群的迭代次数;<img file="FDA0000686961200000045.GIF" wi="670" he="149" />为惯性权重,0≤ω<sub>min</sub>≤ω<sub>max</sub>≤1为惯性权重的最大最小值,ω<sub>max</sub>和ω<sub>min</sub>分别为惯性权重上限和下限,k<sub>max</sub>表示最大迭代次数;u≥0为单调控制量;c<sub>1</sub>≥0为自身学习因子;c<sub>2</sub>≥0为全局学习因子;<img file="FDA0000686961200000046.GIF" wi="124" he="83" />为[0,1]区间的随机数;<img file="FDA0000686961200000047.GIF" wi="70" he="71" />为粒子自身寻到的最优值;P<sup>g</sup>为种群寻到的最优值;粒子群方法适应度函数<img file="FDA0000686961200000048.GIF" wi="152" he="81" />如下:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mi>F</mi><mrow><mo>(</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><msup><mi>m</mi><mo>&prime;</mo></msup></munderover><msup><mrow><mo>(</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>1</mn></mrow><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>2</mn></mrow><mi>k</mi></msubsup><mo>&CenterDot;</mo><msubsup><mi>D</mi><mi>x</mi><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>D</mi><mi>y</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mi>M</mi><mo>&CenterDot;</mo><mi>m</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686961200000049.GIF" wi="1372" he="146" /></maths>其中<img file="FDA00006869612000000410.GIF" wi="312" he="101" />t=1,2,...,m′,<img file="FDA00006869612000000415.GIF" wi="126" he="59" />分别为数据点对应的信噪比平方根和波高,D<sup>t</sup>表示由信噪比平方根和波高值组成的向量,m′为数据去野并稀疏化后的个数;<img file="FDA00006869612000000411.GIF" wi="274" he="93" />分别为直线的截距和斜率,j′=1,2,...,l,设相邻直线间的交点依次为O={O<sup>j″</sup>},<img file="FDA00006869612000000412.GIF" wi="347" he="85" /><img file="FDA0000686961200000051.GIF" wi="170" he="85" />分别表示交点O<sup>j″</sup>的横纵坐标,j″=1,2,...,l‑1,判断若<img file="FDA0000686961200000052.GIF" wi="194" he="84" />则令j′=1,若<img file="FDA0000686961200000053.GIF" wi="330" he="81" />(j=1,2,....,l‑2),则令j′=j″+1,若<img file="FDA0000686961200000054.GIF" wi="226" he="86" />则令j′=l;M>0为惩罚因子,m为满足限制条件的次数;根据适应度函数公式(6)计算各粒子的适应度值:令粒子群的迭代次数k=1,<img file="FDA0000686961200000055.GIF" wi="291" he="82" />为粒子自身寻到的最优值,<img file="FDA0000686961200000056.GIF" wi="73" he="79" />为第i个粒子的位置;(i=1,2,...,N),根据公式(6)计算适应度函数值<img file="FDA0000686961200000057.GIF" wi="174" he="78" /><maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>F</mi><mrow><mo>(</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><msup><mi>m</mi><mo>&prime;</mo></msup></munderover><msup><mrow><mo>(</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>1</mn></mrow><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>2</mn></mrow><mi>k</mi></msubsup><mo>&CenterDot;</mo><msubsup><mi>D</mi><mi>x</mi><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>D</mi><mi>y</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mi>M</mi><mo>&CenterDot;</mo><mi>m</mi></mrow>]]></math><img file="FDA0000686961200000058.GIF" wi="906" he="147" /></maths>步骤八:应用粒子群速度更新公式,根据式(5)中的位移更新公式,计算粒子位移<img file="FDA00006869612000000527.GIF" wi="81" he="55" />为<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msubsup><mi>v</mi><mi>i</mi><mrow><mo>&prime;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mi>&omega;</mi><mo>&CenterDot;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msub><mi>c</mi><mn>1</mn></msub><msubsup><mi>r</mi><mn>1</mn><mi>k</mi></msubsup><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>P</mi><mi>i</mi><mi>b</mi></msubsup><mo>-</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mn>2</mn></msub><msubsup><mi>r</mi><mn>2</mn><mi>k</mi></msubsup><mo>&CenterDot;</mo><mrow><mo>(</mo><msup><mi>P</mi><mi>g</mi></msup><mo>-</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686961200000059.GIF" wi="937" he="84" /></maths>其中<img file="FDA00006869612000000510.GIF" wi="357" he="101" />表示第i个粒子的位移;<img file="FDA00006869612000000511.GIF" wi="381" he="100" />表示第i个粒子的位置,i=1,2,...,N,N≥2为粒子个数,即群体大小,j=1,2,...,l,l≥1表示分段数,即参与拟合的直线条数,k表示粒子群的迭代次数;<img file="FDA00006869612000000512.GIF" wi="670" he="144" />为惯性权重,0≤ω<sub>min</sub>≤ω<sub>max</sub>≤1为惯性权重的最大最小值,k<sub>max</sub>表示最大迭代次数;u≥0为单调控制量;c<sub>1</sub>≥0为自身学习因子;c<sub>2</sub>≥0为全局学习因子;<img file="FDA00006869612000000513.GIF" wi="115" he="78" />为[0,1]区间的随机数;<img file="FDA00006869612000000514.GIF" wi="64" he="78" />为粒子自身寻到的最优值;P<sup>g</sup>为种群寻到的最优值;步骤九:判断<img file="FDA00006869612000000515.GIF" wi="242" he="95" />是否成立,若成立令<img file="FDA00006869612000000516.GIF" wi="379" he="169" />否则令<img file="FDA00006869612000000517.GIF" wi="244" he="93" />其中<img file="FDA00006869612000000518.GIF" wi="96" he="91" />为根据位移更新公式(5)计算的位移,v<sub>max</sub>为位移长度最大值;i=1,2,...,N;j=1,2,...,l;s分别取值1或2,s=1、s=2分别表示直线的截距、斜率;<img file="FDA00006869612000000519.GIF" wi="88" he="85" />粒子表示实际的位移;<img file="FDA00006869612000000520.GIF" wi="252" he="97" />表示<img file="FDA00006869612000000521.GIF" wi="86" he="85" />的长度要大于v<sub>max</sub>;步骤十:应用粒子群位置更新公式,根据式(5)中的位置更新公式,计算粒子位置<img file="FDA00006869612000000522.GIF" wi="119" he="83" />为<maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><msubsup><mi>X</mi><mi>i</mi><mrow><mo>&prime;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>X</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>v</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup></mrow>]]></math><img file="FDA00006869612000000523.GIF" wi="357" he="85" /></maths>其中<img file="FDA00006869612000000524.GIF" wi="106" he="79" />为位置更新公式(5)所计算的新位置,<img file="FDA00006869612000000525.GIF" wi="78" he="78" />表示上一次迭代粒子的位置、<img file="FDA00006869612000000526.GIF" wi="76" he="78" />粒子的位移;步骤十一:判断<img file="FDA0000686961200000061.GIF" wi="307" he="98" />i=1,2,...,N,j=1,2,...,l是否成立,若成立令<maths num="0011" id="cmaths0011"><math><![CDATA[<mrow><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mfrac><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mrow><mo>|</mo><mo>|</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>2</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>|</mo><mo>|</mo></mrow></mfrac><mo>&CenterDot;</mo><msub><mi>B</mi><mi>max</mi></msub><mo>,</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mn>1</mn></mrow><mrow><mo>&prime;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>,</mo></mrow>]]></math><img file="FDA0000686961200000062.GIF" wi="749" he="174" /></maths>否则令<maths num="0012" id="cmaths0012"><math><![CDATA[<mrow><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>s</mi></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>s</mi></mrow><mrow><mo>&prime;</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>,</mo></mrow>]]></math><img file="FDA0000686961200000063.GIF" wi="289" he="91" /></maths>s=1,2;<img file="FDA0000686961200000064.GIF" wi="115" he="87" />表示粒子实际更新后的位置;B<sub>max</sub>表示斜率的最大值;<img file="FDA0000686961200000065.GIF" wi="286" he="99" />表示<img file="FDA0000686961200000066.GIF" wi="110" he="85" />的长度要大于B<sub>max</sub>;步骤十二:计算适应度函数值<maths num="0013" id="cmaths0013"><math><![CDATA[<mrow><mi>F</mi><mrow><mo>(</mo><msubsup><mi>X</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><msup><mi>m</mi><mo>&prime;</mo></msup></munderover><msup><mrow><mo>(</mo><msubsup><mi>X</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>1</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>+</mo><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><mn>2</mn></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>&CenterDot;</mo><msubsup><mi>D</mi><mi>x</mi><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>D</mi><mi>y</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mi>M</mi><mo>&CenterDot;</mo><mi>m</mi><mo>,</mo></mrow>]]></math><img file="FDA0000686961200000067.GIF" wi="946" he="145" /></maths>若<img file="FDA0000686961200000068.GIF" wi="388" he="84" />则令<img file="FDA0000686961200000069.GIF" wi="237" he="79" />否则进入步骤十三;<img file="FDA00006869612000000610.GIF" wi="176" he="79" />表示粒子<img file="FDA00006869612000000611.GIF" wi="105" he="79" />的适应度函数值,<img file="FDA00006869612000000612.GIF" wi="136" he="78" />表示粒子<img file="FDA00006869612000000613.GIF" wi="100" he="78" />所经过的最好位置的适应度函数值;步骤十三:设<img file="FDA00006869612000000614.GIF" wi="218" he="101" />中适应度值最小的位置,若<img file="FDA00006869612000000615.GIF" wi="342" he="81" />则令<img file="FDA00006869612000000616.GIF" wi="198" he="80" />否则进入步骤十四;步骤十四:判断最优位置P<sup>g</sup>,在连续h<sub>max</sub>次迭代中是否发生变化,若没有发生变化则进入步骤十五,否则令k=k+1,判断k≤k<sub>max</sub>是否成立,若成立转向步骤八,否则进入步骤十五;步骤十五:得的P<sup>g</sup>即为找到的各分段直线的最优截距和斜率数值。
地址 150001 黑龙江省哈尔滨市南岗区南通大街145号