【MOSMA】基于粘菌算法求解多目标优化问题附matlab代码

news2024/10/7 16:24:56

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

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

⛄ 部分代码

%% Multiple Objective Slime Mould Algorithm (MOSMA)

% M. Premkumar, P. Jangir, R. Sowmya, H. H. Alhelou, A. A. Heidari and H. Chen, 

% "MOSMA: Multi-objective Slime Mould Algorithm Based on Elitist Non-dominated Sorting," 

% in IEEE Access, doi: 10.1109/ACCESS.2020.3047936.

%% Objective Function

% The objective function description contains information about the

% objective function. M is the dimension of the objective space, D is the

% dimension of decision variable space, LB and UB are the

% range for the variables in the decision variable space. User has to

% define the objective functions using the decision variables. Make sure to

% edit the function 'evaluate_objective' to suit your needs.

clc

clear all

close all

D = 30; % Number of decision variables

M = 2; % Number of objective functions

K=M+D;

LB = ones(1, D).*0; %  LB - A vector of decimal values which indicate the minimum value for each decision variable.

UB = ones(1, D).*1; % UB - Vector of maximum possible values for decision variables.

GEN = 200;  % Set the maximum number of generation (GEN)

ecosize = 200;      % Set the population size (NP)

ishow = 10;

%% Start the evolution process

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');

%% Plot data

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('Optimal Solution Pareto Set using MOSMA');

    legend('MOSMA');

    xlabel('F_1');

    ylabel('F_2');

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('Optimal Solution Pareto Set using MOSMA');

    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)]);

⛄ 运行结果

⛄ 参考文献

M. Premkumar, Pradeep Jangir, R. Sowmya, Hassan Haes Alhelou, Ali Asghar Heidari, and Huiling Chen, "MOSMA: Multi-Objective Slime Mould Algorithm Based on Elitist Non-Dominated Sorting," IEEE Access, vol. 9, pp. 3229-3248, 2021.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java版oj】day02倒置字符串

目录 一、原题再现 二、问题分析 三、完整代码 一、原题再现 倒置字符串_牛客题霸_牛客网 描述 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例&#x…

web前端期末大作业 html+css+javascript+jquery+bootstarp响应式鲜花售卖网站16页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

最新最全面的Java面试题及答案(212道)

