改进蜣螂算法合集:
多策略改进蜣螂优化--螺旋搜索+最优值引导+反向学习策略(原创)
融合鱼鹰与自适应t分布的蜣螂优化算法(OTDBO)(原创,力荐)
随机游走与纵横交叉的蜣螂优化算法,精品力荐!MATLAB代码(原创,力荐)
改进正弦算法引导的蜣螂优化算法(MSADBO)(文献复现)
融合麻雀追随机制扰动与柯西变异的蜣螂优化算法,历史位置图,平均适应度收敛图一次性全部搞定,MATLAB代码(文献复现)
中科院一区论文复现,改进蜣螂算法,Fuch映射+反向学习+自适应步长+随机差分变异,MATLAB代码(文献复现)
14种混沌映射,python代码,可自由切换,以鲸鱼和蜣螂算法为例,方便应用于所有算法
本期重点就是将上述所有改进蜣螂算法的MATLAB语言改编为Python代码。
Python版本的蜣螂算法全家桶如下:

二级目录为:

所需要的包为:
matplotlib~=3.8.2numpy~=1.26.3scipy~=1.12.0opfunu~=1.0.1
结果展示
利用python强大的opfunu库,集成了CEC2005/2008/2010/2013等11个CEC函数库。
pip install opfunu # 参考文档:https://github.com/thieu1995/opfunu本期文章将改进的蜣螂算法与原始算法在多个CEC函数集上进行对比。并画出函数图像,迭代曲线。这里采用CEC2022展示各算法效果。
改进蜣螂(Fuch映射+反向学习+自适应步长+随机差分变异)
改进蜣螂(Fuch映射+反向学习+自适应步长+随机差分变异)代码链接:Python代码:https://mbd.pub/o/bread/ZZuWkptsMatlab代码:https://mbd.pub/o/bread/mbd-ZZuVlJZv

改进蜣螂(最优解的接受程度+麻雀追随机制+柯西高斯变异)
改进蜣螂(最优解的接受程度+麻雀追随机制+柯西高斯变异)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmpltMatlab代码:https://mbd.pub/o/bread/mbd-ZZiYkply

改进蜣螂(混沌初始化+三角形游走+莱维飞行)
改进蜣螂(混沌初始化+三角形游走+莱维飞行)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmplxMatlab代码:https://mbd.pub/o/bread/mbd-ZJ2VlpZt

改进蜣螂(混沌初始化+改进正弦引导+混合高斯柯西变异)
改进蜣螂(混沌初始化+改进正弦引导+混合高斯柯西变异)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmphvMatlab代码:https://mbd.pub/o/bread/mbd-ZJyVlJZu

改进蜣螂Python(随机游走+纵横交叉)
改进蜣螂Python(随机游走+纵横交叉)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmppqMatlab代码:https://mbd.pub/o/bread/mbd-ZZmclZ5x

改进蜣螂(混沌初始化+鱼鹰算法+t分布)
改进蜣螂(混沌初始化+鱼鹰算法+t分布)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmplvMatlab代码:https://mbd.pub/o/bread/mbd-ZZWTmZ1w

改进蜣螂算法(螺旋搜索+最优值引导+透镜反向学习)
改进蜣螂算法(螺旋搜索+最优值引导+透镜反向学习)代码链接:Python代码:https://mbd.pub/o/bread/ZZuYmphtMatlab代码:https://mbd.pub/o/bread/mbd-ZJ6XmZZy

部分代码展示
import numpy as npfrom matplotlib import pyplot as plt# In[]:import opfunu # 参考:https://github.com/thieu1995/opfunuimport copy # 导入copy模块,用于对象的复制。import math'''适应度函数及维度dim的选择cec函数名字格式:函数名+年份,比如要选择2022的F1函数,func_num = 'F1'+'2022'cec2005:F1-F25, 可选 dim = 10, 30, 50cec2008:F1-F7, 可选 2 <= dim <= 1000cec2010:F1-F20, 可选 100 <= dim <= 1000cec2013:F1-F28, 可选 dim = 2, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100cec2014:F1-F30, 可选 dim = 10, 20, 30, 50, 100cec2015:F1-F15, 可选 dim = 10, 30cec2017:F1-F29, 可选 dim = 2, 10, 20, 30, 50, 100cec2019:F1-F10, 可选 dim: F1=9,F2=16,F3=18,其他=10cec2020:F1-F10, 可选 dim = 2, 5, 10, 15, 20, 30, 50, 100cec2021:F1-F10, 可选 dim = 2, 10, 20cec2022:F1-F12, 可选 dim = 2, 10, 20''''''边界检查函数'''def boundary(pop, lb, ub):# 定义一个边界检查函数,确保种群中的个体不超出预定义的边界。 pop = pop.flatten() lb = lb.flatten() ub = ub.flatten()# 将输入参数扁平化,以便进行元素级操作。# 防止跳出范围,除学习率之外 其他的都是整数 pop = [int(pop[i]) if i > 0 else pop[i] for i in range(lb.shape[0])]# 将除了学习率以外的参数转换为整数。for i in range(len(lb)):if pop[i] > ub[i] or pop[i] < lb[i]:# 检查个体是否超出边界。if i == 0: pop[i] = (ub[i] - lb[i]) * np.random.rand() + lb[i]# 如果是学习率,则在边界内随机选择一个值。else: pop[i] = np.random.randint(lb[i], ub[i])# 对于整数参数,随机选择一个边界内的整数值。return pop# 返回修正后的个体。''' 种群初始化函数 '''def initial(pop, dim, ub, lb):# 定义一个初始化种群的函数。 X = np.zeros([pop, dim])# 创建一个形状为[种群大小, 维度]的零矩阵。for i in range(pop):for j in range(dim): X[i, j] = np.random.rand() * (ub[j] - lb[j]) + lb[j]# 在边界内随机初始化每个个体的每个参数。return X, lb, ub# 返回初始化后的种群及边界。'''计算适应度函数'''def CaculateFitness(X):# 定义一个计算适应度的函数。 pop = X.shape[0]# 获取种群的大小。 fitness = np.zeros([pop, 1])# 创建一个形状为[种群大小, 1]的零矩阵来存储适应度。for i in range(pop): fitness[i] = cec_fun(X[i, :])# 对每个个体调用适应度函数进行计算。return fitness# 返回计算得到的适应度。'''适应度排序'''def SortFitness(Fit):# 定义一个对适应度进行排序的函数。 fitness = np.sort(Fit, axis=0)# 按适应度大小进行排序。 index = np.argsort(Fit, axis=0)# 获取排序后的索引。return fitness, index# 返回排序后的适应度和索引。'''根据适应度对位置进行排序'''def SortPosition(X, index):# 定义一个根据适应度排序位置的函数。 Xnew = np.zeros(X.shape)# 创建一个与X形状相同的零矩阵。for i in range(X.shape[0]): Xnew[i, :] = X[index[i], :]# 根据适应度的排序结果重新排列位置。return Xnew# 返回排序后的位置也可直接购买改进蜣螂算法全家桶
改进蜣螂python代码全家桶:
https://mbd.pub/o/bread/ZZuYmpts
改进蜣螂matlab代码全家桶链接:
https://mbd.pub/o/bread/ZZmVl5hv