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

目录
  • 1.概述
  • 2.算法过程
  • 3.数值实验
  • 4.Matlab代码实现

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多目标粘液霉菌算法的资料请关注我们其它相关文章!

(0)

相关推荐

  • 基于Matlab实现嗅觉优化算法的示例代码

    目录 1.概述 2.37 个 CEC 基准测试函数代码 3.F1 Matlab代码仿真 1.概述 嗅觉剂优化是一种新颖的优化算法,旨在模仿气味分子源尾随的药剂的智能行为.该概念分为三个阶段(嗅探,尾随和随机)是独特且易于实现的.此上传包含 SAO 在 37 个 CEC 基准测试函数上的实现. 2.37 个 CEC 基准测试函数代码 function [lb,ub,dim,fobj] = Select_Function(F) switch F case 'F1' %Admijan fobj = @

  • 基于Matlab实现野狗优化算法的示例代码

    目录 1.概述 2.捕食过程的数学模型 2.1 种群初始化 2.2 群体攻击过程 2.3 迫害攻击过程 2.4 野狗的存活率 3.Matlab代码实现 3.1 代码 3.2 结果 1.概述 野狗优化算法(Dingo Optimization Algorithm, DOA)模仿澳大利亚野狗的社交行为.DOA算法的灵感来源于野狗的狩猎策略,即迫害攻击.分组策略和食腐行为.为了提高该方法的整体效率和性能,在DOA中制定了三种与四条规则相关联的搜索策略,这些策略和规则在搜索空间的强化(开发)和多样化(探

  • Matlab实现遗传算法的示例详解

    目录 1算法讲解 1.1何为遗传算法 1.2遗传算法流程描述 1.3关于为什么要用二进制码表示个体信息 1.4目标函数值与适应值区别 1.5关于如何将二进制码转化为变量数值 1.6关于代码改进 2MATLAB自带ga函数 2.1问题描述 2.2自带函数使用 3自编遗传算法各部分代码及使用 3.1代码使用 3.2Genetic1--主函数 3.3PI(PopulationInitialize)--产生初始种群 3.4Fitness--计算目标函数值 3.5FitnessF--计算适应值 3.6Tr

  • 基于Matlab实现鲸鱼优化算法的示例代码

    目录 1.鲸鱼优化算法建模 1.1 包围猎物 1.2 螺旋狩猎 1.3 搜索猎物 1.4 算法流程图 2.Matlab代码实现 2.1 结果 2.2 代码 1.鲸鱼优化算法建模 鲸鱼优化算法(WOA)是澳大利亚学者Mirjaili等于2016年提出的群体智能优化算法,根据座头鲸的捕猎行为实现优化搜索的目的.其中,每个鲸鱼可以看作一个粒子,每个粒子作为不同的决策变量.WOA的实现过程主要包括包围猎物.螺旋狩猎和随机搜索3个阶段,其数学模型如下: 1.1 包围猎物 1.2 螺旋狩猎 1.3 搜索猎物

  • 利用Matlab实现迭代适应点算法

    目录 1.算法描述 2.工具函数 3.函数调用 4.优势与不足 道格拉斯-普克算法(Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法.迭代适应点算法.分裂与合并算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法.它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定. 1.算法描述 1.在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离. 2.选其最大者与阈值相比较,若大于阈值,则离该直线距离最大的点保留,否则将直线两端点间各点全部舍去.

  • Python和Matlab实现蝙蝠算法的示例代码

    目录 1前言 2 蝙蝠算法原理细讲 3 详细步骤 4Python实现 4.1代码 4.2结果 5Matlab实现 5.1 代码 5.2 结果 5.3 展望 1 前言 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法.该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度.该算法具有实现简单.参数少等特点. 该算法主要用于目标函数寻优,基于蝙蝠种群利用产生的声波搜索猎物和控制飞行方向的特征来实现

  • Python&Matlab实现灰狼优化算法的示例代码

    目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物 2.3 狩猎 2.4 攻击猎物 2.5 寻找猎物 3 实现步骤及程序框图 3.1 步骤 3.2 程序框图 4 Python代码实现 5 Matlab实现 1 灰狼优化算法基本思想 灰狼优化算法是一种群智能优化算法,它的独特之处在于一小部分拥有绝对话语权的灰狼带领一群灰狼向猎物前进.在了解灰狼优化算法的特点之前,我们有必要了解灰狼群中的等级制度. 灰狼群一般分为4个等级:处于第一等级的灰狼用α表示,处于第

  • Python 使用Opencv实现目标检测与识别的示例代码

    在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别.后者是在前者的基础上进一步完善. 在本章中,我们使用HOG算法,HOG和SIFT.SURF同属一种类型的描述符.功能代码如下: import cv2 def is_inside(o, i): ox, oy, ow, oh = o ix, iy, iw, ih = i # 如果符合条件,返回True,否则返回False return ox > ix and oy > iy and ox + ow < ix + iw and o

  • Java实现8种排序算法的示例代码

    冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次数,也是冒泡的结果位置下标,5个数组循环5次 for (int i = 0; i < a.length; i++) { //从最后向前面两两对比,j是比较中下标大的值 for (int j = a.length - 1; j > i; j--) { //让小的数字排在前面 if (a[j] <

  • JAVA用递归实现全排列算法的示例代码

    求一个n阶行列式,一个比较简单的方法就是使用全排列的方法,那么简述以下全排列算法的递归实现. 首先举一个简单的例子说明算法的原理,既然是递归,首先说明一下出口条件.以[1, 2]为例 首先展示一下主要代码(完整代码在后面),然后简述 //对数组array从索引为start到最后的元素进行全排列 public void perm(int[]array,int start) { if(start==array.length) { //出口条件 for(int i=0;i<array.length;i

  • 基于原生JS封装的Modal对话框插件的示例代码

    基于原生JS封装Modal对话框插件,具体内容如下所示: 原生JS封装Modal对话框插件,个人用来学习原理与思想,只有简单的基本框架的实现,可在此基础上添加更多配置项 API配置 //基本语法 let modal = ModalPlugin({ //提示的标题信息 title:'系统提示', //内容模板 字符串 /模板字符串/DOM元素对象 template:null, //自定义按钮信息 buttons:[{ //按钮文字 text:'确定', click(){ //this:当前实例 }

  • Android多边形区域递归种子填充算法的示例代码

    平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界(也可以是没有边界,只是给出指定颜色),要求将边界范围内的所有象素单元都修改成指定的颜色(也可能是图案填充).区域填充中最常用的是多边形填色,本文中我们就讨论几种多边形区域填充算法. 一.种子填充算法(Seed Filling) 如果要填充的区域是以图像元数据方式给出的,通常使用种子填充算法(Seed Filling)进行区域填充.种子填充算法需要给出图像数据的区域,以及区域内的一个点,这种算法比较适合人机交互方式

  • C++实现顺序排序算法简单示例代码

    本文实例讲述了最直接的顺序排序法VC++示例代码,还记得以前上学时候这是计算机的必考题,而且在排序算法中,顺序排序似乎是最简单的了,也是最容易掌握的.现在列出来让大家重新回顾一下! 具体代码如下: //顺序排序 void InsertSort(int r[], int n){ for (int i=2; i<n; i++){ r[0]=r[i]; //设置哨兵 for (int j=i-1; r[0]<r[j]; j--) //寻找插入位置 r[j+1]=r[j]; //记录后移 r[j+1]

  • python 实现A*算法的示例代码

    A*作为最常用的路径搜索算法,值得我们去深刻的研究.路径规划项目.先看一下维基百科给的算法解释:https://en.wikipedia.org/wiki/A*_search_algorithm A *是最佳优先搜索它通过在解决方案的所有可能路径(目标)中搜索导致成本最小(行进距离最短,时间最短等)的问题来解决问题. ),并且在这些路径中,它首先考虑那些似乎最快速地引导到解决方案的路径.它是根据加权图制定的:从图的特定节点开始,它构造从该节点开始的路径树,一次一步地扩展路径,直到其一个路径在预定

  • 用python实现k近邻算法的示例代码

    K近邻算法(或简称kNN)是易于理解和实现的算法,而且是你解决问题的强大工具. 什么是kNN kNN算法的模型就是整个训练数据集.当需要对一个未知数据实例进行预测时,kNN算法会在训练数据集中搜寻k个最相似实例.对k个最相似实例的属性进行归纳,将其作为对未知实例的预测. 相似性度量依赖于数据类型.对于实数,可以使用欧式距离来计算.其他类型的数据,如分类数据或二进制数据,可以用汉明距离. 对于回归问题,会返回k个最相似实例属性的平均值.对于分类问题,会返回k个最相似实例属性出现最多的属性. kNN

  • Java实现高效随机数算法的示例代码

    前言 事情起源于一位网友分享了一个有趣的面试题: 生成由六位数字组成的ID,要求随机数字,不排重,不可自增,且数字不重复.ID总数为几十万. 初次解答 我一开始想到的办法是 生成一个足够大的ID池(其实就是需要多少就生成多少) 对ID池中的数字进行随机排序 依次消费ID池中的数字 可惜这个方法十分浪费空间,且性能很差. 初遇梅森旋转算法 后面咨询了网友后得知了一个高效的随机数算法:梅森旋转(Mersenne Twister/MT).通过搜索资料得知: 梅森旋转算法(Mersenne twiste

  • Angularjs实现分页和分页算法的示例代码

    对于大多数web应用来说显示项目列表是一种很常见的任务.通常情况下,我们的数据会比较多,无法很好地显示在单个页面中.在这种情况下,我们需要把数据以页的方式来展示. 页面展示效果: 页面HTML代码: <table class="table table-striped" style="margin: 0px;"> <thead> <tr> <td>选择</td> <td>企业名称</td&g

随机推荐

其他