文章目录一. Java 基础1. JDK 和 JRE 有什么区别?2. 和 equals 的区别是什么?3. 两个对象的 hashCode() 相同,则equals() 也一定为true,对吗?4. final 在 Java 中有什么作用?5. Java 中的 Math. round(-1.…

【图像分割】基于Kmean聚类 分水岭、oust、粒子群算法优化脂肪肝图像分割附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

OPT(奥普特)工控机新品上市,产品矩阵再扩大

近日,OPT(奥普特)发布工控机新品,进一步扩展产品矩阵,为制造业数字化转型提供更为全面的机器视觉产品和服务。 OPT(奥普特)上市的工控机共有两大系列,分别是3U桌面式和4U上架式的设…

【金猿人物展】映盛中国CEO谭运猛博士:数字化逆向重构将会占据行业红利成为新宠...

‍谭运猛本文由映盛中国创始人兼CEO谭运猛撰写并投递参与“数据猿年度金猿策划活动——2022大数据产业趋势人物榜单及奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年伴随着新冠疫情的反复和经济下行的持续影响,各行各业都面临着数字化转型的行…

【每日小技巧】如果Tomcat的端口被占用,怎么处理该报错

苦恼的问题:当我们在用Tomcat时,发现我们要用的端口被其他程序占用了,如图: 解决办法: ①winR,输入cmd,打开命令行 输入命令netstat -ano,列出所有的端口号使用情况 ②查看PID&#…

矩阵理论复习(四)

2003年试题 向量二范数也具有酉不变性 Schur定理的应用 向量范数的判定 向量范数的比较 酉矩阵的M-P广义逆就为该矩阵的转置 列满秩矩阵的左逆 一个矩阵乘以其逆矩阵等于单位矩阵,单位矩阵的算子范数均为1,算子范数的相容性 正规矩阵的性质 …

嵌入式:ARM的工作模式与寄存器组织

文章目录特权模式处理器启动时的模式转换图ARM的寄存器组织ARM寄存器组成概述ARM状态下的寄存器组织Thumb状态下的寄存器组织CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示特权模式 除用户模式外的其他6种模式称为特权模式。 特权模式…

nodejs基于vue技术的小饰品购物商城网站

开发语言:nodejs 框架:Express 数据库:mysql 数据库工具:Navicat11 开发软件:VS code/HBuilder X 浏览器:谷歌浏览器 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本…

【C++常用容器】STL基础语法学习queue容器

目录 ●queue的基本概念 ●queue常用接口 ●构造函数 ●赋值操作 ●数据存取 ●大小操作 ●queue的基本概念 简要介绍:queue是一种先进先出的的数据结构,它有两个出口。队列容器允许从一端新增元素,从另一端移除元素。队列中只有队…

如何批量查询谷歌PR权重是多少?谷歌PR权重怎么批量查询

权重是就是网站在搜索引擎心目中的位置,如果一个网站在搜索引擎心目中的位置高的话,当然容易获得较好的排名,今天不是来跟大家聊如何提升网站权重的,而是教大家如何去看一个网站的权重,做网站的朋友都要知道要做关键词…

RadSystems Studio构建CRUD操作程序

RadSystems Studio构建CRUD操作程序 RadSystems Studio是一个快节奏的开发环境,不需要专门的编程。该软件提供了数字解决方案和组件,以尽快在API和UI中构建程序,只需少量代码,甚至无需编写。该软件减少了编写时间并改进了开发过程…

win10 安装配置nvm

第一步:下载安装包 链接:https://pan.baidu.com/s/1B_gc9DnM8s3utcd_DB1H4Q?pwdxm03 提取码:xm03 第二步:安装nvm 第三步:配置nvm setting文件加上淘宝镜像 node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.or…

【python】os.system() os.popen() 在 python 执行 cmd 指令

先说总结 os.system:获取程序执行命令的返回值。 os.popen: 获取程序执行命令的输出结果。 commands:获取返回值和命令的输出结果。1 os.system() 这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令&#x…

作业-12.9【手动实现封装栈、队列模板类】

代码实现 #include <iostream> #include <queue> using namespace std; template <typename T> class My_queues { private: //队列数据存储空间 T *data; //头下标 int head; //尾下标 int tail; int max_len; public: //无参构造函数 My_queues():data(NUL…

信息搜集方法总结

文章目录前言一、域名和IP信息搜集&#xff08;一&#xff09;判断是否使用CDN&#xff08;二&#xff09;存在CND时查找真实IP&#xff08;三&#xff09;WHOIS信息查询&#xff08;四&#xff09;备案信息查询&#xff08;五&#xff09;给定IP反查其他信息&#xff08;六&am…

实现微信通知提醒的方法总结

一、使用企业微信群机器人接口效果&#xff1a;微信群消息通知优点&#xff1a;后台运行不受干扰性能稳定、群内多人同时接收通知、无需登录微信、支持微信图文消息缺点&#xff1a;只适用于企业微信群、有发送频率限制使用方法&#xff1a; 1、拉一个企业微信群&#xff0c;在…

TACL 2022 | GAL:合成文本在自然语言处理任务中的应用

©PaperWeekly 原创 作者 | 何玄黎单位 | 伦敦大学学院&#xff08;UCL&#xff09;研究方向 | 自然语言处理论文标题&#xff1a;Generate, Annotate, and Learn: NLP with Synthetic Text收录会议&#xff1a;TACL 2022论文链接&#xff1a;https://arxiv.org/abs/2106.…

无需注册试用ChatGPT

无需注册试用ChatGPT OpenAI账号有诸多限制&#xff0c;包括地区限制&#xff0c;手机号注册等&#xff0c;参考ChatGPT注册试用全攻略。不开全局代理&#xff0c;还会出现Not available OpenAIs services are not available in your country. 所以有没有什么途径&#xff0c;…