基于蛇群算法求解多目标优化问题附matlab代码MOSO

简介: 基于蛇群算法求解多目标优化问题附matlab代码MOSO

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

近年来,在工程和科学领域引入了几种元启发式算法来解决现实生活中的优化问题。在这项研究中,提出了一种新的受自然启发的元启发式算法,称为蛇优化器 (SO),以解决模仿蛇特殊交配行为的各种优化任务。如果存在的食物量足够且温度低,每条蛇(雄性/雌性)都会争夺最佳伴侣。这项研究在数学上模拟和模拟了觅食和繁殖行为和模式,以提出一种简单有效的优化算法。为了验证所提出方法的有效性和优越性,SO 在 29 个无约束的进化计算大会 (CEC) 2017 基准函数和四个受约束的现实世界工程问题上进行了测试。将 SO 与其他 9 种著名的和新开发的算法进行比较,例如线性种群大小减少-差分进化的成功历史适应 (L-SHADE)、与 L-SHADE 结合的集成正弦曲线 (LSHADE-EpSin)、协方差矩阵适应进化策略 (CMAES)、土狼优化算法 (COA)、蛾火焰优化、哈里斯鹰优化器、热交换优化、蚱蜢优化算法和鲸鱼优化算法。实验结果和统计比较证明了 SO 在不同景观上的勘探开发平衡和收敛曲线速度的有效性和效率。

⛄ 部分代码

close all;

clear ;

clc;

%%

% TestProblem测试问题说明:

%一共46个多目标测试函数,详情如下:

%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6

%6-12:DTLZ1-DTLZ7

%13-22:wfg1-wfg10

%23-32:uf1-uf10

%33-42:cf1-cf10

%43-46:Kursawe、Poloni、Viennet2、Viennet3

%47 盘式制动器设计(工程应用) 温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109.

%%

TestProblem=1;%1-47

MultiObj = GetFunInfo(TestProblem);

MultiObjFnc=MultiObj.name;%问题名

% Parameters

params.Np = 200;        % Population size 种群大小

params.Nr = 300;        % Repository size 外部存档中最大数目,可适当调整大小,越大,最终获得的解数目越多

params.maxgen =300;    % Maximum number of generations 最大迭代次数

params.ngrid = 30;      % Number of grids in each dimension

params.maxvel = 5;      % Maxmium vel in percentage



% MOSO

REP = MOSO(params,MultiObj);

%% 画结果图

figure(2)

if(size(REP.pos_fit,2)==2)

   h_rep = plot(REP.pos_fit(:,1),REP.pos_fit(:,2),'ok'); hold on;

      if(isfield(MultiObj,'truePF'))

           h_pf = plot(MultiObj.truePF(:,1),MultiObj.truePF(:,2),'.r'); hold on;

           legend('MOSO','TruePF');

      else

          legend('MOSO');

      end


       grid on; xlabel('f1'); ylabel('f2');

end

if(size(REP.pos_fit,2)==3)

   h_rep = plot3(REP.pos_fit(:,1),REP.pos_fit(:,2),REP.pos_fit(:,3),'ok'); hold on;

     if(isfield(MultiObj,'truePF'))

           h_pf = plot3(MultiObj.truePF(:,1),MultiObj.truePF(:,2),MultiObj.truePF(:,3),'.r'); hold on;

           legend('MOSO','TruePF');

     else

         legend('MOSO');

     end

       grid on; xlabel('f1'); ylabel('f2'); zlabel('f3');

end

title(MultiObjFnc)

Obtained_Pareto=REP.pos_fit;

if(isfield(MultiObj,'truePF'))%判断是否有参考的PF

True_Pareto=MultiObj.truePF;

%%  Metric Value

% ResultData的值分别是IGD、GD、HV、Spacing  (HV越大越好,其他指标越小越好)

ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)];

else

   %计算每个算法的Spacing,Spacing越小说明解集分布越均匀

   ResultData=Spacing(Obtained_Pareto);%计算的Spacing

end

%%

% Display info

disp('Repository fitness values are stored in REP.pos_fit');

disp('Repository particles positions are store in REP.pos');



   

⛄ 运行结果

⛄ 参考文献

[1]黄从智, 李卓勇. 一种基于改进多目标蛇群优化算法的超超临界机组协调控制系统节能优化方法:.

[2]李金璐. 一种基于蛇优化算法的微电网多目标优化配置方法:.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
13天前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
25天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
28 3
|
24天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
1月前
|
搜索推荐
插入排序算法的讲解和代码
【10月更文挑战第12天】插入排序是一种基础的排序算法,理解和掌握它对于学习其他排序算法以及数据结构都具有重要意义。你可以通过实际操作和分析,进一步深入了解插入排序的特点和应用场景,以便在实际编程中更好地运用它。
|
30天前
|
缓存 分布式计算 监控
优化算法和代码需要注意什么
【10月更文挑战第20天】优化算法和代码需要注意什么
18 0
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
23 0
|
2月前
|
机器学习/深度学习 存储 算法
经典算法代码
这段代码展示了多个经典算法,包括:穷举法解决“百钱买百鸡”问题;递推法计算“猴子吃桃”问题;迭代法求解斐波那契数列及折纸高度超越珠峰的问题。同时,还提供了希尔排序算法实现及披萨票务订购系统和汉诺塔问题的链表存储解决方案。每部分通过具体案例解释了算法的应用场景与实现方法。
31 3
|
3月前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
|
3月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
44 0
下一篇
无影云桌面