【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、详细文章


💥1 概述

随着分布式电源(distributed generation,DG)的渗透率不断提高,传统的配电网系统从被动单向的

供电网络转变为功率双向流动的有源网络,使得配电网运行和控制面临诸多新挑战。依靠网络升级或运行结构变化等方法维持配电网可靠运行的成本高而且被动,将不再适用。采用主动策略来控制和管理配电网中的分布式可控资源成为系统运行方式优化以及提高可再生能源渗透率的主要手段。

2008 年,国际大电网会议(CIGRE)提出了“配电网主动运行与发展”研究主题[1],主动配电网(active

distribution network,ADN)是在主网和配网协同控制的基础上,具有分布式发电、储能和需求侧响应等电源、负荷调控手段,能够针对电力系统的实际运行状态,以安全性、经济性为调控目标,适应 调节其电源、网络及负荷的配电网。

随着 ADN 的分布式特性越来越明显,数据交互越来越多,控制方式越来越灵活,传统的集中式

控制方法已难以实现对 ADN 中多种 DG 的灵活、有效控制。近年来,国内外学者对 AND 的分布式电压无功优化控制问题展开了研究。文献[5-6]提出多时空尺度下 ADN 分布式协调控制框架,从短期区域自治和长期全局优化 2 个不同时空尺度研究了协调控制策略。此方案将分布式控制与集中式控制相结合,实现混合式优化,并未完全摆脱集中式控制束缚。多代理系统(multiple agent system,MAS)具有良好的自治性、适应性、协调性和社会性,ADN 分布式电压控制中得到应用。

ADMM 算法形式简单、收敛性好、鲁棒性强,且不要求子优化目标函数严格凸和有限,是近年来获得广泛应用的分布式数学优化方法:

📚2 运行结果

 

 本代码是较为全面的ADMM算法代码,实现了三种ADMM迭代方式,分别是:
1、普通常见的高斯-赛德尔迭代法
2、论文<基于串行和并行ADMM算法的电_气能量流分布式协同优化_瞿小斌>中的串行高斯-赛德尔迭代方法
3、论文<基于串行和并行ADMM算法的电_气能量流分布式协同优化_瞿小斌>中的并行雅克比迭代方法
程序的应用场景为参考文献<主动配电网分布式无功优化控制方法_梁俊文>中的无功优化方法,具体区域的划分可能有
细微差别,但是方法通用;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]瞿小斌,文云峰,叶希等.基于串行和并行ADMM算法的电—气能量流分布式协同优化[J].电力系统自动化,2017,41(04):12-19.

[2]梁俊文,林舜江,刘明波.主动配电网分布式无功优化控制方法[J].电网技术,2018,42(01):230-237.DOI:10.13335/j.1000-3673.pst.2017.1331.

🌈4 Matlab代码、数据、详细文章

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 ADMM 算法优化 ESN 的权值 w 的 MATLAB 代码: ```matlab % ESN参数设置 N = 100; % ESN的神经元数量 sparsity = 0.1; % ESN的稀疏度 spectral_radius = 0.9; % ESN的谱半径 input_scaling = 1; % 输入信号的缩放比例 output_feedback_scaling = 0.5; % 输出反馈信号的缩放比例 washout_length = 100; % ESN的冲洗长度 regression_parameter = 1e-8; % ESN的回归参数 % 生成ESN的权值矩阵 input_weights = rand(N, 1) - 0.5; input_weights = input_scaling * input_weights / max(abs(eig(input_weights))); feedback_weights = rand(N, 1) - 0.5; feedback_weights = output_feedback_scaling * feedback_weights / max(abs(eig(feedback_weights))); reservoir_weights = sprand(N, N, sparsity); reservoir_weights(abs(reservoir_weights) > 0) = reservoir_weights(abs(reservoir_weights) > 0) - 0.5; reservoir_weights = spectral_radius * reservoir_weights / max(abs(eig(reservoir_weights))); % 读取数据 data = load('data.mat'); train_data = data.train_data; train_label = data.train_label; % 初始化ADMM算法的参数 max_iter = 1000; rho = 1; w = zeros(N+1, 1); z = zeros(N+1, 1); u = zeros(N+1, 1); % 优化ESN的权值矩阵 for iter = 1:max_iter % 更新w M = [train_data, ones(size(train_data, 1), 1)]; A = M' * M + 2 * rho * eye(N+1); b = M' * train_label + 2 * rho * (z - u); w = A \ b; % 更新z x = [train_data, ones(size(train_data, 1), 1)] * w; z = max(0, x + u - regression_parameter) + min(0, x + u + regression_parameter); % 更新u u = u + x - z; end % 测试ESN的性能 test_data = data.test_data; test_label = data.test_label; M = [test_data, ones(size(test_data, 1), 1)]; output = M * w; mse = mean((output - test_label).^2); fprintf('测试误差:%f\n', mse); ``` 其中,`data.mat` 包含训练数据和测试数据。训练数据包括 `train_data` 和 `train_label`,测试数据包括 `test_data` 和 `test_label`。在这个例子中,我们使用 ADMM 算法优化 ESN 的权值矩阵,以最小化训练误差。测试误差用于评估 ESN 的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值