CEC2023:基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023(提供MATLAB代码及参考文献)

一、动态多目标优化问题

1.1问题定义

1.2 动态支配关系定义

二、 基于自适应启动策略的混合交叉动态多目标优化算法

基于自适应启动策略的混合交叉动态多目标优化算法(Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on Self-Adaptive Start-Up Strategy, MC-DCMOEA)由耿焕同等人于2015年提出,其基于自适应冷热启动、混合交叉算子与精英群体的局部搜索等技术方法,力求克服单独采用冷启动方式而出现再次收敛速度慢、单种交叉算子 自适应不够以及正态变异多样性程度偏弱等问题。MC-DCMOEA算法描述如下:

参考文献:

1\]GENG Huan-Tong,SUN Jia-Qing,JIA Ting-Ting. **A Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on Self-Adaptive Start-Up Strategy**\[J\]. Pattern Recognition and Artificial Intelligence, 2015, 28(5): 411-421. ### 三、CEC2023简介 现实生活中,存在许多动态多目标优化问题(Dynamic Multi-objective Optimization Problems,DMOPs),这类问题的目标函数之间相互矛盾,并且目标函数、约束或者参数都可能随着时间的变化而发生变化.这种随时间不断变化的特性,给解决DMOPs带来了挑战,算法不仅要能够追踪到最优解,同时还要求算法能够快速地对发生的变化做出响应。其中,动态约束多目标优化(Dynamic Constrained Multiobjective Optimization,DCMO)是动态多目标优化问题中的一种,其问题较为复杂且求解难度大。[动态约束多目标优化(Dynamic Constrained Multiobjective Optimization,DCMO)测试函数DCF1\~DCF10的turePF_IT猿手的博客-CSDN博客](https://blog.csdn.net/weixin_46204734/article/details/131553169?spm=1001.2014.3001.5502 "动态约束多目标优化(Dynamic Constrained Multiobjective Optimization,DCMO)测试函数DCF1~DCF10的turePF_IT猿手的博客-CSDN博客") ![](https://file.jishuzhan.net/article/1715924835093188610/f47d98454af97a4b00cdf1bd3280c5c7.webp) Benchmark Problems for CEC2023 Competition on Dynamic Constrained Multiobjective Optimization中共包含10测试函数,其详细信息如下: ![](https://file.jishuzhan.net/article/1715924835093188610/308a00d64efaffbcb6ac928936c7dc97.webp) 每个测试函数的环境变化程度、环境变化频率和最大迭代次数考虑如下八种情形: ![](https://file.jishuzhan.net/article/1715924835093188610/b09272923aafb837bceac9b0d6ae29da.webp) DCF #### DCF1\~DCF10的turePF如下: ![](https://file.jishuzhan.net/article/1715924835093188610/7bf81ba1f0ed92fde6120177d2c567c3.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/b0ceac8618540afb68db44e5b386ef49.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/01bdb56c72c6931526b26fd9234110b1.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/262a3df6b1f8b706420e1df5015fca2f.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/b88dfb100590616a398ab53b4f60c26a.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/bb50ad40f388aef584b05541bd805dd4.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/34701b73ab21bdb06e912ccb0bb8dde1.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/c07fb29e99bdc969406cd24199f050eb.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/16596d18a38628b08daee813a1f51f07.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/bcae11f80847a96f8a1296ae14e5adc4.webp) ### 四、MC-DCMOEA求解CEC2023 #### 4.1部分代码 设置种群大小为100,外部存档大小为200,以DCF5为例,当取第1组参数设置时,即环境变化程度、环境变化频率 和最大迭代次数分别为10/5/100,其代码如下:(代码中更改TestProblem以此选择不同测试函数1-10,更改group选择不同参数设置1-8,相对于共有80种情形可供选择) ```bash close all; clear ; clc; warning off addpath('./DCF') addpath('./DCF-PF') %% 基于自适应启动策略的混合交叉动态约束多目标优化算法(MCDCMOEA) TestProblem=5;%选择测试函数1-10(可以自己修改) group=1;%选择参数1-8 (可以自己修改) MultiObj = GetFunInfoCec2023(TestProblem);%获取测试问题维度、目标函数、上下限、目标个数等信息 paramiter=GetFunParamiter(group);%获取参数nt taut maxgen % 参数设置 params.Np = 100; %Np 种群大小 (可以自己修改) params.Nr = 200; %Nr 外部存档大小 (可以自己修改) 注意:外部存档大小Nr不能小于种群大小Np params.nt=paramiter(1); % nt 环境变化程度 params.taut=paramiter(2);% taut 环境变化频率 params.maxgen=paramiter(3);%maxgen 最大迭代次数 %% 基于自适应启动策略的混合交叉动态约束多目标优化算法(MCDCMOEA)求解,结果为Result Result = MCDCMOEA(params,MultiObj); %% 获取真实的POF POF_Banchmark = getBenchmarkPOF(TestProblem,group); for i=1:size(POF_Banchmark,2) Result(i).TruePOF=POF_Banchmark(i).PF; end %% 计算GD IGD HV Spacing for k=1:size(Result,2) Result(k).GD=GD(Result(k).PF,Result(k).TruePOF); Result(k).IGD=IGD(Result(k).PF,Result(k).TruePOF); Result(k).HV=HV(Result(k).PF,Result(k).TruePOF); Result(k).Spacing=Spacing(Result(k).PF);%计算性能指标SP end %% 保存结果 save Result Result %保存结果 PlotResult; ``` ```      ``` #### 4.2部分结果 由于测试函数共有10个,且每个测试函数均有8种参数可供选择,因而共有80种选择方案。由于篇幅限制,下面仅以DCF3、DCF5和DCF7为例,采用MCDCMOEA求解。**测试其余函数只需修改代码中TestProblem和group的值。** **(1)**DCF3 ![](https://file.jishuzhan.net/article/1715924835093188610/e277a39501f5378613263fbfe516154a.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/ff852f244357697b5375d41911c38e3a.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/1269fa49abeac7b9cab68c4fa662ddcc.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/19fbeed0c1dedc3b5fb5c023ab68d47d.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/f739c2913fefa50f3bd13e9486747dc3.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/a47d4321392b0c71efa760c722f328f9.webp) **(2)**DCF5 ![](https://file.jishuzhan.net/article/1715924835093188610/570e2c4bfe381c0ce8880c549d4c66c3.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/3c2fe7ddfda19d3c29b5f1cd7b3f4ab4.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/04a0a869ab4e70f68549f08fa13dd5f5.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/b652af9bb22e03838522c2745c5d2dcc.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/db6867df0c615553d877f4592d6ee571.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/2ede714d8ab23f40bf63ac6ebe241441.webp) **(3)**DCF7 ![](https://file.jishuzhan.net/article/1715924835093188610/6ac9a77d38e0144e620bfcf9d442b155.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/8a28e3f481b296005fadb695128031e8.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/2511a640dc4d202e59a10405b89654a2.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/6654ea7e923bb271e5154315145b5afa.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/1f8eb6d2d5209b4cfe7b92307718d707.webp) ![](https://file.jishuzhan.net/article/1715924835093188610/22da513dbc4d3fd8bc3b78c8b9e9dc9d.webp) ### 五、完整MATLAB代码 **完整MATLAB代码请添加博客下方博主联系方式。**

相关推荐
Shartin4 分钟前
CPT208-Human-Centric Computing: Prototype Design Optimization原型设计优化
开发语言·javascript·原型模式
张人玉14 分钟前
C# 常量与变量
java·算法·c#
dme.16 分钟前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
teeeeeeemo21 分钟前
回调函数 vs Promise vs async/await区别
开发语言·前端·javascript·笔记
加油吧zkf26 分钟前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
ejinxian41 分钟前
PHP 超文本预处理器 发布 8.5 版本
开发语言·php
weixin_446122461 小时前
LinkedList剖析
算法
软件黑马王子1 小时前
C#系统学习第八章——字符串
开发语言·学习·c#
阿蒙Amon1 小时前
C#读写文件:多种方式详解
开发语言·数据库·c#
Da_秀1 小时前
软件工程中耦合度
开发语言·后端·架构·软件工程