最新智能优化算法:中华穿山甲优化(ChinesePangolinOptimizer,CPO)算法求解23个经典函
- 互联网
- 2025-09-09 00:54:03

中华穿山甲优化( 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代码见下方名片
最新智能优化算法:中华穿山甲优化(ChinesePangolinOptimizer,CPO)算法求解23个经典函由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“最新智能优化算法:中华穿山甲优化(ChinesePangolinOptimizer,CPO)算法求解23个经典函”