文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Matlab实现多目标粘液霉菌算法的示例代码

2024-04-02 19:55

关注

1.概述

多目标粘液霉菌算法(MOSMA),这是最近开发的粘液霉菌算法(SMA)的多目标变体,用于处理工业中的多目标优化问题。最近,为了处理优化问题,已经为优化社区推荐了几种元启发式和进化优化技术。在评估多目标优化(MOO)问题时,这些方法往往受到低质量解的影响,而不是解决识别帕累托最优解的准确估计和增加所有目标的分布的目标函数。SMA方法遵循从实验室实验中粘液霉菌振荡行为中获得的逻辑。与其他成熟的方法相比,SMA算法显示出强大的性能,它是通过使用正负反馈系统结合最佳食物路径而设计的。所提出的MOSMA算法采用相同的底层SMA收敛机制,结合精英非支配排序方法来估计帕累托最优解。作为后验方法,在MOSMA中保持多目标公式,并利用拥挤距离运算符来确保增加所有目标中最佳解决方案的覆盖范围。为了验证和确认MOSMA的性能,考虑了41个不同的案例研究,包括无约束,约束和现实世界的工程设计问题。将MOSMA的性能与多目标共生生物搜索(MOSOS),基于分解的多目标进化算法(MOEA / D)和多目标水循环算法(MOWCA)在不同的性能指标方面进行了比较,例如代际距离(GD),倒置代际距离(IGD),最大传播(MS),间距和运行时。仿真结果验证了所提算法在实现线性、非线性、连续和离散帕累托最优前沿等多目标问题高质量解方面的优势。结果表明了所提算法在解决复杂的多目标问题方面的有效性。

2.算法过程

3.数值实验

4.Matlab代码实现

%%  (ZDT3)
function f = zdt3 (x)
% 两个目标函数
% 变量数目是 30. x [0,1]
f = [];
n=length(x);
g=1+9*sum(x(2:n))/(n-1);
f(1)=x(1);
f(2)=1-sqrt(x(1)/g)-(x(1)/g)*sin(10*pi*x(1));
%%===MOSMA:多目标粘液霉菌算法=====
 
%% 目标函数
% 目标函数描述包含了有关目标函数的信息。M为目标空间的维数,D为决策变量空间的维数,
% LB和UB为决策变量空间中变量的取值范围。
% 用户必须使用决策变量定义目标函数。务必编辑功能‘评估_目标',以适应您的需要。
clc
clear all
D = 30; % 决策变量数目
M = 2; % 目标函数的个数
K=M+D;
LB = ones(1, D).*0; %  LB - 表示每个决策变量的最小值的十进制值的向量。
UB = ones(1, D).*1; % UB - 决策变量的最大可能值向量。
GEN = 200;  % 设置最大生成数
ecosize = 200;      % 种群数量 (NP)
ishow = 10;
%% 开始进化过程
Pareto = MOSMA(D,M,LB,UB,ecosize,GEN,ishow);
Obtained_Pareto= Pareto(:,D+1:D+M); % extract data to plot
Obtained_Pareto=sortrows(Obtained_Pareto,2);
True_Pareto=load('ZDT3.txt');
%% 可视化
%% =========两个目标函数时======================
if M == 2
    plot(Obtained_Pareto(:,1),Obtained_Pareto(:,2),'o','LineWidth',2,...
        'MarkerEdgeColor','r','MarkerSize',2);
    hold on
    plot(True_Pareto(:,1),True_Pareto(:,2),'k'); 
    title('采用MOSMA算法求解Pareto最优解集');
    legend('MOSMA');
    xlabel('F_1');
    ylabel('F_2');
%% =====3个目标函数时==========================
elseif M == 3   
    plot3(Obtained_Pareto(:,1),Obtained_Pareto(:,2),Obtained_Pareto(:,3),'o','LineWidth',2,...
        'MarkerEdgeColor','r','MarkerSize',2);
    hold on
    plot3(Obtained_Pareto(:,1),Obtained_Pareto(:,2),Obtained_Pareto(:,3),'.','LineWidth',2,...
        'MarkerEdgeColor','k','MarkerSize',6);
    title('采用MOSMA算法求解Pareto最优解集');
    legend('MOSMA');
    xlabel('F_1');
    ylabel('F_2');
    zlabel('F_3');
end
%%  Metric Value
M_IGD=IGD(Obtained_Pareto,True_Pareto);
M_GD=GD(Obtained_Pareto,True_Pareto);
M_HV=HV(Obtained_Pareto,True_Pareto);
M_Spacing=Spacing(Obtained_Pareto,True_Pareto);
M_Spread=Spread(Obtained_Pareto,True_Pareto);
M_DeltaP=DeltaP(Obtained_Pareto,True_Pareto);
display(['The IGD Metric obtained by MOSMA is     : ', num2str(M_IGD)]);
display(['The GD Metric obtained by MOSMA is      : ', num2str(M_GD)]);
display(['The HV Metric obtained by MOSMA is      : ', num2str(M_HV)]);
display(['The Spacing Metric obtained by MOSMA is : ', num2str(M_Spacing)]);
display(['The Spread Metric obtained by MOSMA is  : ', num2str(M_Spread)]);
display(['The DeltaP Metric obtained by MOSMA is  : ', num2str(M_DeltaP)]);

以上就是基于Matlab实现多目标粘液霉菌算法的示例代码的详细内容,更多关于Matlab多目标粘液霉菌算法的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