【优化算法】多目标粘菌算法(MOSMA)【含Matlab源码 1597期】
一、获取代码方式
获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
获取代码方式2:
完整代码已上传我的资源:【优化算法】多目标粘菌算法(MOSMA)【含Matlab源码 1597期】
备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、部分源代码
%% Multiple Objective Slime Mould Algorithm (MOSMA)%% 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
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 == 2plot(Obtained_Pareto(:,1),Obtained_Pareto(:,2),'o','LineWidth',2,...'MarkerEdgeColor','r','MarkerSize',2);hold onplot(True_Pareto(:,1),True_Pareto(:,2),'k'); title('Optimal Solution Pareto Set using MOSMA');legend('MOSMA');xlabel('F_1');ylabel('F_2');
elseif M == 3plot3(Obtained_Pareto(:,1),Obtained_Pareto(:,2),Obtained_Pareto(:,3),'o','LineWidth',2,...'MarkerEdgeColor','r','MarkerSize',2);hold onplot3(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)]);
function [Score,PopObj] = HV(PopObj,PF)
% <metric> <max>
% Hypervolume%% Normalize the population according to the reference point set[N,M] = size(PopObj);fmin = min(min(PopObj,[],1),zeros(1,M));fmax = max(PF,[],1);PopObj = (PopObj-repmat(fmin,N,1))./repmat((fmax-fmin)*1.1,N,1);PopObj(any(PopObj>1,2),:) = [];% The reference point is set to (1,1,...)RefPoint = ones(1,M);if isempty(PopObj)Score = 0;elseif M < 4% Calculate the exact HV valuepl = sortrows(PopObj);S = {1,pl};for k = 1 : M-1S_ = {};for i = 1 : size(S,1)Stemp = Slice(cell2mat(S(i,2)),k,RefPoint);for j = 1 : size(Stemp,1)temp(1) = {cell2mat(Stemp(j,1))*cell2mat(S(i,1))};temp(2) = Stemp(j,2);S_ = Add(temp,S_);endendS = S_;endScore = 0;for i = 1 : size(S,1)p = Head(cell2mat(S(i,2)));Score = Score + cell2mat(S(i,1))*abs(p(M)-RefPoint(M));endelse% Estimate the HV value by Monte Carlo estimationSampleNum = 1000000;MaxValue = RefPoint;MinValue = min(PopObj,[],1);Samples = unifrnd(repmat(MinValue,SampleNum,1),repmat(MaxValue,SampleNum,1));if gpuDeviceCount > 0% GPU accelerationSamples = gpuArray(single(Samples));PopObj = gpuArray(single(PopObj));endfor i = 1 : size(PopObj,1)drawnow();domi = true(size(Samples,1),1);m = 1;while m <= M && any(domi)domi = domi & PopObj(i,m) <= Samples(:,m);m = m + 1;endSamples(domi,:) = [];endScore = prod(MaxValue-MinValue)*(1-size(Samples,1)/SampleNum);end
end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
【优化算法】多目标粘菌算法(MOSMA)【含Matlab源码 1597期】相关推荐
- 【风电功率预测】基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测【含Matlab源码 1314期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [风电功率预测]基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测[含Matlab源码 1314期] ⛄二.帝国殖民竞争算法简 ...
- 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...
- 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...
- 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...
- 【物流选址】基于matlab免疫算法求解物流选址问题【含Matlab源码 020期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[物流选址]基于matlab免疫算法求解物流选址问题[含Matlab源码 020期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...
- 【A_star三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 446期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[三维路径规划]基于matlab A_star算法无人机三维路径规划[含Matlab源码 446期] 获取代码方式2: 付费专栏Matla ...
- 【ACO TSP】基于matlab蚁群算法求解31城市旅行商问题【含Matlab源码 1147期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蚁群算法求解31城市旅行商问题[含Matlab源码 1147期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...
- 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】
⛄一.灰狼算法优化最小支持向量机GWO-LSSVM简介 1 算法理论 采用灰狼优化算法的最小二乘支持向量机模型预测时,为避免过拟合现象和检验该模型的有效性,将实证部分主要分为:①基于灰狼优化算法的最小 ...
- 【定位问题】RSSI和模拟退火优化粒子群算法求解无线传感器网络定位问题【含Matlab源码 1766期】
⛄一.简介 1 引言 随着物联网技术的发展,传感器之间通过通信方式连接在一起,构成了极为庞大的无线传感器网络,这使得传感器在各行各业的应用相当广泛[.然而,因为大规模抛撒的传感器节点无法全部配备价格昂 ...
- 【配电网重构】基于matlab粒子群算法33节点配电网重构【含Matlab源码 1829期】
⛄一.配电网重构简介 1 配电网重构的数学模型 1.1 配电网重构的目标函数 配电网重构的数学模型实质就是多目标多约束的最优解问题, 配网重构的目标一般由以下几类: (1) 配电网最小网损为目标; ( ...
最新文章
- 1043 输出PATest
- 图灵2月书讯:书籍,不可分离的生命伴侣
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
- Signalr实时通讯
- web---基础知识(更新中)
- 《系统集成项目管理工程师》必背100个知识点-47质量保证人员(QA)的主要工作...
- Winform中设置DevExpress的RadioGroup的items从配置文件中加载
- 第27讲:令人抓狂的 JavaScript 混淆技术
- Java开发人员的十大戒律
- MySQL根据员工姓名所在部门_用一条SQL语句显示所有人员的姓名及所在部门
- Mint14体验报告 接近Windows的Linux
- [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息
- matlab数据归一化代码_深度学习amp;Matlab-LeNet实现图像分类
- python语言的官方网站-web2py
- java的OutOfMemoryError: PermGen space实战剖析
- idea2017破解教程
- golang_逃逸分析
- ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决
- ESP32快速实现3.2英寸TFT LCD中jpeg图像(ILI9341)
- 说一说Qpython在Android手机上的应用(二)
热门文章
- 端口冲突,可爱的8080
- InfoPath参与流程的开发[转帖]
- Java-集合第五篇Map集合
- [bzoj1055][HAOI2008]玩具取名
- Cogs 647. [Youdao2010] 有道搜索框(Trie树)
- Spark源码分析之四:Stage提交
- 【读书笔记】 多线程程序常见bug
- ASP.NET MVC3官方示例Music Store(音乐商店) --简易中文教程
- matlab中的显示精度
- python opencv 打开相机检测圆点