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

优化算法改进的三个定性分析实验:收敛行为分析,种群多样性分析和探索开发分析

蛇优化算法是2022年提出的一种新的元启发式算法,发表在一区期刊Knowledge-Based Systems,该算法是一种模仿蛇特殊交配行为的新型智能优化算法。对于每条蛇(雄性/雌性),如果在食物数量足够,温度很低的条件下,就会努力得到最好的伴侣。

本期以蛇优化器Snake Optimizer (SO)为例,在23个基准测试函数上进行定性分析实验,这三个实验可以大大增加论文的说服力和提升文章质量,可以增加录用的概率,同时可以帮助研究者了解算法的特性,方便改进算法。下面我们将逐一介绍这三个实验。(可以参考文献:DMDE: Diversity-maintained multi-trial vector differential evolution algorithm for non-decomposition large-scale global optimization)。

实验一:收敛行为分析(Convergence behavior analysis)

以单峰函数F1和多峰函数F23为例,SO求解不同测试函数的行为通过搜索历史、平均适应度值、轨迹、和收敛曲线4个指标进行评估。该实验由随机分布在二维搜索空间中的30个个体开始,在200次迭代中找到解。下图中第一列给出了测试函数的搜索空间。在第二列(搜索历史)中,用黑点说明了进化过程中个体的运动情况,并用红点表示全局最优解。这些观察结果证明了SO算法能够有效覆盖搜索空间,逼近问题的全局最优解。轨迹度量显示了代表性个体(第一个个体的第一个维度)在用于探索的初始迭代中的突然移动和用于利用搜索空间的最终迭代中的逐渐变化。在第三个度量中,第四列说明了种群的范围和均值,以显示搜索过程中种群的范围。最后,平均适应度显示了所有测试函数上的加速退化适应度值。这一行为表明SO算法能够在迭代一半之前找到有前景的解。

实验二:种群多样性分析 (Population diversity analysis)

计算公式如下。Ic表示每次迭代中总体与质量中心c的离散度,使用下面公式计算,其中参数xid表示迭代t时第i个个体的第d维的值。

​    实验结果如下图:以单峰函数F2和多峰函数F15为例,从单峰函数F1可以看出,种群多样性快速减少,表明算法有较好的开发能力,从多峰函数F23可以看出,种群多样性波动大,并且维持在较高水平,表明算法有较好的全局探索能力。

实验三:探索开发分析(Exploration and exploitation analysis)

公式如下:Divmax为整个迭代的最大多样性,参数xid表示迭代t时第i个个体的第d维的值。

得到的结果绘制在下图中,其中百分比(%)表示进化过程中所有种群的勘探和开发水平。以单峰函数F3和多峰函数F21为例,从单峰函数F3可以看出,开发的比例快速增加,表明算法有较好的开发能力,从多峰函数F21可以看出,探索的比例缓慢下降,表明算法有较好的全局探索能力。

下载后可获得以下内容:

主程序加上了详细中文注释,代码如下:

% 定性分析
clc; % 清空命令窗口
clear; % 清空工作空间
close all; % 关闭所有图形窗口Function_name = 'F21'; % 选择测试函数的名称,可以是 F1 到 F23 中的任意一个
N = 30; % 搜索代理的数量
T = 200; % 最大迭代次数% 载入所选基准函数的详细信息
[lb, ub, dim, fobj] = Get_Functions_details(Function_name);% 运行SO算法,获取优化结果
[Xfood, fval, Convergence_curve, Trajectories, fitness_history, position_history, Exploration, Exploitation, Ic] = SO(N, T, lb, ub, dim, fobj);% 创建一个图形窗口
figure('Position', [39 479 1740 267])% 绘制搜索空间
subplot(1, 5, 1);
func_plot(Function_name);
title('参数空间')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
box on
axis tight% 绘制搜索历史
subplot(1, 5, 2);
hold on
for k1 = 1:size(position_history, 1)for k2 = 1:size(position_history, 2)plot(position_history(k1, k2, 1), position_history(k1, k2, 2), 'o', 'markersize', 5, 'MarkerEdgeColor', 'k', 'markerfacecolor', '#1e90ff');end
end
plot(Xfood(1), Xfood(2), 'o', 'markersize', 10, 'MarkerEdgeColor', 'k', 'markerfacecolor', 'r', 'linewidth', 1);
title('搜索历史')
xlabel('x1')
ylabel('x2')
box on
axis tight% 绘制测试函数曲面
subplot(1, 5, 2);
hold on
func_plot1(Function_name)% 绘制轨迹
subplot(1, 5, 3);
hold on
semilogy(Trajectories(1, :), 'Color', 'g', 'linewidth', 2);
title('轨迹 ')
xlabel('迭代次数')
box on
legend('SO')
axis tight% 绘制平均适应度
subplot(1, 5, 4);
hold on
a = mean(fitness_history);
semilogy(a, 'Color', 'b', 'linewidth', 2);
title('平均适应度 ')
xlabel('迭代次数')
box on
legend('SO')
axis tight% 绘制收敛曲线
subplot(1, 5, 5);
semilogy(Convergence_curve, '-r', 'linewidth', 2);
title('收敛曲线')
xlabel('迭代次数');
ylabel('迄今为止获得的最佳分数');
box on
legend('SO')
axis tight% 创建第二个图形窗口,绘制探索和开发的百分比
figure(2)
plot(Exploration, 'Color', 'c', 'LineWidth', 2)
hold on
plot(Exploitation, 'Color', 'm', 'LineWidth', 2)
xlabel('迭代次数')
ylabel('百分比')
title([Function_name,'-探索和开发'])
legend('SO探索', 'SO开发')% 创建第三个图形窗口,绘制种群多样性
figure(3)
semilogy(Ic, 'Color', 'k', 'LineWidth', 2)
xlabel('迭代次数')
ylabel('种群多样性')
title([Function_name,'-种群多样性'])
legend('SO')

http://www.lryc.cn/news/2413469.html

相关文章:

  • 自制 QQ游戏 连连看 外挂 ~~
  • VMware虚拟机win7安装教程
  • 编码器的使用教程与测速原理
  • 捷克论坛新ip_网络文学,文化出海的新路径
  • 找不到msvcr100.dll如何解决,总结5种有效的方法
  • 六个免费的虚拟主机管理系统
  • 向日葵深度linux,完美使用向日葵远程软件
  • 介绍一个不错的免费国外php空间
  • 表白墙网站手把手搭建(网站搭建的详细教程+保姆级解答)
  • python lable文本换行_Python3 Tkinter基础 Label 显示的文字换行
  • oj大大大大维1000: A+B Problem
  • 2005年中国BBS社区100强
  • C#中DataReader类的使用
  • 芜湖c语言市赛答案,安徽省芜湖市2019-2020学年高二上学期期末考试 数学(文) Word版含答案...
  • IN 和NOT IN,EXISTS 和NOT EXISTS
  • grub4dos命令和grldr引导文件介绍
  • 在win8日历显示农历和节假日
  • 流量分类和标记——class-map方式、CAR方式、PBR方式
  • 数据库保存点播播放历史
  • 暴风酷播云二期配置_暴风播酷云二期 黑群晖
  • Android开发之layout布局+实例
  • 什么是视频编码 编解码技术及压缩技术
  • 推荐三个优秀的国外HTML5网页设计网站
  • 网络安全学习之主机扫描和漏洞扫描
  • 基于flask+vue框架的基于html的校园网设计与实现[开题+论文+程序]-计算机毕设
  • 景安网络快云mysql版本_景安快云数据库使用教程
  • 为列表框控件List Control设置行高
  • 数字电路与逻辑设计——组合逻辑篇
  • 诺基亚/NOKIA 5800软件集
  • linux怎么安装pcie串口卡驱动,pci串口卡驱动是什么接口 pci串口卡驱动安装方法...