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

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

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 下载链接

相关文章
|
3月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
122 1
|
13天前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
35 1
|
1月前
|
算法
基于粒子群算法的分布式电源配电网重构优化matlab仿真
本研究利用粒子群算法(PSO)优化分布式电源配电网重构,通过Matlab仿真验证优化效果,对比重构前后的节点电压、网损、负荷均衡度、电压偏离及线路传输功率,并记录开关状态变化。PSO算法通过迭代更新粒子位置寻找最优解,旨在最小化网络损耗并提升供电可靠性。仿真结果显示优化后各项指标均有显著改善。
|
1月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
95 0
|
3月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
90 5
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
63 0
|
3月前
|
自然语言处理 Java
自研分布式训练框架EPL问题之实现显存的极致优化如何解决
自研分布式训练框架EPL问题之实现显存的极致优化如何解决
|
3月前
|
SQL 存储 分布式计算
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
56 0
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
3月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
107 2
基于Redis的高可用分布式锁——RedLock

热门文章

最新文章