170+种优化算法求解11种cec测试函数cec2005/2008/2010/2013/2014/2015/2017/2019/2020/2021/2022(Python代码免费下载)

 目录

引言

实操

参考文献

完整Python代码下载


引言

利用推出python版170+种优化算法求解11种cec测试函数,支持解决:

  1. cec2005:F1-F25, 可选 dim = 10, 30, 50
  2. cec2008:F1-F7,  可选 2 <= dim <= 1000
  3. cec2010:F1-F20, 可选 100 <= dim <= 1000
  4. cec2013:F1-F28, 可选 dim = 2, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
  5. cec2014:F1-F30, 可选 dim = 10, 20, 30, 50, 100
  6. cec2015:F1-F15, 可选 dim = 10, 30
  7. cec2017:F1-F29, 可选 dim = 2, 10, 20, 30, 50, 100
  8. cec2019:F1-F10, 可选 dim: F1=9,F2=16,F3=18,其他=10
  9. cec2020:F1-F10, 可选 dim = 2, 5, 10, 15, 20, 30, 50, 100
  10. cec2021:F1-F10, 可选 dim = 2, 10, 20
  11. cec2022:F1-F12, 可选 dim = 2, 10, 20

实操

首先,需要安装两个强大的工具包mealpy(支持调用170多种优化算法)opfunu(支持调用11种cec测试函数)

pip install mealpy==2.5.3pip install opfunu==1.0.1

其次,准备优化算法四项基本量:变量上限ub,变量下限lb,变量维度dim,目标函数fit_fun,接


fun_name = 'F2' #按需修改
year = '2021'   #按需修改 
func_num = fun_name + year
dim = 20 # 维度,根据cec函数 选择对应维度
'''定义的 cec函数 '''
def cec_fun(x):
    
    funcs = opfunu.get_functions_by_classname(func_num)
    func = funcs[0](ndim = dim)
    F = func.evaluate(x)
    return F
    
''' fit_func->目标函数, lb->下限, ub->上限 '''
problem_dict = {
    "fit_func": cec_fun,
    "lb": opfunu.get_functions_by_classname(func_num)[0](ndim = dim).lb.tolist(), 
    "ub": opfunu.get_functions_by_classname(func_num)[0](ndim = dim).ub.tolist(), 
    "minmax": "min",
}

最后,调用算法测试应用。以鲸鱼优化算法(WOA)和灰狼优化算法(GWO)为例。设置了最大迭代次数epoch=100,种群数量pop_size=50。有两种调用方式,import的方式也不一样。当然,还有其他170多种算法供君使用。

第一种方式可以从mealpy.swarm_based ,mealpy.human_based ,mealpy.math_based等等中import更多的算法。

第二种,直接在get_optimizer_by_name中输入算法对应的名字。似乎第二种方式更便利一些。随后,利用model.solve(problem_dict)求解优化问题。

注意:有些算法输入并不只有(epoch,pop_size)两个输入,还需要查阅mealpy具体的优化算法的定义和输入,依照python的格式灵活使用。


''' 调用优化算法 '''
epoch = 100 #最大迭代次数
pop_size = 50 #种群数量
''' 第一种方式,需:from mealpy.swarm_based import WOA,GWO '''
# woa_model = WOA.OriginalWOA(epoch, pop_size)
# gwo_model = GWO.OriginalGWO(epoch, pop_size)
''' 第二种方式,需:from mealpy import get_optimizer_by_name'''
woa_model = get_optimizer_by_name("OriginalWOA")(epoch, pop_size)
gwo_model = get_optimizer_by_name("OriginalGWO")(epoch, pop_size)

'''求解 cec函数 '''
woa_best_x, woa_best_f = woa_model.solve(problem_dict)
gwo_best_x, gwo_best_f = gwo_model.solve(problem_dict)

绘制收敛曲线:提供了加载收敛曲线的方式model.history.list_global_best_fit,调包即可。


''' 
    绘制适应度曲线
    model.history.list_global_best_fit:适应度曲线
'''
plt.figure
# plt.semilogy(Curve,'r-',linewidth=2)
plt.plot(woa_model.history.list_global_best_fit,'r-',linewidth=2,label = 'WOA')
plt.plot(gwo_model.history.list_global_best_fit,'b-',linewidth=2,label = 'GWO')
plt.xlabel('Iteration')
plt.ylabel('Fitness')
plt.grid()
plt.title('Convergence curve: '+ 'cec' + year + '-' + fun_name + ', Dim=' + str(dim))
plt.legend()
plt.show()

