1.软件版本

matlab2021a

2.本算法理论知识

NSGA-II适合应用于复杂的、多目标优化问题。是K-Deb教授于2002在论文:A Fast and Elitist Multiobjective Genetic Algorithm:NSGA-II,中提出。在论文中提出的NSGA-II解决了NSGA的主要缺陷,实现快速、准确的搜索性能。NSGA的非支配排序的时间复杂度为O(MN3)O(MN3),在种群规模N较大时排序的速度会很慢。NSGA-II使用带精英策略的快速非支配排序,时间复杂度为O(M(2N)2)O(M(2N)2),排序速度有大幅的提升。而且使用了精英策略,保证了找到的最优解不会被抛弃,提高了搜索性能。另一方面NSGA使用共享函数来使解分布均匀,该函数依赖于共享参数σshareσshare的选择,而且共享函数的复杂度高达O(N2)O(N2)。NSGA-II从新定义了拥挤距离来代替共享参数。其算法流程如下:

3.核心代码

clc;
clear;
close all;
warning off;global Len;
global WindDataPV;
global SolarDataPVR;
global LoadDataPV;%数据长度
Len     = 876;
[WindDataPV,SolarDataPVR,LoadDataPV] = ReadLocalClimaticData(Len);
%初始化参数
popnum         = 120;
gen            = 100;
%变量取值范围
xmin           = 0;
xmax           = 1;
%目标函数个数
m              = 3;
%决策变量数目
n              = 30;
%交叉变异参数
hc             = 15;
hm             = 15;
%产生初始种群
initpop        = rand(popnum,n)*(xmax-xmin)+xmin;
init_value_pop = value_objective(initpop,m,n);%画图显示初始图
figure
plot(init_value_pop(:,n+1),init_value_pop(:,n+m),'B+')
pause(.1)%非支配排序和聚集距离计算
[non_dominant_sort_pop,rankinfo] = non_dominant_sort(init_value_pop,m,n);
ns_dc_pop                        = crowding_distance(non_dominant_sort_pop,m,n,rankinfo);
%选择,交叉,变异产生下一个子代
%选择进行交叉变异的个数
poolsize   = round(popnum/2);
%选择锦标赛的元度
toursize   = 2;
select_pop = selection(ns_dc_pop,poolsize,toursize,m,n);
%存储交叉变异相关参数
hc         = 20;
hm         = 20;
offspring  = genetic_operate(select_pop,m,n,hc,hm,xmax,xmin);%循环开始
t=1;
while t<=gent%合并种群(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]            = non_dominant_sort(combine_pop,m,n);nsdc_pop                                   = crowding_distance(gen_non_dominant_pop,m,n,rankinfo);%选择下一代的产生(然后用于交叉变异)ns_dc_pop                                  = generate_offsprings(nsdc_pop,m,n,popnum);%显示下一代的情况N_decision_varif m==2 plot(ns_dc_pop(:,n+1),ns_dc_pop(:,n+2),'r*')elseif m==3  plot3(ns_dc_pop(:,n+1),ns_dc_pop(:,n+2),ns_dc_pop(:,n+3),'kd')  xlabel('Function 1');ylabel('Function 2');zlabel('Function 3');view([44,34]); endgrid on;text(0,0,0,['第 ',int2str(t),' 代']);pause(0.1)    %选择,交叉,变异产生下一个子代poolsize   = round(popnum/2);%选择进行交叉变异的个数toursize   = 2;%选择锦标赛的元度select_pop = selection(ns_dc_pop,poolsize,toursize,m,n);hc         = 20;%存储交叉变异相关参数hm         = 20;offspring  = genetic_operate(select_pop,m,n,hc,hm,xmax,xmin);t          = t+1;
end
%显示标题
xlabel('经济效益');
ylabel('缺失率%');
zlabel('排污水平');
view([44,34]); 

4.操作步骤与仿真结论

运行NSGA2.m,得到如下仿真结果:

三目标优化的优化目标为:

全寿命周期经济现值,排放水平,负荷容量缺电率;

用NSGAii算法,则可以方便的得到其对应的三维图,获得如下的结果:

