基于统一空间方法的动态切换拥挤(DSC)DSC-MOAGDE算法附matlab代码

news2025/1/15 22:39:48

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

本研究提出了一种稳健的方法,使用基于帕累托的归档机制和基于拥挤距离的归档处理机制来提高多目标进化算法 (MOEA) 的搜索性能。所提出方法的目的是在目标和决策空间中提供可持续的多样性,并在两个空间中建立稳定的开发-探索平衡。为此:1) 定义了参考空间组合,2) 开发了由参考空间组合组成的策略以提高拥挤距离计算的性能,以及 3) 提出了一种动态切换机制来实现这些策略。在所提出的 DSC 方法中,非支配解在三个不同的参考空间中表示:决策空间、目标空间、以及这两个空间的统一结果。创建了这三个空间的二进制组合,并开发了使用不同参考空间的策略。切换机制旨在动态地实施这些策略。参考由该切换机制选择的空间向量执行拥挤距离计算。所提出的 DSC 方法在多模态多目标优化问题 (MMOP) 和结合交流最优功率流 (AC-OPF) 和交流/直流最优功率流 (AC/DC-OPF) 的实际工程问题上进行了测试. 根据实验研究结果,与竞争对手相比,所提出的 DSC-MOAGDE 算法在 MMOP 上的成功率提高了约 30%。同样,所提出的方法能够将成本优化 6.66%、24.15%、52。

⛄ 部分代码

function [bestFitness]=MOAGDE_SingerMap_Cr3(NP,funnum)

[fname,D, n_obj, L, H] = terminate_problem(funnum);

GEN = 50;

problemName = strcat("@",fname);

ObjectiveFunction=eval(problemName);

X = zeros(D,1); % trial vector

Pop = zeros(D,NP); % population

Fit = zeros(NP,n_obj); % fitness of the population

r = zeros(3,1); % randomly selected indices

Archive_member_no = 0;

bestFitness=inf*ones(1,n_obj);

Archive_X=zeros(NP,D);

Archive_F=ones(NP,n_obj)*inf;

ArchiveMaxSize = NP;

% *********************** %

% ** CREATE POPULATION ** %

% *********************** %

for j = 1:NP % initialize each individual

    Pop(:,j) = L + (H-L).*rand(1,D); % within b.constraints

end

Cr_All=zeros(1,2);

NW=zeros(1,2);

global chaosMap

SingerMap(GEN+10)

