clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
m=2;%目标函数个数
%初始化参数
popnum=200;
gen=600;
xmin=0;%变量取值范围
xmax=1;
n=30;%决策变量数目
hc=20;%交叉变异参数
hm=20;
%产生初始种群
initpop=rand(popnum,n)*(xmax-xmin)+xmin;
init_value_pop=func_objective(initpop,m,n);
%画图显示初始图
plot(init_value_pop(:,n+1),init_value_pop(:,n+m),'B+')
pause(.1)
%非支配排序和聚集距离计算
[non_dominant_sort_pop, rankinfo]=func_sort(init_value_pop,m,n);
ns_dc_pop=func_crowding_dist(non_dominant_sort_pop,m,n,rankinfo);
%选择,交叉,变异产生下一个子代
poolsize=round(popnum/2);%选择进行交叉变异的个数
toursize=2;%选择锦标赛的元度
select_pop=func_select(ns_dc_pop,poolsize,toursize,m,n);
hc=20;%存储交叉变异相关参数
hm=20;
offspring=func_genetic(select_pop,m,n,hc,hm,xmax,xmin);
%循环开始
t=1;
while t<=gen
t
%合并种群(2N),进入循环
combine_pop(1:popnum,1:m+n+2)=ns_dc_pop;
[xsize ysize]=size(offspring);
combine_pop(popnum+1:popnum+xsize,1:m+n+2)=offspring;
%重新进行非支配排序和聚焦距离计算
[gen_non_dominant_pop,rankinfo]=func_sort(combine_pop,m,n);
nsdc_pop=func_crowding_dist(gen_non_dominant_pop,m,n,rankinfo);
%选择下一代的产生(然后用于交叉变异)
ns_dc_pop=func_offsprings(nsdc_pop,m,n,popnum);
%显示下一代的情况
plot(ns_dc_pop(:,n+1),ns_dc_pop(:,n+2),'r*')
grid on;
text(0,0,0,['第 ',int2str(t),' 代']);
pause(0.1)
%收敛性计算
if t>=(gen*0.9)
%导入标准解
opt=load('paretoZDT1.dat');
%得到函数解
funcval=ns_dc_pop(:,n+1:n+m);
for j=1:m %求取最大最小值
maxfval(j)=max(funcval(:,j));
minfval(j)=min(funcval(:,j));
end
distance=zeros(1,size(funcval,1));
sumfval=zeros(1,size(opt,1));
dsum=0;
for i=1:size(funcval,1)
for j=1:size(opt,1)
for k=1:m
sumfval(j)= sumfval(j)+((funcval(i,k)-opt(j,k))/(maxfval(k)-minfval(k)))^2;
end
end
distance(i)=sqrt(min(sumfval));
sumfval(:)=0;
dsum=dsum+distance(i);
end
c=dsum/size(funcval,1)
end
%选择,交叉,变异产生下一个子代
poolsize=round(popnum/2);%选择进行交叉变异的个数
toursize=2;%选择锦标赛的元度
select_pop=func_select(ns_dc_pop,poolsize,toursize,m,n);
hc=20;%存储交叉变异相关参数
hm=20;
offspring=func_genetic(select_pop,m,n,hc,hm,xmax,xmin);
t=t+1;
end
%显示标题
title('MOP using NSGA-II with DCD');
xlabel('Function 1');
ylabel('Function 2');
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2022A。 2.包含:程序,中文注释,参考文献,仿真操作步骤(使用windows media player播放)。 3.领域:双目标优化 4.仿真效果:仿真效果可以参考博客同名文章《基于NSGAII的双目标优化算法matlab仿真》 5.内容:基于NSGAII的双目标优化算法matlab仿真。NSGA-II是在NSGA的基础上改进而来,主要引入了精英保留策略和快速非支配排序等机制,旨在提高算法的收敛性和多样性。在双目标优化中,它的目标是找到一个解集(Pareto前沿),这个解集中每一个解都不存在被其他解支配的情况,即没有其他解在两个目标上同时更好。 6.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源推荐
资源详情
资源评论
收起资源包目录
基于NSGAII的双目标优化算法matlab仿真.rar (11个子文件)
操作步骤.mp4 4.56MB
参考文献.rar 99KB
untitled.jpg 32KB
code
main.m 3KB
paretoZDT1.dat 17KB
func
func_genetic.m 1KB
func_crowding_dist.m 969B
func_offsprings.m 2KB
func_sort.m 2KB
func_objective.m 625B
func_select.m 678B
共 11 条
- 1
资源评论
fpga和matlab
- 粉丝: 16w+
- 资源: 2561
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 下载安装这个软件.apk
- 【数据集详细解释及案例分析】数据集详细解释及案例分析
- 基于SHT71温湿度传感器、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- 基于TH02温湿度传感器、STM32F103C8T6、LCD1602、FREERTOS的温湿度采集系统proteus仿真设计
- 【TCP-IP协议详细解释及案例分析】TCP-IP协议详细解释及案例分析
- 一文搞懂 LSTM(长短期记忆网络).rar
- 【autosar简介及基本案例解析】autosar简介及基本案例解析
- java模拟斗地主洗牌发牌
- springboot+vue登录系统 vue部分
- 常用常见 SQL语句语法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功