一、获取代码方式

获取代码方式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期】相关推荐

  1. 【风电功率预测】基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测【含Matlab源码 1314期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [风电功率预测]基于matlab帝国殖民竞争算法优化BP神经网络风电功率预测[含Matlab源码 1314期] ⛄二.帝国殖民竞争算法简 ...

  2. 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...

  3. 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 155期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...

  4. 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1363期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab RRT算法无人机三维 ...

  5. 【物流选址】基于matlab免疫算法求解物流选址问题【含Matlab源码 020期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[物流选址]基于matlab免疫算法求解物流选址问题[含Matlab源码 020期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...

  6. 【A_star三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 446期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[三维路径规划]基于matlab A_star算法无人机三维路径规划[含Matlab源码 446期] 获取代码方式2: 付费专栏Matla ...

  7. 【ACO TSP】基于matlab蚁群算法求解31城市旅行商问题【含Matlab源码 1147期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蚁群算法求解31城市旅行商问题[含Matlab源码 1147期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  8. 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】

    ⛄一.灰狼算法优化最小支持向量机GWO-LSSVM简介 1 算法理论 采用灰狼优化算法的最小二乘支持向量机模型预测时,为避免过拟合现象和检验该模型的有效性,将实证部分主要分为:①基于灰狼优化算法的最小 ...

  9. 【定位问题】RSSI和模拟退火优化粒子群算法求解无线传感器网络定位问题【含Matlab源码 1766期】

    ⛄一.简介 1 引言 随着物联网技术的发展,传感器之间通过通信方式连接在一起,构成了极为庞大的无线传感器网络,这使得传感器在各行各业的应用相当广泛[.然而,因为大规模抛撒的传感器节点无法全部配备价格昂 ...

  10. 【配电网重构】基于matlab粒子群算法33节点配电网重构【含Matlab源码 1829期】

    ⛄一.配电网重构简介 1 配电网重构的数学模型 1.1 配电网重构的目标函数 配电网重构的数学模型实质就是多目标多约束的最优解问题, 配网重构的目标一般由以下几类: (1) 配电网最小网损为目标; ( ...

最新文章

  1. 1043 输出PATest
  2. 图灵2月书讯:书籍,不可分离的生命伴侣
  3. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
  4. Signalr实时通讯
  5. web---基础知识(更新中)
  6. 《系统集成项目管理工程师》必背100个知识点-47质量保证人员(QA)的主要工作...
  7. Winform中设置DevExpress的RadioGroup的items从配置文件中加载
  8. 第27讲:令人抓狂的 JavaScript 混淆技术
  9. Java开发人员的十大戒律
  10. MySQL根据员工姓名所在部门_用一条SQL语句显示所有人员的姓名及所在部门
  11. Mint14体验报告 接近Windows的Linux
  12. [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息
  13. matlab数据归一化代码_深度学习amp;Matlab-LeNet实现图像分类
  14. python语言的官方网站-web2py
  15. java的OutOfMemoryError: PermGen space实战剖析
  16. idea2017破解教程
  17. golang_逃逸分析
  18. ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决
  19. ESP32快速实现3.2英寸TFT LCD中jpeg图像(ILI9341)
  20. 说一说Qpython在Android手机上的应用(二)

热门文章

  1. 端口冲突,可爱的8080
  2. InfoPath参与流程的开发[转帖]
  3. Java-集合第五篇Map集合
  4. [bzoj1055][HAOI2008]玩具取名
  5. Cogs 647. [Youdao2010] 有道搜索框(Trie树)
  6. Spark源码分析之四:Stage提交
  7. 【读书笔记】 多线程程序常见bug
  8. ASP.NET MVC3官方示例Music Store(音乐商店) --简易中文教程
  9. matlab中的显示精度
  10. python opencv 打开相机检测圆点