for g = 1:GEN % for each generation

    

    for i=1:NP %Calculate all the objective values first

        Fit(i,:)=ObjectiveFunction(Pop(:,i)');

        if dominates(Fit(i,:),bestFitness)

            bestFitness=Fit(i,:);

        end

    end

    

    [Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Pop', Fit, Archive_member_no);

    

    if Archive_member_no>ArchiveMaxSize

        Archive_X_F = [Archive_X Archive_F];

        Norm_Archive_X_F = Normalize(Archive_X_F);

        Norm_Archive_X = Normalize(Archive_X);

        if(rand()>chaosMap(g))

             Archive_mem_ranks_X=RankingProcess(Norm_Archive_X, ArchiveMaxSize, D);

            [Archive_X, Archive_F, ~, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks_X, ArchiveMaxSize);

        else

            Archive_mem_ranks_X_F=RankingProcess(Norm_Archive_X_F, ArchiveMaxSize, (n_obj+D));

            [Archive_X, Archive_F, ~, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks_X_F, ArchiveMaxSize);

       end    

    end

    

    Norm_Archive_X = Normalize(Archive_X);

    Archive_mem_ranks_X=RankingProcess(Norm_Archive_X, Archive_member_no, D);

    index=RouletteWheelSelection(1./Archive_mem_ranks_X);

    if index==-1

        index=1;

    end

    % Update the best Organism

    bestSolution=Archive_X(index,:);

    bestFitness=Archive_F(index,:);

    

    Norm_Archive_F = Normalize(Archive_F);

    Archive_mem_ranks_F=RankingProcess(Norm_Archive_F, Archive_member_no, n_obj);

    

    Norm_Fit = Normalize(Fit);

    allRank=RankingProcess(Norm_Fit, ArchiveMaxSize, n_obj);

    

    CrPriods_Index=zeros(1,NP);

    Sr=zeros(1,2);

    CrPriods_Count=zeros(1,2);

    for j = 1:NP % for each individual

         

         %%%%%%%%ADAPTIVE CR RULE  %%%%%%%%%%%%%%%%%%%%%%%%%

            Ali = rand;

            if(g<=1) % Do for the first Generation

                if (Ali<=1/2)

                    CR=0.05+0.1*rand(1,1);

                    CrPriods_Index(j)=1;

                

                else

                    CR=0.9+0.1*rand(1,1);

                    CrPriods_Index(j)=2;    

                end

                CrPriods_Count(CrPriods_Index(j))=CrPriods_Count(CrPriods_Index(j)) + 1;

            else

                 if (Ali<=NW(1))

                    CR=0.05+0.1*rand(1,1);

                    CrPriods_Index(j)=1;

                

                 else

                    CR=0.9+0.1*rand(1,1);

                    CrPriods_Index(j)=2;    

                end

                CrPriods_Count(CrPriods_Index(j))=CrPriods_Count(CrPriods_Index(j)) + 1;

            end

            %%%%%%%%%%%%%%%%%END OF CR RULE%%%%%%%%%%%%%%%%%%%%%%%%%%%

                indexs_Archive = [];

                while(size(indexs_Archive) < 3)

                    index=RouletteWheelSelection(1./Archive_mem_ranks_F);

                    if ismember(index,indexs_Archive) == 0

                        indexs_Archive = [indexs_Archive index];

                    end

                end

                

                indexs_Pop = [];

                while(size(indexs_Pop) < 3)

                    index=RouletteWheelSelection(1./allRank);

                    if ismember(index,indexs_Pop) == 0

                        indexs_Pop = [indexs_Pop index];

                    end

                end

                

                r(1) = indexs_Pop(1);

                r(2) = indexs_Archive(1);

                r(3) = indexs_Pop(2);

                F=0.1+0.9*rand(1,1);

                Archive_Pop = Archive_X';

                Rnd = floor(rand()*D) + 1;

                for i = 1:D

                    if ( rand()<CR ) || ( Rnd==i )

                        X(i)=Pop(i,r(3))+F*(Pop(i,r(1))-(Archive_Pop(i,r(2))));

                    else

                        %X(i) = Pop(i,j);

                        X(i) = bestSolution(i);

                    end

                end

        % end%end of All cases

        % verify boundary constraints

        % verify boundary constraints

        for i = 1:D

            if (X(i)<L(i))||(X(i)>H(i))

                X(i) = L(i) + (H(i)-L(i))*rand();

            end

        end

        % select the best individual

        % between trial and current ones

        % calculate fitness of trial individual   

        XPf=ObjectiveFunction(X');

        % if trial is better or equal than current

        % CRRatio(find(A==CRs(j)))=CRRatio(find(A==CRs(j)))+1-(min(f,Fit(j))/max(f,Fit(j)));

        Sr (CrPriods_Index(j)) = Sr(CrPriods_Index(j)) +1;

        Pop(:,j) = X; % replace current by trial

        Fit(j,:) = XPf ;

        % if trial is better than the best

    end

    CrPriods_Count(CrPriods_Count==0)=0.0001;

    Sr=Sr./CrPriods_Count;

%%%%%%%%%%%%%%%%USING SR ONLY%%%%%%%%%%5    

    if(sum(Sr)==0)

        W=[1/2 1/2];

    else

        W=Sr/sum(Sr);

    end

    

%%%%%%%%%%%%%%%%%%%%%%%%%%5

    NW=(NW*(g-1)+W)/g;

    Cr_All=Cr_All+CrPriods_Count;

    display(['At the iteration ', num2str(g), ' best fitness ', num2str(bestFitness)]);

    

end

end

⛄ 运行结果

⛄ 参考文献

KAHRAMAN, H. T., AKBEL, M., DUMAN, S., KATI, M., SAYAN, H. H. (2022). Unified Space Approach-based Dynamic Switched Crowding (DSC): A New Method for Designing Pareto-based Multi/Many-Objective Algorithms, Swarm and Evolutionary Computation, 101196, https://doi.org/10.1016/j.swevo.2022.101196

⛄ Matlab代码关注

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

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

 

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

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

相关文章

Python编程零基础如何逆袭成为爬虫实战高手之《WIFI破解》(甩万能钥匙十条街)爆赞爆赞~

导语 Hello&#xff0c;大家好呀&#xff01;我是木木子吖&#xff5e; 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ &#xff08;哇哇哇 这真的爱&#x1f60d;&#x1f60d;&#xff09; 所有文章完整的素材源码都在&#…

dreamweaver网页大作业 我的家乡——南京玄武湖旅游攻略(4页) 学生网页设计作业源码

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

Java项目写好了,如何部署上线?看这篇文章吧

嗨&#xff0c;各位小伙伴大家好&#xff0c;你有没有想壹哥呀&#xff1f;前几天有小伙伴给壹哥留言&#xff0c;说自己的项目写好了&#xff0c;想把项目部署到服务器上&#xff0c;这个该怎么实现呢&#xff1f;那么针对这个问题&#xff0c;今天壹哥就带大家走一遍完整的项…

【云计算与大数据计算】大数据物理、集成、安全架构及阿里云飞天系统架构讲解(超详细)

一、物理架构 物理架构 - 企业大数据系统的各层次系统最终要部署到主机节点中,这些节点通过网络连接成 为一个整体,为企业的大数据应用提供物理支撑 &#xff0c;企业大数据系统由多个逻辑层组成&#xff0c;多个逻辑层可以映射到一个物理节点上&#xff0c;也可以映射到多个物…

nacos--基础--1.1--理论--介绍

nacos–基础–1.1–理论–介绍 1、介绍 是阿里的一个开源产品致力于帮助您发现、配置和管理微服务 1.1、参考资料 https://nacos.io/zh-cn/docs/what-is-nacos.html1.2、功能 服务发现中心&#xff1a;动态服务发现服务注册中心&#xff1a;管理注册服务服务配置中心&#…

行为管理(锐捷智慧教室)

大家好&#xff0c;我是小杜&#xff0c;被师傅“强制”休息两天&#xff0c;感觉整个人都升华了&#xff0c;精神满满的&#xff0c;看来还是需要劳逸结合&#xff0c;一味的高强度精神亢奋的情况下其实是事倍功半......。随着学习的深入&#xff0c;师傅也带着我对公司的业务…

PCIe Dma coherent

目录 1.PCIe Dma coherent前言 2.DMA与Cache 的一致性 2.1一致性问题 2.2Coherent DMA buffers 一致性 2.3DMA Streaming Mapping 流式DMA映射 2.4dma_alloc_coherent的例外 2.5SMMU | IOMMU 3.Linux 内核中 DMA 及 Cache 分析 3.1arm 3.2DMA ZONE 3.3DMA ZONE 的内…

南昌市-中安协-安防工程企业设计施工维护能力评价

安防工程企业设计、施工、维护能力评价是指中国安全防范产品行业协会从本行业实际出发&#xff0c;制定评价标准和实施办法&#xff0c;确定其能力等级&#xff0c;并颁发证书的活动。安防工程企业&#xff08;以下称企业&#xff09;设计、施工、维护能力&#xff08;以下称能…

以太网 传统STP生成树简介、STP工作方式简单介绍

2.10.0 以太网 传统STP生成树&#xff08;简介、工作方式&#xff09; 作用&#xff1a; STP&#xff08;Spanning Tree Prortoco&#xff09;生成树协议&#xff0c;它的出现解决了交换机网络环路的问题。 交换机网络中收到BUM帧的时候&#xff0c;将会进行泛洪的操作&…

CSS 父选择器,:has()

在CSS Selectors 4规范中&#xff0c;CSS 引入了一个名为 的新选择器:has()&#xff0c;它最终让我们可以选择父级。这意味着我们可以选择具有特定元素的父元素。目前Safari和Chrome105已经支持。 父选择器如何在 CSS 中工作 在 CSS 中&#xff0c;如果我们想要选择某些东西&a…

【Pygame小游戏】史上最全:《唐诗三百首》合集,每一首都是精华,果断收藏~(学诗+锻炼记忆+Python诗句填空小程序上线啦)

前言 岁岁年龄岁岁心&#xff0c;不负时光不负卿 哈喽&#xff01;我是你们的栗子同学&#xff0c;今天给大家来点儿有趣的—— 有句话说&#xff1a;“读史使人明智&#xff0c;读诗使人灵秀。”唐诗本来就是中国文化的绚丽瑰宝&#xff0c;是每个人都 该学习的人生必修课。…

蚂蚁三面遭分布式血虐,意外收获史诗级分布式笔记手册,从基础到进阶收获满满

学习分布式系统设计的难题在于&#xff0c;这个过程存在一个环境障碍&#xff0c;工作中只有一些中大规模的互联网企业&#xff0c;才有开发大规模分布式系统的场景和需求。这就造成目前只有少数身在一线互联网公司的架构师和开发者&#xff0c;才有机会接触并掌握分布式系统设…

Spring Security入门学习

认识Spring Security Spring Security 是为基于 Spring 的应用程序提供声明式安全保护的安全性框架。Spring Security 提供了完整的安全性解决方案&#xff0c;它能够在 Web 请求级别和方法调用级别处理身份认证和授权。因为基于 Spring 框架&#xff0c;所以 Spring Security…

树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践

摘要&#xff1a;本文在介绍MOSFET器件和IGBT器件作为电子开关基本原理的基础上&#xff0c;讲述了Pico与MOSFET&IGBT器件驱动控制24V直流电机硬件接口技术&#xff0c;最后给出了Pico开发板GP15端口控制24V直流电机启停的MicroPython测试程序。 一、实验设备和元器件清单 …

[附源码]Nodejs计算机毕业设计基于Java的智慧停车软件Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

React 入门:实战案例 TodoList 对组件的 props 进行限制

文章目录安装 prop-types 库给组件的 props 添加限制给 Header 组件添加限制给 List 组件添加限制给 Item 组件添加限制验证 props 限制完整代码Header 组件完整代码List 组件完整代码Item 组件完整代码本文实现对组件的 props 进行属性的类型和必要性的限制。为什么要对 props…

双十二买什么数码产品比较值?入手超值的数码好物盘点

2022年双十二正式开启倒计时模式&#xff0c;最近看到很多人问什么数码产品值得入手。现如今&#xff0c;数码产品已经贯彻在我们生活的方方面面&#xff0c;在此&#xff0c;我来给大家盘点几款入手超值的数码好物&#xff0c;可以当个参考。 一、蓝牙耳机 推荐产品&#xf…

JUC(6) : LockSupport | 优雅的线程通信工具

一、前言 前文介绍了 CompletableFuture 和 线程池的几种对线程的管理方式后&#xff0c;本质上&#xff0c;通过这些工具&#xff0c;可以直接帮我们对线程进行很好的管理和运作&#xff0c;什么时间需要启动哪个线程&#xff0c;以及线程的执行顺序等。毕竟&#xff0c;线程…

视频监控在油气长输管道巡护管理的应用解决方案

一、方案背景 由于油气产地与消费中心位置的不一致性&#xff0c;常常需要采用长距离的油气管道运输。从偏僻的矿区到繁华的街市&#xff0c;管道架设的环境十分复杂&#xff0c;一旦发生危险&#xff0c;后果将不堪设想。因此&#xff0c;为确保管道安全运行&#xff0c;消除…

redis高可用之主从复制,哨兵,集群

目录 前言 一、主从复制 1、主从复制的作用 2、主从复制流程 3、部署Redis 主从复制步骤 3.1 环境准备 3.2 首先要搭建redis&#xff0c;并关闭防火墙 3.3 修改Redis 配置文件(Master节点操作) 3.4 修改Redis 配置文件(Slave节点操作) 3.5 验证主从效果 二、哨兵 1…