多目标果蝇算法及其MATLAB实现

        果蝇算法最早的文献是由台湾华夏科技大学的潘文超教授于2011年提出来的。该算法是基于果蝇觅食行为的仿生学原理而提出的一种新兴群体智能优化算法,被称为果蝇优化算法(Fruit Fly Optimization Algorithm, FOA)。通过模拟果蝇利用敏锐的嗅觉和视觉进行捕食的过程,FOA实现对解空间的群体迭代搜索。此算法原理易懂、操作简单、易于实现,并具有较强的局部搜索能力。

        多目标果蝇算法,根据, 步骤如下:

1.设定待优化函数

设定待优化函数表达式和参数等。

2.设置果蝇算法参数

设置果蝇数popsize, 迭代次数maxgen.

3. 初始化果蝇位置

在定义域范围内随机设定一个果蝇的位置p0, 采用均匀分布的方法, 随机产生popsize个果蝇的位置.

4. 快速非支配排序

目的是将解集中的个体按照它们的非支配程度进行分类。以下是快速非支配排序的基本流程:

(1)初始化:

对于解集中的每个个体,设置两个参数:np(被该个体支配的个体数量)和sp(支配该个体的个体集合)。

初始化前沿面集合(即非支配层级)为空。

(2)计算支配关系:

遍历解集中的每个个体p,对于解集中的每个其他个体q:

如果个体p在所有目标上都优于或等于个体q,并且在至少一个目标上严格优于q,则p支配q,将q加入到p的sp集合中,并增加q的np计数。

如果个体q在所有目标上都优于或等于个体p,并且在至少一个目标上严格优于p,则q支配p。

遍历完成后,所有np为0的个体构成了第一前沿面(即它们不被任何其他个体支配)。

(3)构建前沿面:

创建一个空的前沿面集合,并将所有np=0的个体加入到当前前沿面中。

对于当前前沿面中的每个个体,遍历其sp集合中的每个个体,将这些个体的np值减1。如果某个个体的np值变为0,则将其加入到下一个前沿面的候选集合中。

(4)重复上述步骤,直到候选集合为空,此时完成了一层前沿面的构建。

继续构建下一个前沿面,直到所有个体都被分配到某个前沿面中。

(5)分配前沿面层级:

给每个前沿面分配一个层级值,第一前沿面的层级最低(通常为1),随着前沿面的递增,层级值也递增。

每个个体都被赋予其所在前沿面的层级值,这个层级值表示了个体的非支配程度。

(6)输出:

输出每个个体的前沿面层级以及所属的前沿面。

这个过程最终将解集中的个体分层,其中每一层都是当前层中个体的非支配集。第一层的个体是最优的,因为它们不被任何其他个体支配,第二层的个体只被第一层的个体支配,以此类推。这种分层结构有助于在多目标优化问题中识别出最优解集。

5. 构造第一前沿面

根据4. 快速非支配排序的结果提取出第一前沿面的所有果蝇。

6. 对前沿每个果蝇进行放飞

    对前沿每个果蝇进行放飞,得到新解。以p0为中心, 采用均匀分布的方法, 随机产生新的果蝇的位置。

7.计算目标函数值

8.找出不重复的非支配解

9.重复4~8直至满足迭代终止条件。

流程图如下:

完整代码见: https://download.csdn.net/download/corn1949/89217761

MATLAB部分主程序如下:
 

%% mFOA 多目标果蝇算法
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;

global objnumber varinumber;
global C1 C2;

N=5;% 变量数
C1=rand(1,N);
C2=rand(1,N);
% 多目标参数
objnumber=2;% 目标数
varinumber=N;% 变量数

lb=0*ones(1,N);
ub=1*ones(1,N);

%% 果蝇算法参数设置
maxgen=50; % 迭代次数
popsize=50; % 果蝇数

value_foa_cell=cell(objnumber,1);
for i=1:objnumber
    value20i_foa=zeros(maxgen,2);
    value_foa_cell{i,1}=value20i_foa;