5.参考文献

[1]刘旭红, 刘玉树, 张国英,等. 多目标优化算法NSGA-II的改进[J]. 计算机工程与应用, 2005, 41(15):3.

A06-33

6.完整源码获得方式

方式1:微信或者QQ联系博主

方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码

【NSGAII】基于NSGAII的多目标优化算法的MATLAB仿真相关推荐

  1. 基于NSGAII的多目标优化算法的MATLAB仿真

    1.算法简介 NSGA-II在引入算术交叉算子的同时,提出并引入累积排序适应度赋值策略.实验表明,INSGA具有更高的收敛速度和更好的种群多样性. 2.部分核心代码 clc; clear; close ...

  2. NSGA2多目标优化算法的MATLAB仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 首先将一群具有多个目标的个体(解集,或者说线代里的向量形式)作为父代初始种群,在每一次迭代中,GA操 ...

  3. 基于VAGWO速度辅助灰狼优化算法的matlab仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  4. 基于遗传算法的多目标优化算法(附代码案例)

    一.理论基础 多目标优化问题可以描述如下: 其中,f(x) 为待优化的目标函数:x 为 待优化的变量:lb 和 ub 分别为变量 x 的下限和上限约束:Aeq * x = beq 为变量 x 的线性等 ...

  5. 《MATLAB智能算法30个案例》:第9章 基于遗传算法的多目标优化算法

    <MATLAB智能算法30个案例>:第9章 基于遗传算法的多目标优化算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析> ...

  6. matlab基于遗传算法的多目标优化算法(附代码获取方法)

    介绍 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 目前的多目标优化算法有很多, Kalyanmoy Deb的带精英策略的快速非支配排序遗传算法( ...

  7. 基于NSGAII的多目标遗传优化算法的matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 在遗传算法在解决多目标优化遇到瓶颈时,许多学者花费了不少时间和精力在多目标优化的遗传算法上,Goldberg首先将Pareto ...

  8. 基于免疫算法的认知无线电资源分配优化算法的matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 认知无线电(CR)的概念来自Joseph Mitolo博士1999年的开创性工作.它自适应地调整内部 ...

  9. 基于PSO的运输优化算法的MATLAB仿真

    假设有一个收集轨道,上面有5个采集堆,这5个采集堆分别被看作一个4*20的矩阵(下面只有4*10),每个模块(比如:A31和A32的元素含量不同),为了达到采集物品数量和元素含量的要求(比如:需采集5 ...

最新文章

  1. Android 替换TextView 里面指定的符号
  2. 使用 Rx 中预定义的 Subject
  3. springboot加载外部xml_SpringBoot读取外部配置文件的方法
  4. mysql 优化方法_Mysql的优化方法介绍
  5. 基于Java+SpringMvc+vue+element实现驾校管理系统详细设计
  6. JVM优化系列-常用GC参数总结
  7. JavaScript 继承
  8. 传统行业生意,现在想要发财
  9. C++学习之路: 前向申明
  10. java 骰子游戏_Java编写掷骰子游戏
  11. 为什么很多人交易十几年都做不到稳定盈利呢?
  12. 华为/荣耀 笔记本 HiboardDataReport.exe应用程序错误
  13. Windows无法解压文件-potentially harmful
  14. 如何建立微信微社区?
  15. 小程序源码:全新超火的微信小说小程序源码-自带采集带安装教程-多玩法安装简单
  16. [设备驱动] 最简单的内核设备驱动--字符驱动
  17. 卷三十一 汉纪二十三
  18. a pubhub service
  19. logTracker错误日志跟踪组件(二)
  20. Deprecated Gradle features were used in this build, making it incompatible with Gradle

热门文章

  1. Swift - 移除页面视图上的所有元素
  2. Linux 下五款出色的流媒体客户端
  3. JavaScript类库
  4. GridView RowCommand 获取列值
  5. Behavior行为
  6. java 两行代码解析json文件
  7. 2016/09/12
  8. break 与continue 语句
  9. oracle中的备注的配置与查询
  10. virtual hust 2013.6.23 数学杂题基础题目 M - Quotient Polynomial