绘制三维函数图:调用自带的opfunu.plot_3d函数,里面参数仅可修改n_space和show的值。绘图时间与n_space值有关,n_space值越大耗费时间越长。show = False时,选择不可视化。


''' 绘制三维函数图 '''
# 仅修改n_space 和 show -> 可视化选择参数
opfunu.plot_3d(opfunu.get_functions_by_classname(func_num)[0](ndim = 2), n_space=500, show = True) 
plt.title('cec' + year + '-' + fun_name)

总结:

1.通过选择fun_name 、year 、dim ,调用11种cec测试函数,500多种优化问题

2. 通过model = get_optimizer_by_name("算法名字")(epoch, pop_size,其他参数)输入对应的算法名字和参数,获取170多种优化算法解决优化问题。

参考文献

@software{thieu_nguyen_2020_3711682,
  author       = {Nguyen Van Thieu},
  title        = {Opfunu: An Open-source Library For Optimization Functions in Numpy},
  year         = 2020,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.3620960},
  url          = {https://doi.org/10.5281/zenodo.3620960.}
}
@article{van2023mealpy,
  title={MEALPY: An open-source library for latest meta-heuristic algorithms in Python},
  author={Van Thieu, Nguyen and Mirjalili, Seyedali},
  journal={Journal of Systems Architecture},
  year={2023},
  publisher={Elsevier},
  doi={10.1016/j.sysarc.2023.102871}
}

@article{van2023groundwater,
  title={Groundwater level modeling using Augmented Artificial Ecosystem Optimization},
  author={Van Thieu, Nguyen and Barma, Surajit Deb and Van Lam, To and Kisi, Ozgur and Mahesha, Amai},
  journal={Journal of Hydrology},
  volume={617},
  pages={129034},
  year={2023},
  publisher={Elsevier},
  doi={10.1016/j.jhydrol.2022.129034}
}

完整Python代码下载

微信搜索并关注-优化算法侠,或扫描下方二维码关注。

一网打尽!170+种优化算法求解11种cec测试函数(附Python代码)

  • 26
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 智能优化算法是一基于计算智能原理和方法的算法,旨在通过优化搜索策略,提高求解问题的效率和准确性。CEC2020测试函数是计算智能领域常用的一组标准测试函数,被广泛用于评估不同优化算法的性能。 对于智能优化算法CEC2020测试函数上的测试,首先需要选择适当的智能优化算法作为测试算法,并确定测试问题的维度和优化目标。然后,将测试算法应用于CEC2020测试函数,通过迭代搜索的过程,找到最优解或接近最优解的解。 在测试过程,需要记录和分析算法的收敛性能、收敛速度、最优解精度等指标。对于CEC2020测试函数的每个函数,可以通过多次运行算法并取平均值的方式进行评估,以消除测试结果的随机性。 至于算法的Matlab实现,可以根据测试算法的原理和步骤,利用Matlab编程语言开发相应的代码。在实现过程,可以利用Matlab提供的向量化运算和优化工具箱,简化编码过程并提高算法效率。同时,为了便于测试和对比不同算法的性能,可以采用统一的接口和数据格式,以便于后续的分析和可视化展示。 综上所述,智能优化算法CEC2020测试函数上的测试能够评估算法的优劣,为算法的应用和改进提供参考。通过Matlab实现测试算法,可以进一步加深对算法原理的理解,并为实际问题的求解提供可行的解决方案。 ### 回答2: 智能优化算法是一基于计算机算法的方法,用于解决复杂问题的优化问题。CEC2020是计算智能领域的一个国际竞赛,用于评估智能优化算法的性能和效果。CEC2020测试函数是一系列经过精心设计的函数,用于模拟真实世界的复杂问题,包括连续优化问题、多模态优化问题等。 智能优化算法CEC2020测试函数上进行测试的目的是评估算法的搜索能力、收敛性能和鲁棒性等指标。通过对多个测试函数的优化结果进行对比和分析,可以评估算法的优劣,并进行参数调整和改进,提升算法的性能。 在Matlab,可以实现智能优化算法来进行CEC2020测试函数的优化。常见的智能优化算法包括遗传算法(GA)、粒子群优化算法(PSO)、蚁群算法(ACO)等。这些算法都有相应的Matlab工具箱可以直接调用。 在实现时,可以定义CEC2020测试函数,并选择适当的智能优化算法和参数进行优化。通过迭代运行算法,并用测试函数的输出值来评估每一代的优化性能。最终,得到一个优化结果。 总之,对智能优化算法CEC2020测试函数上的测试及其Matlab实现,是一项重要任务,可以帮助我们评估和改进智能优化算法的性能,并为解决复杂问题提供有力的工具和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值