end

p0=lb+(ub-lb).*rand(1,N);% 随机果蝇群位置
vlb=-(ub-lb)/5;% 果蝇群体散布范围下限
vub=(ub-lb)/5;% 果蝇群体散布范围上限

foamat=genfoafun(popsize,N,p0,lb,ub,vlb,vub);% 初始化果蝇群
Value_foa=decodingfun(foamat,popsize);% 果蝇群解码

dominatedmat=determinedomination(Value_foa);% 找出非支配解
h_dominate= dominatedmat==0;
[mat2,index401]=matuniquefun(foamat(h_dominate,:));% 找出不重复的前沿集
index99= find(h_dominate);
indexselect=index99(index401);
non_DS_mat_foa=foamat(indexselect,:);% 非支配解集
non_DS_Value_foa=Value_foa(indexselect,:);% 非支配解结果

% 果蝇迭代寻优开始
tracemat_foa=zeros(maxgen,2);
tic;
wait_hand = waitbar(0,'running...', 'tag', 'TMWWaitbar');
for gen=1:maxgen
    [frontmat42,foamat42,Value42,Fcell42]=nondominationsort2(non_DS_mat_foa,objnumber,non_DS_Value_foa);% 快速非支配排序
    
    % 构造最优前沿面集中的最优果蝇
    index201= find(frontmat42(:,1)==1);
    K1=length(index201);
    bestfoamat_foa=foamat42(index201(randi([1,K1],1,1)),:);
    
    
    % 果蝇个体利用嗅觉搜寻食物之随机方向与距离
    foamat=genfoafun(popsize,N,bestfoamat_foa,lb,ub,vlb,vub);% 初始化果蝇群
    Value_foa=decodingfun(foamat,popsize);% 果蝇群解码
    
    %% 找出不重复的非支配解
    Value32=[Value_foa;
        non_DS_Value_foa];
    foamat32=[foamat;
        non_DS_mat_foa];
    dominatedmat=determinedomination(Value32);% 找出非支配解
    h_dominate= dominatedmat==0;
    [mat2,index401]=matuniquefun(foamat32(h_dominate,:));% 找出不重复的前沿集
    index99= find(h_dominate);
    indexselect=index99(index401);
    non_DS_mat_foa=foamat32(indexselect,:);% 非支配解集
    non_DS_Value_foa=Value32(indexselect,:);%  非支配解结果
    
    %% 记录每代结果
    for i=1:objnumber
        value20i_foa=value_foa_cell{i,1};
        if gen==1
            value20i_foa(gen,1)=min(Value_foa(:,i));
            value20i_foa(gen,2)=mean(Value_foa(:,i));
        else
            value20i_foa(gen,1)=min(value20i_foa(gen-1,1),min(Value_foa(:,i)));
            value20i_foa(gen,2)=mean(Value_foa(:,i));
        end
        value_foa_cell{i,1}=value20i_foa;
    end;
    
    waitbar(gen/maxgen,wait_hand);
end
delete(wait_hand);

disp('多目标果蝇算法运行时间(s)');
runtime_mfoa=toc

%% 输出结果
% 迭代图
for i=1:objnumber
    value20i_foa=value_foa_cell{i,1};
    figure;
    plot(value20i_foa(:,1),'r-','linewidth',1.5);
    xlabel('迭代次数','fontname','宋体');
    ylabel(['f',num2str(i)],'fontname','宋体');
    title(['多目标果蝇算法的f',num2str(i),'的迭代曲线'],'fontname','宋体');
end


%% 绘制帕累托前沿
figure;
plot(non_DS_Value_foa(:,1),non_DS_Value_foa(:,2),'m.','markersize',25);
xlabel('f1');
ylabel('f2');
grid on;
title('多目标果蝇算法的帕累托前沿','fontname','宋体');

disp('多目标果蝇算法的非支配解集');
non_DS_mat_foa




程序结果如下:

多目标果蝇算法运行时间(s)

runtime_mfoa =

                 2.1129473

