当前位置: 首页 > news >正文

最新智能优化算法: 中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法求解23个经典函数测试集,MATLAB代码

中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法由GUO Zhiqing 等人提出,该算法的灵感来自中华穿山甲独特的狩猎行为,包括引诱和捕食行为。
在这里插入图片描述

算法流程如下:

1. 开始
设置算法参数和最大迭代次数:初始化算法所需的参数和最大迭代次数。
计算适应度值并更新初始化:计算初始种群的适应度值,并更新穿山甲的位置 λM​ 和蚂蚁的位置 XA​。
更新当前种群位置和最优个体位置:更新当前种群的位置和最优个体的位置。
2. 迭代过程
2.1 判断是否达到最大迭代次数
如果当前迭代次数 t 小于最大迭代次数 tmax​,则继续迭代;否则,输出穿山甲的新位置 λMnew​​ 及其适应度值,并结束算法。
2.2 计算香气浓度 CM​
使用公式 (9) 到 (14) 计算香气浓度 CM​。
2.3 计算快速下降因子 C1​
使用公式 (28) 计算快速下降因子 C1​。
2.4 计算能量消耗因子 E
使用公式 (24) 计算能量消耗因子 E。
2.5 计算能量波动因子 A1​
使用公式 (23) 计算能量波动因子 A1​。
2.6 计算疲劳指数因子 Fatigue
使用公式 (25) 计算疲劳指数因子 Fatigue。
2.7 计算 Levy 飞行函数步长 Llevy​
使用公式 (29) 和 (30) 计算 Levy 飞行函数的步长 Llevy​。
2.8 计算香气轨迹因子 a
使用公式 (21) 和 (22) 计算香气轨迹因子 a。
2.9 根据香气浓度 CM​ 的不同范围进行不同的操作
2.9.1 如果 CM​≥0.2
计算位置 XA​:使用公式 (19) 和 (20) 计算蚂蚁的位置 XA​。
计算穿山甲的位置 λM​:使用公式 (26) 和 (27) 计算穿山甲的位置 λM​。
更新最优位置 X∗:使用公式 (31) 更新最优位置 X∗。
计算适应度值并检查边界:计算新的适应度值并检查是否超出边界。
判断是否是最优的穿山甲位置:如果是,则更新迭代次数 t=t+1,继续迭代;否则,直接更新迭代次数 t=t+1。
2.9.2 如果 0≤CM​<0.3
搜索和定位阶段:使用公式 (32) 和 (33) 计算穿山甲的位置 λM​。
更新最优位置 X∗:使用公式 (38) 更新最优位置 X∗。
计算适应度值并检查边界:计算新的适应度值并检查是否超出边界。
判断是否是最优的穿山甲位置:如果是,则更新迭代次数 t=t+1,继续迭代;否则,直接更新迭代次数 t=t+1。
2.9.3 如果 0.3≤CM​<0.6
快速接近阶段:使用公式 (34) 和 (35) 计算穿山甲的位置 λM​。
更新最优位置 X∗:使用公式 (38) 更新最优位置 X∗。
计算适应度值并检查边界:计算新的适应度值并检查是否超出边界。
判断是否是最优的穿山甲位置:如果是,则更新迭代次数 t=t+1,继续迭代;否则,直接更新迭代次数 t=t+1。
2.9.4 如果 CM​≥0.6
挖掘和进食阶段:使用公式 (36) 和 (37) 计算穿山甲的位置 λM​。
更新最优位置 X∗:使用公式 (38) 更新最优位置 X∗。
计算适应度值并检查边界:计算新的适应度值并检查是否超出边界。
判断是否是最优的穿山甲位置:如果是,则更新迭代次数 t=t+1,继续迭代;否则,直接更新迭代次数 t=t+1。
3. 结束
输出穿山甲的新位置 λMnew​​ 及其适应度值:当达到最大迭代次数时,输出最终的穿山甲位置及其适应度值,算法结束。

在这里插入图片描述

参考文献:
[1]Zhiqing GUO, Guangwei LIU, and Feng JIANG, Chinese Pangolin Optimizer: A novel bio-inspired metaheuristic for solving optimization problems

二、23个函数介绍

在这里插入图片描述
参考文献:

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码及结果

SearchAgents_no = 100;
Max_iter = 1000;
fn=12;
Function_name=strcat('F',num2str(fn));
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_score,Best_pos,PO_cg_curve]=(SearchAgents_no,Max_iter,lb,ub,dim,fobj);
semilogy(PO_cg_curve,'LineWidth',2)
title(Function_name)
xlabel('迭代次数');
ylabel('适应度值');

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码见下方名片

相关文章:

  • GCD of Subset
  • 设计模式:代理模式
  • [250216] Fastfetch 2.36 版本发布 | Netrunner 25 “Shockworm” 正式发布!
  • 深入学习Linux命令行中的各种替换操作(命令替换、参数替换、进程替换)
  • 计算机网络原理试题三
  • 国产FPGA开发板选择
  • 04性能监控与调优篇(D5_JVM优化)
  • 物联网行业通识:从入门到深度解析
  • GitHub基本操作及Git简单命令
  • Code::Blocks 安装 一
  • 【人工智能】DeepSeek R1可以为我们做什么?
  • 贪吃蛇案例
  • Unity中如何判断URL是否为RTSP或RTMP流
  • 在 Linux 系统中,tc(Traffic Control) QoS 常用命令简介
  • 总线-AXI
  • 二分之一车辆模型研究不同参数下车辆对地面的动载荷和动载系数
  • 每日一题——兑换零钱(一)
  • 【Linux】【进程】epoll内核实现总结+ET和LT模式内核实现方式
  • axios
  • AF3​​​​​​​ get_atom_coords函数解读
  • 汕头违建豪宅“英之园”将强拆,当地:将根据公告期内具体情况采取下一步措施
  • 人民日报评外卖平台被约谈:摒弃恶性竞争,实现行业健康发展
  • 郑培凯:汤显祖的“至情”与罗汝芳的“赤子之心”
  • 习近平同巴西总统卢拉会谈
  • 受贿3501万余元,中石油原董事长王宜林一审被判13年
  • 高适配算力、行业大模型与智能体平台重塑工业城市