当前位置: 首页 > news >正文

NSGA-II求解微电网多目标优化调度(MATLAB)

一、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:4pg=plotFigure(Xbest,Fbest,idxn);
end

(2)部分结果

pareto前沿:

 第1种.将两个目标函数值归一化相加,取相加后最小的目标值的粒子,即寻找折衷解并画图

第2种寻找总成本最低时的解并画图

第3种寻找运行成本最低时的解并画图

第4种寻找环境保护成本最低时的解并画图

四、完整MATLAB代码

http://www.lryc.cn/news/242138.html

相关文章:

  • 7-9 jmu-python-班级人员信息统计
  • Doris分区与分桶(八)
  • mac VScode 添加PHP debug
  • 53.最大子数组和
  • 455.分发饼干
  • 浏览器缓存控制讲解
  • 批量插入SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束
  • 北京数字孪生赋能工业制造,加速推进制造业数字化转型
  • 【NLP】GPT 模型如何工作
  • Linux下安装Foldseek并从蛋白质的PDB结构中获取 3Di Token 和 3Di Embedding
  • 单元测试-java.lang.NullPointerException
  • 机器学习数据集整理:图像、表格
  • Vue: Cannot find module @/xx/xx/xx.vue or its corresponding type declarations.
  • 怎样自动把网页截图发到微信群里
  • Netty实现websocket且实现url传参的两种方式(源码分析)
  • 深入理解C语言指针:基础概念、语法和实际应用
  • 百度云加速免费版下线,推荐几款目前仍旧免费的CDN
  • HarmonyOS(五)—— 认识页面和自定义组件生命周期
  • DevExpress WinForms TreeMap组件,用嵌套矩形可视化复杂分层数据
  • IO口速度影响了什么?
  • Verilog基础:时序调度中的竞争(一)
  • nginx 配置静态缓存全教程 (以及静态缓存文件没有生成)
  • 自己动手打包构建编译cri-dockerd
  • Self-Supervised Exploration via Disagreement论文笔记
  • 【网络奇幻之旅】那年我与区块链技术的邂逅
  • 1.5.1 git/svn日志格式规范
  • [autojs]ui线程中更新控件的值的问题
  • 机器视觉技术在现代汽车制造中的应用
  • 学习视频剪辑方法:AI智剪助力,批量处理短视频无忧
  • 振南技术干货集:制冷设备大型IoT监测项目研发纪实(3)