1.一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,该方法包括如下步骤:
步骤1:输入需要进行波段选择的高光谱图像S,抽取图像的波段信息,构成原始波段集;
步骤2:设置二进制差分进化算法的参数,初始化二进制差分进化算法种群,将差分进化算法的种群解码成波段子集,利用波段子集对样本集合进行分类,计算各波段子集对应个体的适应度值并且执行差分进化操作;初始差分进化算法的参数包括种群规模,交叉概率,缩放因子,最大运行次数;
步骤3:执行差分进化算法到最大设定运行次数,输出差分进化算法的最优解;根据差分进化算法得到的当前最优解(即适应度最高值)个体的二进制串设置二进制蚁群算法的初始能见度,初始化蚂蚁种群;初始化蚂蚁种群包括信息素浓度,种群规模,信息素权重因子和启发信息权重因子的设置;
步骤4:二进制蚁群算法对候选解进行搜索,得到一组蚁群算法的候选解;
步骤5:将蚁群算法生成的候选解的解码生成波段子集,计算各波段子集分类准确率并作为对应蚂蚁的适应度值,选出并保留当前最优解;
步骤6:如果二进制蚁群算法的当前最优解比上一代的更好,则替换当前的最优解;否则最优解不变;
步骤7:通过蚁群算法信息素更新公式更新蚁群搜索路径上的信息素浓度;
步骤8:判断最终条件是否满足,若否,则返回执所述步骤4;若是,则解码输出最优个体对应的最优波段子集。
2.根据权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,所述步骤2和步骤5中求解适应度值公式定义为:其中F(i)是个体i生成解的适应度值,n(i)是个体i选择的波段数目,λ是一个加权参数,为了做更直观的评价,适应度值的显示形式采用小数,而不是百分比,Accuracy(i)表示运用个体i生成解得到的波段子集分类的分类精度,这里“个体”可以是蚂蚁个体和差分进化算法的个体,分类器采用支持向量机,分类精度的计算公式如下;
其中,TP为正确正例:如果测试样本是正例的并且它被确定是正例的,则它被视为正确正例;TN为正确负例:如果测试样本是负例的并且它被确定是负例的,则它被视为正确负例;FP为错误正例:如果测试样本是负例的并且它被确定是正例的,则它被视为错误肯定;FN为错误负例:如果测试样本是正例的并且它被确定是负例的,则它被视为错误正例。
3.根据权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,所述步骤3中根据差分进化算法得到的解设置蚁群的启发信息,其设置方法为:如果最优个体的二进制串中某一位的值为“1”,则它对应的能见度值设置为一个较大的值,值为“0”的能见度值设置为一个较小的值。
4.根据权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,所述步骤3中初始化蚂蚁种群包括信息素浓度,种群规模,这里种群规模和差分进化算法保持一致。
5.根据权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,所述步骤2和步骤5中差分进化算法和蚁群算法的二进制串与波段之间的映射方式为:每个波段有两个候选的状态,即选择或者不选择,将其与二进制码进行映射;这里,每个波段和二进制串中每一位对应,编码的长度等于的波段的数目;最优解的每一位由“0”或“1”表示,“1”表示该波段将被选择用于分类,“0”表示该波段不会被选中。
6.根据权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,步骤4中蚁群搜索候选解的规则如下:在这里 是蚂蚁k从节点(波段)l移动到状态“0”的概率,这里l是变量,其取值范围是[1,L],其中“L”表示原始波段集的长度,这里状态“0”表示波段没有被选择;参数“α”(α≥
0)是信息素的相对重要程度;“β”(β≥0)是启发因子的相对重要程度;τl(0)是路径(l,0)上的信息素浓度,同样,τl(1)是路径(l,1)上的信息素浓度;ηl(0)是路径(l,0)上的能见度,ηl(1)是(l,1)能见度,蚂蚁根据公式(3)和(4)计算选择每个波段状态为“0”或者“1”和概率值,并利用轮盘赌方式选择特征标记为“0”或者“1”的状态,蚂蚁每行走一步标记一个波段是否被选中,然后继续行走到下一个波段并完成此波段选择标记,一直到蚂蚁完成所有的波段选择标记。
7.权利要求1所述的一种基于差分进化改进的二进制蚁群算法的高光谱图像波段选择方法,其特征在于,通过公式(5)公式(6)新蚁群搜索路径上的信息素浓度:在此,t表示迭代次数,τl(0)(t+1)表示第(t+1)次迭代中节点l标记为状态为“0”,τl(1)(t+1)表示第(t+1)次迭代中节点l标记为状态为“1”的信息素浓度,ρ是表示信息素挥发的速率,并且ρ∈[0,1], 和 是增加的信息素,其中 f(sbest)表示是最好的适应度值,根据最优解中节点l标记的状态为“0”或者“1”的状态,使用公式(5)或者(6)对信息素进行更新,如l标记的状态为“0”则使用公式(5)对其信息素进行更新,即标记为“0”的状态的信息素进行增加,否则使用公式(6)对其信息素进行更新。