主权项 |
一种基于粒子群算法的近红外光谱波长选择方法,其特征在于:步骤如下:步骤1:首先采集样本的近红外光谱信号,构成现场历史数据库D,数据库D的测量光谱为近红外光谱;数据库D包括有N个波长变量;步骤2:近红外光谱波长选择方法使用蒙特卡洛Monte‑Carlo,MC方法,按照预设比例R:1将数据库D随机划分为训练集和验证集;步骤3:近红外光谱波长选择方法初始化训练集,随机选取Num个粒子,每个粒子代表一个数据对象,即每个粒子是一个N维向量,Num即为粒子群大小;将这Num个粒子的飞行速度进行随机初始化;步骤4:近红外光谱波长选择方法采用二进制编码对每个粒子进行位置编码;每个粒子长度等于全部波长N,每个波长对应一个二进制码,其中数值‘1’表示对应的波长被选中,数值‘0’表示对应的波长未被选中;步骤5:近红外光谱波长选择方法采用偏最小二乘法partial linear squares,PLS建立分析校正模型,并选取交叉验证均方根误差RMSECV作为适应度函数,计算每个粒子的适应度值,并记录个体最优解p<sub>i</sub>和全局最优解p<sub>g</sub>;交叉验证均方根误差RMSECV的计算公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>R</mi><mi>M</mi><mi>S</mi><mi>E</mi><mi>C</mi><mi>V</mi><mo>=</mo><msqrt><mfrac><mrow><munderover><mo>Σ</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>K</mi><mi>p</mi></mrow></munderover><mrow><mo>(</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><msubsup><mi>y</mi><mi>k</mi><mo>*</mo></msubsup><mo>)</mo></mrow></mrow><mrow><mi>K</mi><mi>p</mi></mrow></mfrac></msqrt></mrow>]]></math><img file="FDA0000822734860000011.GIF" wi="544" he="233" /></maths>式中,Kp为交叉验证集的样本数,y<sub>k</sub>为第k个样本的实际测量浓度,<img file="FDA0000822734860000012.GIF" wi="63" he="77" />为第k个样本的预测浓度;步骤6:近红外光谱波长选择方法按照下式更新粒子的飞行速度,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>p</mi><mi>c</mi></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><msub><mi>p</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub></mtd><mtd><mrow><mn>0</mn><mo>≤</mo><msub><mi>r</mi><mn>1</mn></msub><mo><</mo><msub><mi>f</mi><mi>c</mi></msub></mrow></mtd></mtr><mtr><mtd><msub><mi>p</mi><mrow><mi>g</mi><mi>j</mi></mrow></msub></mtd><mtd><mrow><msub><mi>f</mi><mi>c</mi></msub><mo>≤</mo><msub><mi>r</mi><mn>1</mn></msub><mo>≤</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000822734860000021.GIF" wi="443" he="164" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msubsup><mi>v</mi><mrow><mi>i</mi><mi>j</mi></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mi>ω</mi><mo>·</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><mo>+</mo><mi>a</mi><mo>·</mo><msub><mi>r</mi><mn>2</mn></msub><mo>·</mo><mrow><mo>(</mo><msub><mi>p</mi><mi>c</mi></msub><mo>-</mo><msubsup><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000822734860000022.GIF" wi="581" he="92" /></maths>式中,p<sub>c</sub>为参考状态,p<sub>ij</sub>为个体最优解p<sub>i</sub>第j维的位置编码,p<sub>gj</sub>为全局最优解p<sub>g</sub>第j维的位置编码,r<sub>1</sub>和r<sub>2</sub>均为[0,1]之间的随机数,f<sub>c</sub>为选择系数,k为当前迭代次数,ω为惯性因子,a为加速度系数,<img file="FDA0000822734860000023.GIF" wi="78" he="93" />为当前迭代第i个粒子第j维的飞行速度,<img file="FDA0000822734860000024.GIF" wi="67" he="91" />为当前迭代第i个粒子第j维的位置编码,<img file="FDA0000822734860000025.GIF" wi="88" he="88" />为下一次迭代第i个粒子第j维的飞行速度;步骤7:近红外光谱波长选择方法按照下式更新粒子的位置编码,<img file="FDA0000822734860000026.GIF" wi="643" he="251" />式中,ρ为[0,1]之间的随机数,k为当前迭代次数,<img file="FDA0000822734860000027.GIF" wi="89" he="85" />为下一次迭代第i个粒子第j维的飞行速度,<img file="FDA0000822734860000028.GIF" wi="89" he="93" />为下一次迭代第i个粒子第j维的位置编码;步骤8:近红外光谱波长选择方法重复步骤4~步骤7,直到达到最大迭代次数Iter_n或者适应度函数RMSECV达到设定的适应度值fitness;输出全局最优解;步骤9:近红外光谱波长选择方法根据输出的全局最优解的二进制编码,得到所选择的波长变量,数值‘1’表示对应的波长被选中,数值‘0’表示对应的波长未被选中。 |