一、NSGA-II简介
NSGA-Ⅱ算法是Kalyanmoy Deb等人于 2002年在 NSGA 的基础上提出的,它比 NSGA算法更加优越:它采用了快速非支配排序算法,计算复杂度比 NSGA 大大的降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的共享半径 shareQ,并在快速排序后的同级比较中作为胜出标准,使准 Pareto 域中的个体能扩展到整个 Pareto 域,并均匀分布,保持了种群的多样性;引入了精英策略,扩大了采样空间,防止最佳个体的丢失,提高了算法的运算速度和鲁棒性。
NSGA-Ⅱ就是在第一代非支配排序遗传算法的基础上改进而来,其改进主要是针对如上所述的三个方面:
①提出了快速非支配排序算法,一方面降低了计算的复杂度,另一方面它将父代种群跟子代种群进行合并,使得下一代的种群从双倍的空间中进行选取,从而保留了最为优秀的所有个体;
②引进精英策略,保证某些优良的种群个体在进化过程中不会被丢弃,从而提高了优化结果的精度;
③采用拥挤度和拥挤度比较算子,不但克服了NSGA中需要人为指定共享参数的缺陷,而且将其作为种群中个体间的比较标准,使得准Pareto域中的个体能均匀地扩展到整个Pareto域,保证了种群的多样性。
二、微网系统运行优化模型
微电网优化模型介绍:
weixin的博客_CSDN博客46204734/article/details/132700070?csdnshare_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132700070%22%2C%22source%22%3A%22weixin_46204734%22%7D
三、NSGA2求解微电网多目标优化调度
(1)部分代码
close all; clear ; clc; global P_load; %电负荷 global WT;%风电 global PV;%光伏 %% addpath('./NSGA2/')%添加算法路径 TestProblem=1; MultiObj = GetFunInfo(TestProblem); MultiObjFnc=MultiObj.name;%问题名 % Parameters params.Np = 100; % Population size params.Nr = 200; % Archive size params.maxgen = 200; % Maximum number of iteration params.ngrid = 20; % Number of grids in each dimension [Xbest,Fbest] = NSGA2(params,MultiObj); %% 画结果图ParetoFont figure(1) plot(Fbest(:,1),Fbest(:,2),'ko'); legend('NSGA2'); xlabel('运行成本') ylabel('环境保护成本') saveas(gcf,'./Picture/ParetoFont.jpg') %将图片保存到Picture文件夹下面 %% 比较不同目标函数寻优对调度结果的影响 %idxn=1 第1种.将两个目标函数值归一化相加,取相加后最小的目标值的粒子,即寻找折衷解并画图 %idxn=2 第2种寻找总成本最低时的解并画图 %idxn=3 第3种寻找运行成本最低时的解并画图 %idxn=4 第4种寻找环境保护成本最低时的解并画图 for idxn=1:4 pg=plotFigure(Xbest,Fbest,idxn); end
(2)部分结果
pareto前沿:
第1种.将两个目标函数值归一化相加,取相加后最小的目标值的粒子,即寻找折衷解并画图
第2种寻找总成本最低时的解并画图
第3种寻找运行成本最低时的解并画图
第4种寻找环境保护成本最低时的解并画图