借鉴生物行为:
麻雀有两种类型:发现者和加入者。
发现者:负责寻找食物,为种群提供觅食区域的信息;
加入者:利用发现者获取食物;
在自然状态下,个体间会相互监视,麻雀种群中的加入者为了提高自身的捕食率,通常会争夺高摄取量同伴的食物资源。在觅食的同时,所有个体均会对周围环境保持警惕以防天敌的到来。
抽象得到规则:
参数说明表:
符号 | 含义 | 符号 | 含义 |
---|---|---|---|
X i , j t X_{i,j}^{t} Xi,jt | 第 i 只麻雀在第 t 次迭代中的第 j 维位置信息 | i t e r m a x iter_{max} itermax | 最大迭代次数 |
α \alpha α | [0,1]的随机数 | R 2 R_2 R2 | [0,1]的随机数,表示预警值 |
S T ST ST | [0.5,1]的常数,表示安全值 | Q Q Q | 服从正态分布的随机数 |
L L L | 全1的1×d矩阵 | X w o r s t t X_{worst}^t Xworstt | 第t次迭代中最差的个体 |
X p X_p Xp | 目前最优发现者的位置 | A | 1×d的矩阵,元素为随机赋值的1或-1 |
A + A^+ A+ | = A T ( A A T ) − 1 =A^T(AA^T)^{-1} =AT(AAT)−1 | β \beta β | 服从均值为0、方差为1的正态分布的随机数 |
K | [-1,1]的随机数,正负表示麻雀移动方向,大小表示步长控制参数 | f i f_i fi | 当前个体的适应度值 |
f g f_g fg | 当前最大适应度值 | f w f_w fw | 当前最小适应度值 |
测试函数:
f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(x_1,x_2)=x_1^2+x_2^2 f(x1,x2)=x12+x22
标准答案是0,函数长这个样子:
import numpy as np
from matplotlib import pyplot as plt
import SSA
'''适应度函数'''
def fun(X):
O=X[0]**2 + X[1]**2
return O
'''麻雀搜索算法求解x1^2 + x2^2的最小值'''
'''主函数 '''
#设置参数
pop = 50 #种群数量
MaxIter = 100 #最大迭代次数
dim = 2 #维度
lb = -10*np.ones(dim) #下边界
ub = 10*np.ones(dim)#上边界
#适应度函数选择
fobj = fun
GbestScore,GbestPositon,Curve = SSA.SSA(pop,dim,lb,ub,MaxIter,fobj)
print('最优适应度值:',GbestScore)
print('最优解[x1,x2]:',GbestPositon)
# 绘制适应度曲线
plt.figure(1)
plt.plot(Curve,'r-',linewidth=2)
plt.xlabel('Iteration',fontsize='medium')
plt.ylabel("Fitness",fontsize='medium')
plt.grid()
plt.title('SSA',fontsize='large')
plt.show()
'''麻雀搜索算法'''
def SSA(pop,dim,lb,ub,Max_iter,fun):
ST = 0.6 #预警值
PD = 0.7 #发现者的比列,剩下的是加入者
SD = 0.2 #意识到有危险麻雀的比重
PDNumber = int(pop*PD) #发现者数量
SDNumber = int(pop*SD) #意识到有危险麻雀数量
X,lb,ub = initial(pop, dim, ub, lb) #初始化种群
fitness = CaculateFitness(X,fun) #计算适应度值
fitness,sortIndex = SortFitness(fitness) #对适应度值排序
X = SortPosition(X,sortIndex) #种群排序
GbestScore = copy.copy(fitness[0])
GbestPositon = np.zeros([1,dim])
GbestPositon[0,:] = copy.copy(X[0,:])
Curve = np.zeros([Max_iter,1])
for i in range(Max_iter):
BestF = fitness[0]
X = PDUpdate(X,PDNumber,ST,Max_iter,dim)#发现者更新
X = JDUpdate(X,PDNumber,pop,dim) #加入者更新
X = SDUpdate(X,pop,SDNumber,fitness,BestF) #危险更新
X = BorderCheck(X,ub,lb,pop,dim) #边界检测
fitness = CaculateFitness(X,fun) #计算适应度值
fitness,sortIndex = SortFitness(fitness) #对适应度值排序
X = SortPosition(X,sortIndex) #种群排序
if(fitness[0]<=GbestScore): #更新全局最优
GbestScore = copy.copy(fitness[0])
GbestPositon[0,:] = copy.copy(X[0,:])
Curve[i] = GbestScore
return GbestScore,GbestPositon,Curve
运行结果:
最优适应度值: [6.99557365e-50]
最优解[x1,x2]: [[-2.14105478e-25 -1.55288701e-25]]
非常接近理论上的最优值[0,0]。
算法优缺点:
旭佬的博客,有事没事逛一逛
文献 | 改进策略 |
---|---|
吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J].北京航空航天大学学报,2021,47(08):1712-1720. | Tent混沌序列,高斯变异 |
毛清华,张强.融合柯西变异和反向学习的改进麻雀算法[J].计算机科学与探索,2021,15(06):1155-1164. | 柯西变异+反向学习+sin混沌序列 |
汤安迪,韩统,徐登武,谢磊.基于混沌麻雀搜索算法的无人机航迹规划方法[J].计算机应用,2021,41(07):2128-2136. | 立方映射+反向学习+高斯游走策略 |
李敦桥.一种混合麻雀搜索算法[J].电脑知识与技术,2021,17(05):232-234. | 模拟退火的Metropolis准则 |
黄敬宇. 融合t分布和Tent混沌映射的麻雀搜索算法研究[D].兰州大学,2021. | t分布+Tent混沌 |
张伟康,刘升,任春慧.混合策略改进的麻雀搜索算法[J].计算机工程与应用,2021,57(24):74-82. | Circle映射 |
段玉先,刘昌云.基于Sobol序列和纵横交叉策略的麻雀搜索算法[J].计算机应用,2022,42(01):36-43. | Sobol序列和纵横交叉策略 |
李鹏,丁倩雯.基于麻雀算法优化的OSTU分割算法[J].电子测量技术,2021,44(19):148-154. | Singer混沌映射和随机游走策略 |
刘丽娜,南新元,石跃飞.改进麻雀搜索算法求解作业车间调度问题[J].计算机应用研究,2021,38(12):3634-3639. | 量子计算+正余弦搜索 |
毛清华,张强,毛承成,柏嘉旋.混合正弦余弦算法和Lévy飞行的麻雀算法[J].山西大学学报(自然科学版),2021,44(06):1086-1091. | Levy飞行 |
欧阳城添,朱东林,王丰奇,邱亚娴.基于折射麻雀搜索算法的无人机路径规划[J].电光与控制,2022,29(06):25-31. | 折射反向学习+模拟退火机制 |
高晨峰,陈家清,石默涵.融合黄金正弦和曲线自适应的多策略麻雀搜索算法[J].计算机应用研究,2022,39(02):491-499. | Chebyshev混沌映射+柯西扰动 |
张晓萌,张艳珠,刘禄,张硕,熊夫睿.融合多策略的改进麻雀搜索算法[J].计算机应用研究,2022,39(04):1086-1091+1117. | 正弦搜索+多样性变异 |
汤安迪,韩统,徐登武,谢磊.基于等级制度和布朗运动的混沌麻雀搜索算法[J].空军工程大学学报(自然科学版),2021,22(03):96-103. | 等级制度+布朗运动 |
唐延强,李成海,宋亚飞,陈晨,曹波.自适应变异麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-14[2022-10-19]. | 猫混沌映射+柯西变异+Tent混沌 |
陈刚,林东,陈飞,陈祥宇.基于Logistic回归麻雀算法的图像分割[J/OL].北京航空航天大学学报:1-14[2022-10-19]. | Logistics |
陈功,曾国辉,黄勃,刘瑾.螺旋探索与自适应混合变异的麻雀搜索算法[J/OL].小型微型计算机系统:1-12[2022-10-19]. | 螺旋探索+ICMIC混沌 |
宋立钦,陈文杰,陈伟海,林岩,孙先涛.基于混合策略的麻雀搜索算法改进及应用[J/OL].北京航空航天大学学报:1-16[2022-10-19]. | Circle混沌映射+樽海鞘群算法+模拟退火机制 |
王子恺,黄学雨,朱东林,闫少强,李权,郭伟.融合边界处理机制的学习型麻雀搜索算法[J/OL].北京航空航天大学学报:1-16[2022-10-19]. | 边界处理机制+排序配对学习+竞争学习 |
精英反向策略 | 柯西变异,高斯变异,鸡群算法 |
文献 | 融合的智能优化算法 |
---|---|
汤安迪,韩统,徐登武,谢磊.基于混沌麻雀搜索算法的无人机航迹规划方法[J].计算机应用,2021,41(07):2128-2136. // 毛清华,张强,毛承成,柏嘉旋.混合正弦余弦算法和Lévy飞行的麻雀算法[J].山西大学学报(自然科学版),2021,44(06):1086-1091. | 正余弦算法SCA |
许亮,张紫叶,陈曦,赵世伟,王鹿洋,王涛.基于改进麻雀搜索算法优化BP神经网络的气动光学成像偏移预测[J].光电子·激光,2021,32(06):653-658. | 鸟群算法BSA |
张伟康,刘升,任春慧.混合策略改进的麻雀搜索算法[J].计算机工程与应用,2021,57(24):74-82. | 蝴蝶优化算法 |
高兵,郑雅,秦静,邹启杰,汪祖民.基于麻雀搜索算法和改进粒子群优化算法的网络入侵检测算法[J].计算机应用,2022,42(04):1201-1206. | 粒子群PSO |
姜南林. 基于改进麻雀搜索算法优化长短期记忆网络的短期电力负荷预测研究[D].南昌大学,2021. | 鸟群算法BSA |
高晨峰,陈家清,石默涵.融合黄金正弦和曲线自适应的多策略麻雀搜索算法[J].计算机应用研究,2022,39(02):491-499. | 黄金正弦 |
刘睿,莫愿斌.一种改进的麻雀搜索算法[J].计算机技术与发展,2022,32(03):21-26. | 萤火虫算法FA |
田露,刘升.融合哈密顿图的麻雀与算术混合优化算法[J/OL].计算机科学与探索:1-13[2022-10-19]. | 算术优化算法AOA |
宋立钦,陈文杰,陈伟海,林岩,孙先涛.基于混合策略的麻雀搜索算法改进及应用[J/OL].北京航空航天大学学报:1-16[2022-10-19]. | 樽海鞘群算法 |
郑旸,龙英文,吉明明,顾嘉城.融合螺旋黏菌算法的混沌麻雀搜索算法与应用[J/OL].计算机工程与应用:1-11[2022-10-19]. | 黏菌算法SMA |
Energy efficient cluster head selection using improved Sparrow Search Algorithm in Wireless Sensor Networks | 差分进化 |
文献 | 应用 |
---|---|
马晨佩,李明辉,巩强令,杨白月.基于麻雀搜索算法优化支持向量机的滚动轴承故障诊断[J].科学技术与工程,2021,21(10):4025-4029. | SVM |
许亮,张紫叶,陈曦,赵世伟,王鹿洋,王涛.基于改进麻雀搜索算法优化BP神经网络的气动光学成像偏移预测[J].光电子·激光,2021,32(06):653-658. | BP神经网络 |
黄敬宇. 融合t分布和Tent混沌映射的麻雀搜索算法研究[D].兰州大学,2021. | SVM+BP神经网络+恶意软件分类问题 |
欧阳城添,朱东林.融合K-means的多策略改进麻雀搜索算法研究[J].电光与控制,2021,28(12):11-16. // 陈刚,林东,陈飞,陈祥宇.基于Logistic回归麻雀算法的图像分割[J/OL].北京航空航天大学学报:1-14[2022-10-19]. | K-means聚类,图像分割 |
聂晓明,高鹏翔.基于用户偏好和麻雀搜索聚类的协同过滤算法[J].青岛大学学报(自然科学版),2021,34(01):70-76. | 用户偏好+聚类+协同过滤推荐算法 |
姜南林. 基于改进麻雀搜索算法优化长短期记忆网络的短期电力负荷预测研究[D].南昌大学,2021. | SVM+LSTM+预测模型 |
王誉霖. 基于群智能优化算法和XGBoost的血糖预测模型研究[D].北京化工大学,2021. | 极限学习机+血糖预测模型 |
胡青,龚世才,胡珍.基于改进麻雀搜索算法的空气质量指数预测[J].广西科学,2022,29(04):642-651. | BP神经网络+空气质量指数预测 |
A stochastic configuration network based on chaotic sparrow search algorithm | 随机配置网络SCN |
A novel Random Forest integrated model for imbalanced data classification problem | 不平衡数据集+集成方法+随机森林 |
Rolling bearing performance degradation assessment based on deep belief network and improved support vector data description | SVM+深度信念网络DBN+参数优化 |
Short-term wind speed forecasting based on long short-term memory and improved BP neural network | LSTM+BP+风速预测 |
An automated diagnosis and classification of COVID-19 from chest CT images using a transfer learning-based convolutional neural network | CNN+迁移学习+优化超参数+新冠图像诊断 |
A three-stage framework for vertical carbon price interval forecast based on decomposition–integration method | 反向传播神经网络BPNN+碳价格预测+区间预测 |
汤安迪,韩统,徐登武,谢磊.基于混沌麻雀搜索算法的无人机航迹规划方法[J].计算机应用,2021,41(07):2128-2136. | 无人机航迹规划 |
温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109. | 多目标问题 |
刘丽娜,南新元,石跃飞.改进麻雀搜索算法求解作业车间调度问题[J].计算机应用研究,2021,38(12):3634-3639. | 作业车间调度问题 |
王振东,汪嘉宝,李大海.一种增强型麻雀搜索算法的无线传感器网络覆盖优化研究[J].传感技术学报,2021,34(06):818-828. | 无线传感器网络覆盖优化问题 |
韩统,汤安迪,周欢,徐登武,谢磊.基于LASSA算法的多无人机协同航迹规划方法[J].系统工程与电子技术,2022,44(01):233-241. | 多无人机协同航迹规划问题 |
高兵,郑雅,秦静,邹启杰,汪祖民.基于麻雀搜索算法和改进粒子群优化算法的网络入侵检测算法[J].计算机应用,2022,42(04):1201-1206. | 网络入侵检测 |
张月栋,莫愿斌.改进的麻雀搜索算法及其求解旅行商问题[J].计算机系统应用,2022,31(02):200-206. | 旅行商问题 |
刘耿耿,张丽媛,刘笛,刘能现,傅仰耿,郭文忠,陈国龙,蒋伟进.求解复杂约束优化问题的多策略混合麻雀搜索算法[J/OL].控制与决策:1-9[2022-10-19]. | 约束优化问题 |
参考书籍:范旭,《Python智能优化算法——从原理到代码实现与应用》第一版,电子工业出版社。