多目标果蝇算法的非支配解集

non_DS_mat_foa =

         0.281529070568052        0.0590890372447153         0.109448971929703         0.508871222524378         0.398636967222503

         0.312065234087438        0.0803893075698937         0.103092327203179         0.472743303828288         0.396707442028777

         0.318987401164597        0.0212513733754174         0.171832320639786         0.585812992875377         0.358971256464241

         0.332893493181511         0.140939901648527         0.176927006792709         0.612203165056279         0.298595100873427

         0.348600603616145         0.130344976545472         0.108020799750472         0.505581406180552         0.306693676536294

         0.359672158006426         0.209959614002127         0.191232533748836         0.645194716679489         0.387603232165614

         0.377345684067041        0.0489121147659198         0.265912870814052         0.597619771770025         0.395504138802879

         0.387993755558503         0.211049671755661         0.111833197396171         0.580548637444409         0.280949528180505

         0.391414251081373         0.099317924631442         0.236359280644152         0.690429786262303         0.253417710519125

         0.409999790140427        0.0664728901658547          0.20986501751927         0.601349446364376          0.28014504605911

         0.417927804970149          0.11261813329189         0.172966236794817         0.443541810495566         0.407208998970319

         0.432335192818351         0.257585698020452         0.242826629729395         0.587165861943348         0.296641681853981

          0.44302515901766         0.323847609816048         0.306778178320629         0.620843034806123         0.308885986501764

         0.462958187452964         0.138256521959909         0.277364580182994         0.666499135581078         0.450971711171312

         0.471580517697884         0.253760948336572         0.360258692763866          0.66784928230003         0.342887616596598

         0.488479452155754         0.274152381752689          0.27908011743756          0.69953377307371         0.464124049834965

         0.499398478632513         0.190230376641373         0.201940211561481         0.609135713805042         0.343941921342137

           0.5019695275938         0.201850268990663         0.297470926073133         0.593854511153816         0.312768962193639

         0.502113299026207          0.21821673345669         0.168639206592291         0.519145196638603          0.27331990500601

         0.507399559443537         0.264395567525362         0.296303398765765         0.571223056209843         0.345905718834095

         0.517923026493715         0.332306279862442         0.471645648065789         0.748407041723098         0.277150240110769

         0.533813756580378         0.207806846409946         0.409667611964824         0.683554292788522         0.296998896681237

         0.542742646086376         0.275652773713531         0.296167803321112         0.692270417926959         0.388914098399186

         0.544859868076099         0.259802754996253         0.304903222017411         0.708452446622985         0.360270392503715

         0.546648118620109         0.314929648169749         0.422596788975688         0.784232314389307         0.392507941086082

         0.547830923901792         0.194338017420069         0.439058779105106         0.660900419513183         0.353350758065167

         0.549663868709311         0.200641397387088         0.379965884787946         0.686625631007657         0.316980345694805

         0.558376225157816         0.229216227414653         0.237134158069796         0.513794679061414         0.347170985186086

         0.565760794824809         0.341678620568327         0.392575891871274         0.623014680493164         0.407735048610594

         0.575354325294194         0.380145219517939         0.500704438006833         0.739489580848948         0.401385328267415

         0.586135032859694         0.371497272873063          0.35466517757376         0.657639482178558         0.346776975014609

         0.594775662568759         0.394560793132782         0.383250182672986         0.685820184874265         0.379847181765291

         0.598275261744054         0.412324132310377         0.531691740514567         0.743082828327586         0.393095701743428

         0.599030831828262         0.311190537601332          0.37936546559416         0.595380241049165         0.355711313316464

         0.599950412753946         0.166587155576137          0.43032376814183          0.65157115974071         0.356481762116999

         0.601954449807273         0.248437910828943         0.495967302050426         0.722445561514444         0.342552373252135

          0.60578848868878         0.287129392329198         0.383696876831212         0.593408902172655         0.423418815817413

         0.614341175190332         0.432131423909278         0.632841643240695         0.769497946356189         0.351984408475451

         0.626993089181833         0.272849879075238         0.387917617516554         0.731397600719425         0.399475291371101

         0.629256714428429         0.317599398604408         0.493092344278978         0.803030296789031         0.330198133238684

         0.630665438077723         0.394017772280619         0.456698720369813         0.735393255453274         0.354444403180128

         0.632370644916022          0.25342910357445         0.382943775776282         0.736039471969027          0.41540538343387

         0.636095985414505         0.465226861585503         0.467862667547475         0.767853470411083         0.313277199078946

         0.637347605096804         0.301198861981369         0.449273320869204         0.736703848716199         0.381585373162099

         0.637918476871177         0.295840773869232         0.395886420177243         0.663063918921661         0.315285316349606

         0.638752354047612         0.310814478206828         0.458935222150262         0.724278679454829         0.351765597309808

          0.64210848093131          0.31723901253065         0.436083602642679         0.657109615512709         0.241307922099395

         0.649253224604415         0.398945926408724         0.484185151422483         0.699839957663715         0.410168454055753

          0.65505921610401         0.380245060091952         0.578724965443241          0.83049420455028         0.316095876561522

         0.657151947476506         0.352781237639851         0.594261012968729         0.744844965424782         0.409333894313003

          0.66145565391586         0.285175363852258         0.342340264908197         0.712832312059045         0.372668776369034

         0.662079321156293         0.367150673813722         0.501374787232547         0.806049017424718          0.26583585723575

         0.663631124544717         0.448310223058011         0.549918935983404         0.687557073071393         0.371727110897995

         0.664291216090457         0.342468832313301         0.473664689657122         0.682439067253116         0.353403323122022

         0.670670883390434          0.36553714301695         0.582762685875764         0.692461513957224         0.400665079057526

         0.674767304339804          0.41408403907627         0.510444754879197         0.844995254671665         0.435245266666284

          0.68174607375718         0.506261636925052          0.53933179934478         0.749551587714605          0.31353471936357

         0.685282402152793         0.341332981987546         0.583428264680984         0.678844493291734          0.33939875417361

         0.690494596907168         0.342690218772129         0.594506903176432         0.877521686292031         0.306981510160017

         0.698279611160178          0.38542476910419         0.434094334130219         0.823473726596438         0.322922906336804

         0.699563687341085          0.36689314160817         0.573031008510399         0.732160034278482         0.413696118450582

         0.709116800459622         0.526065324864381         0.579914995646065         0.831331823408293         0.393956023172455

         0.722007844281387         0.385838837263099         0.593337880910066         0.829764455477597          0.45120321197957

         0.726890723280092         0.452386168508039         0.654334114610373         0.793464256540623          0.35375967824541

         0.730914530870931         0.480520347729568         0.705484290842658          0.87447619255375         0.321368250866126

         0.731289461223078         0.381974776267062         0.450064720516123         0.837757714482843         0.393907313139135

         0.737028891191366         0.444574253281846          0.55947490798285         0.894778467758921         0.341707624188488

         0.738674747635925         0.506483516984844         0.668469964279081         0.774689638509736         0.408754433136785

          0.74716649025081         0.427201645368338         0.578053705663445         0.748631085524629         0.442654412445917

         0.758347054644649         0.338947412622602         0.489163948078251         0.778475351155957         0.435226878167701

         0.758399705290049         0.423846809856522         0.593333258569861         0.752076783660835         0.354502987654183

         0.766520952324626         0.517645719981587         0.671615730538785         0.845583165365077         0.316260290851938

         0.773373536846309         0.489033775911217         0.590671739816047         0.819931088304115          0.38180112726139

         0.779915294041818         0.436346960829732         0.683370665313383          0.81077192202712         0.443693509811393

         0.783852505769512         0.609064468186844          0.74651681629313         0.908131438637214         0.365089175647632

         0.795264453531832         0.409670509495619         0.732253092868371         0.777731838718863         0.339013347932609

         0.797913212235045         0.527358034405558         0.706484254219795         0.880860672090604         0.425315826770531

         0.830009822095749          0.37507996325152         0.568942368295483         0.814383942174904          0.35091613361189

         0.834091374945869          0.57373871522664         0.626586814143968         0.844585317673434         0.345434137408358

         0.842199802138936         0.452074549092015         0.616946589488977         0.821329541234919         0.285599535277858

         0.854482159695813         0.481658007521954         0.626132421487073         0.807607933230516         0.466533805274653

         0.865599992156774          0.53906817889729         0.718882726747022         0.861988437204616         0.439664097986959

          0.87159964436274         0.575222804572071         0.769676442802733          0.95197418553381         0.430136266737309

         0.877853881231441         0.490181856830689         0.686467753390999          0.86353124252685         0.369593148757514

            0.879577031303         0.651165109524115         0.731995771793647         0.852936535818938         0.304357508897948

         0.893354609372725         0.610919727390129         0.727858245897972         0.913538807217748         0.446732908695346

         0.925954241550506         0.512937739357789         0.744585386358474         0.846588526874123         0.413371173391757

         0.963752343023081         0.585629188914611         0.869778087860801         0.960322676487417         0.343223724022146

