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

最新智能优化算法: 中华穿山甲优化( 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代码见下方名片


http://www.kler.cn/a/551993.html

相关文章:

  • Scikit-Learn系列:BaseEstimator类实践指南
  • 用户管理中心---前端页面设计测试登录功能
  • js闭包,跨域
  • UDP与TCP
  • 神经网络实验——MLP
  • IM 即时通讯系统-06-聊一聊 IM 要如何保证扩展性?
  • 进程的延伸——线程(上)
  • 利用爬虫获取淘宝商品描述:实战案例指南
  • 大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?
  • 功能测试与接口测试详解
  • 网页五子棋——匹配模块
  • 基于暗通道先验的图像去雾算法解析与实现
  • 百度地图接入DeepSeek技术解析:AI如何重塑地图搜索体验?
  • 远离手机APP——数字排毒,回归生活本真
  • 深度学习-1.简介
  • 基于指纹识别技术的考勤打卡设计与实现(论文+源码)
  • Day4:强化学习之Qlearning走迷宫
  • WPF的Prism框架的使用
  • XML Schema anyAttribute 元素详解
  • cmake:定位Qt的ui文件