【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

简介: 【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

1 主要内容

之前发布了华电学报的复现程序《基于目标级联法的微网群多主体分布式优化调度》,具体链接为【防骗版】基于目标级联法的微网群多主体分布式优化调度,虽然对模型及结果进行了复现,但是部分模型细节和参数并没有完全实现,本次发布该程序的完整复现版本,主要实现的内容如下:

1.考虑多源异质分布式电源的出力随机性,增加风光出力的鲁棒约束;

2.完全复现基于目标级联法的分布式求解流程;

3.参数基本完全按照文献所列;

4.程序目标函数和约束条件和文献一致。

  • 程序主要内容

建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中心优化调度模型,下层是子微网优化调度模型,然后对所建递阶优化调度模型耦合性和分布性进行分析,采用一种新型的协同优化方法———目标级联法,实现上下层模型的解耦独立优化,以3微网为算例进行验证,证明方法的可行性。

  • 上层微网群模型

  • 下层微网模型

  • 模型流程图

2 部分程序

%最终迭代后结果图
figure;
wwz=max(gPpcc1,0);
wwf=min(gPpcc1,0);
yyf=[-x_P_ch1;wwf]';
bar(yyf,'
stack
');
hold on
yyz=[x_P_dis1;x_P_g1;PV1;x_c_ld1;wwz]'
;bar(yyz,'stack');
plot(Pload1+Pkk1,'r','LineWidth',1.5)
xlabel('时间/h');
ylabel('功率/MW');
title('微网1功率');
sy=legend('储能充电','接受微网群电功率','储能放电','柴油发电','光伏','负荷响应','供给其他微网','微网1负荷');
sy.NumColumns = 3;
figure;
wwz=max(gPpcc2,0);
wwf=min(gPpcc2,0);
yyf=[-x_P_ch2;wwf]';
bar(yyf,'
stack
');
hold on
yyz=[x_P_dis2;x_P_g2;PW2;x_c_ld2;wwz]'
;bar(yyz,'stack');
plot(Pload2+Pkk2,'r','LineWidth',1.5)
xlabel('时间/h');
ylabel('功率/MW');
title('微网2功率');
sy=legend('储能充电','接受微网群电功率','储能放电','柴油发电','风电','负荷响应','供给其他微网','微网2负荷');
sy.NumColumns = 3;
figure;
wwz=max(gPpcc3,0);
wwf=min(gPpcc3,0);
yyf=[-x_P_ch3;wwf]';
bar(yyf,'
stack
');
hold on
yyz=[x_P_dis3;sum(x_P_g3);PW3;PV3;x_c_ld3;wwz]'
;bar(yyz,'stack');
plot(Pload3+Pkk3,'r','LineWidth',1.5)
xlabel('时间/h');
ylabel('功率/MW');
title('微网3功率');
sy=legend('储能充电','接受微网群电功率','储能放电','柴油发电','风电','光伏','负荷响应','供给其他微网','微网3负荷');
sy.NumColumns = 3;
figure;
plot(pv13,'r-o','LineWidth',1)
hold on
plot(pw2,'b-*','LineWidth',1)
plot(pw3,'m-s','LineWidth',1)
legend('MG1/MG3光伏','MG2风电','MG3风电');
xlabel('预测时段/h');
ylabel('可再生能源预测出力/p.u.');
grid on
figure;
plot(ploadz,'r-o','LineWidth',1)
hold on
plot(pload1,'b-*','LineWidth',1)
plot(pload2,'m-s','LineWidth',1)
plot(pload3,'c-^','LineWidth',1)
legend('微网群负荷','子微网1负荷','子微网2负荷','子微网3负荷');
xlabel('预测时段/h');
ylabel('预测负荷功率/p.u.');
grid on
figure;
title_name = '独立优化模型惩罚项';
title(title_name);   %%关键
plot(faz,'b-o','LineWidth',1.5);
hold on
plot(fa1,'b-o','LineWidth',1.5);
plot(fa2,'r-*','LineWidth',1.5);
plot(fa3,'k-^','LineWidth',1.5);
xlabel('迭代次数');
ylabel('独立优化模型惩罚项/元');
grid on
figure;
title_name = '最大连接变量偏差';
title(title_name);   %%关键
plot(detamax,'m-o','LineWidth',1.5);
xlabel('迭代次数');
ylabel('最大连接变量偏差/kW');
grid on
figure;
title_name = '整体经济性';
title(title_name);   %%关键
plot(y4,'b-o','LineWidth',1.5);
xlabel('迭代次数');
ylabel('整体经济性/元');
grid on
figure;
subplot(311)
plot(gPpcc1c,'--','LineWidth',1.5)
hold on
plot(gPMGc(1,:),'-','LineWidth',1.5)
grid on
legend('下层连接变量值','上层连接变量值');
xlabel('迭代次数');
ylabel('子微网1联络功率');
% ylim([0 200]);
subplot(312)
plot(gPpcc2c,'--','LineWidth',1.5)
hold on
plot(gPMGc(2,:),'-','LineWidth',1.5)
grid on
xlabel('迭代次数');
ylabel('子微网2联络功率');
% ylim([0 500]);
subplot(313)
plot(gPpcc3c,'--','LineWidth',1.5)
hold on
plot(gPMGc(3,:),'-','LineWidth',1.5)
grid on
xlabel('迭代次数');
ylabel('子微网3联络功率');


3 程序结果

4 下载链接

相关文章
|
10天前
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
182 66
|
1月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
70 4
|
2月前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
105 1
|
3月前
|
算法
基于粒子群算法的分布式电源配电网重构优化matlab仿真
本研究利用粒子群算法(PSO)优化分布式电源配电网重构,通过Matlab仿真验证优化效果,对比重构前后的节点电压、网损、负荷均衡度、电压偏离及线路传输功率,并记录开关状态变化。PSO算法通过迭代更新粒子位置寻找最优解,旨在最小化网络损耗并提升供电可靠性。仿真结果显示优化后各项指标均有显著改善。
|
3月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
165 0
|
5月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
112 5
|
5月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
103 0
|
5月前
|
自然语言处理 Java
自研分布式训练框架EPL问题之实现显存的极致优化如何解决
自研分布式训练框架EPL问题之实现显存的极致优化如何解决
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
1月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
104 5