>>

 完整代码见: https://download.csdn.net/download/corn1949/89217761

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APQC是美国生产力与质量中心

APQC简介 APQC是美国生产力与质量中心( American Productivity and Quality Center)的简称。该中心自1991年开始研究开发流程分类框架(简称PCF),1992年发布PCF1.0。PCF将运营与管理等流程汇总成12项企业级流程类别,每个流程类别包…

项目经理学习PMP对自己工作有多大帮助?

PMP是一种项目管理认证,也是最流行和含金量较高的认证之一。因此,你问它对项目管理有多大帮助,我可以说PMP可以被视为量身定制给项目管理岗人员的一个证书,你能理解它的重要性吗? 随着国家经济建设由基础设施向高端产业…

【新手入门】Git的使用方法,上传自己的项目到GitHub上

Git新手教程 一、Git下载安装二、初始化设置1.网端设置2.用户设置 三、开始上传自己项目1.创建新文件夹,克隆项目地址2.上传文件3.成功运行并上传的界面 报错1.fatal: unable to access https://github.com/ssrzero123/STF-YOLO.git/: error setting certificate fi…

mars3d开发过程中点击面图层飞行定位,设置俯仰角度后,layer.flyTo({没有生效的排查思路

mars3d开发过程中点击面图层飞行定位,设置俯仰角度后,layer.flyTo({没有生效的排查思路记录,给大家提供一下以后排查定位问题的方向 问题场景相关代码: 1.项目本身代码: 2.精简了关键性代码后,就可以去ge…

39-数组 _ 二维数组

39-1 二维数组的创建 行和列编号依旧是从0开始: //arr数组: //1 2 3 4 //2 3 4 5 //2 4 5 6 //三行四列int main() {int arr[3][4]; //存放整数char arr1[5][10]; //存放字符return 0; } 39-2 二维数组的初始化 创建之后,利用初始化赋值…

MySQL-多表查询-练习

练习 1.写一个查询显示所有雇员的 last name、department id、anddepartment name。 SELECT e.LAST_NAME,e.DEPARTMENT_ID,d.DEPARTMENT_NAME FROM employees e,departments d WHERE e.DEPARTMENT_ID d.DEPARTMENT_ID;2.创建一个在部门 80 中的所有工作岗位的唯一列表&#x…

我与C++的爱恋:模板初阶和STL库

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 ​朋友们大家好,本篇文章介绍一下模版和对STL进行简单的介绍,后续我们进入对STL的学习! ​ 一、模板 1.泛型模板 泛型编程:…

PotatoPie 4.0 实验教程(23) —— FPGA实现摄像头图像伽马(Gamma)变换

为什么要进行Gamma校正 图像的 gamma 校正是一种图像处理技术,用于调整图像的亮度和对比度,让显示设备显示的亮度和对比度更符合人眼的感知。Gamma 校正主要用于修正显示设备的非线性响应,以及在图像处理中进行色彩校正和图像增强。 以前&am…

unity学习(91)——云服务器调试——补充catch和if判断

本机局域网没问题,服务器放入云服务器后,会出现异常。 想要找到上面的问题,最简单的方法就是在云服务器上下载一个vs2022! 应该不是大小端的问题! 修改一下readMessage的内容,可以直接粘贴到云服务器的。 …

AIGC技术的伦理与风险探讨:现状与未来

如何看待AIGC技术? 简介:探讨AIGC技术的发展现状和未来趋势。 随着人工智能的迅速发展,AIGC(Artificial Intelligence in General Computing)技术作为智能计算的一种形式,正逐渐渗透到我们的生活和工作中…

firebase:一款功能强大的Firebase数据库安全漏洞与错误配置检测工具

关于firebase firebase是一款针对Firebase数据库的安全工具,该工具基于Python 3开发,可以帮助广大研究人员针对目标Firebase数据库执行安全漏洞扫描、漏洞测试和错误配置检测等任务。 该工具专为红队研究人员设计,请在获得授权许可后再进行安…

OpenCV添加文字和水印------c++

添加文字 bool opencvTool::addText(cv::Mat& image, const std::string text, const cv::Point& position, double fontScale, cv::Scalar color, int thickness, int fontFace) {cv::putText(image, text, position, fontFace, fontScale, color, thickness);return…

HTML5+CSS3小实例:飞行滑块

实例:飞行滑块 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&qu…

利用STM32实现语音识别功能

引言 随着物联网和智能设备的普及&#xff0c;语音识别技术正逐渐成为用户交互的主流方式之一。 STM32微控制器具备处理高效率语音识别算法的能力&#xff0c;使其成为实现低成本、低功耗语音交互系统的理想选择。 本教程将介绍如何在STM32平台上开发和部署一个基础的语音识…

CentOS系统服务器装机后常用的操作命令大全

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

3分钟入门Java多线程

如何在程序中创建出多条线程&#xff1f; 继承Thread类 public class MyThread extends Thread {Overridepublic void run() {for (int i 0; i < 10; i) {System.out.println("MyThread运行了" i);}} }实现Runnable接口 public class MyRunnable implements …

js的算法-插入排序(折半插入排序)

直接插入排序的步骤 1. 从前面的有序子表中查找出待插入元素应该被插入的位置 2. 给插入位置腾空间 3. 将待插入元素复制到表中的插入位置。 直接插入排序&#xff1a;边比较边移动&#xff1b; 折半插入排序 先折半查找出元素的待插入位置&#xff0c;然后统一地移动待插…

Windows系统中下Oracle 19C数据库超级详细安装、设置教程(自己电脑上安装Oracle学习,保姆级教学,亲测有效)

Oracle 官方提供了一个基于 Java 技术的图形界面安装工具&#xff1a;Oracle Universal Installer&#xff08;Oracle 通用安装器&#xff09;简称 OUI&#xff0c;利用它可以完成在不同操作系统平台上&#xff08;Windows、Linux、UNIX&#xff09;的、不同类型的、不同版本的…

kotlin 编写一个简单的天气预报app (七)使用material design

一、优化思路 对之前的天气预报的app进行了优化&#xff0c;原先的天气预报程序逻辑是这样的。 使用text和button组合了一个输入城市&#xff0c;并请求openweathermap对应数据&#xff0c;并显示的功能。 但是搜索城市的时候&#xff0c;可能会有错误&#xff0c;比如大小写…

Java设计模式 _结构型模式_过滤器模式

一、过滤器模式 1、过滤器模式 过滤器模式&#xff08;Filter Pattern&#xff09;是这一种结构型设计模式。过滤器&#xff0c;顾名思义&#xff0c;就是对一组数据进行过滤&#xff0c;从而最终获取到我们预期的数据。 2、实现思路 &#xff08;1&#xff09;、定义过滤器的…