微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)

简介: 微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)

1 概述

微电网有望在未来的智能电网概念中发挥基本作用。特别是直流微电网,由于其在效率、可靠性和可控性方面的优势,正获得越来越多的关注。直流微电网由于没有无功功率或频率控制,因此可以实现高效率和简化控制;由于具有孤岛运行的能力,因此可以实现高可靠性;由于许多发电和存储技术已经是直流的(如太阳能光伏发电、电池),因此可以实现简单的集成。此外,大多数家用电器可以适应直流操作。在一个典型的直流微电网中,电力电子转换器可以作为恒定电流或恒定功率运行。在后一种情况下,电网的模型变成了非线性的,需要用功率流算法进行静止状态分析。这个问题是非线性/非凸性的,需要用数值算法来解决。当然,由于问题的非线性性质,这类算法的收敛性并不总是得到保证。一个算法甚至可能发散或趋向于一个不现实的解决方案。


2 最优潮流

最优潮流(OPF)是指在满足电网约束的同时,以最小的成本将负荷分配给电厂。描述为在满足网络(潮流)约束的情况下最小化所有承诺的工厂的总燃料成本的优化问题。

更多知识点查看:最优潮流


3 电力系统强大的CVX

本文程序需要安装CVX,我在前面的文章对这一强大工具进行讲解:

电力系统强大的CVX学习(Matlab&Python)

4 直流电网中最优潮流(OPF)的凸优化

4.1 Matlab代码

%% 直流电网中最优潮流(OPF)的凸优化
clc
clear all
Vnom = 400E3;
Pnom = 1E9;
Znom = Vnom*Vnom/Pnom;
%% 线路数据
%       N1  N2 Ohm      
Lines =[1 2  3.42
        2 3  2.28        
        2 4  5.70
        3 4  4.56
        4 5  1.90
        3 6  1.90
        5 6  2.85];
Lines(:,3) = Lines(:,3)/Znom;  % in pu
%% 节点数据
% Node Pmin(kW) Pmax(MW) Droop(pu)
Nodes =[1    -2400   2400   0.50
        2        0      0   0.00
        3    -2400   2400   0.50
        4    -2400   2400   0.50 
        5      800    800   0.00 
        6     1600   1600   0.00];     
Nodes(:,2:3) = Nodes(:,2:3)*1E6/Pnom;
NumE = length(Lines(:,1));  %线路数 
NumN = length(Nodes(:,1));  % 节点数
Pmin = Nodes(:,2);
Pmax = Nodes(:,3);
H    = Nodes(:,4);
%% 矩阵G
G = zeros(NumN,NumN); 
for k = 1:NumE
    n1 = Lines(k,1);
    n2 = Lines(k,2);
    gkm = 1/(Lines(k,3));
    G(n1,n1) = G(n1,n1) + gkm;
    G(n2,n2) = G(n2,n2) + gkm;
    G(n1,n2) = G(n1,n2) - gkm;
    G(n2,n1) = G(n2,n1) - gkm;
end
%不考虑松弛节点,因此节点数等于线数,因为网格是径向的。
U = ones(NumE,1);
%% 电力系统强大的求解器CVX
cvx_begin
    variable V(NumN);
    variable P(NumN);
    minimize (V'*G*V);
    subject to
      P == G*V-sum(G)' + V.*sum(G)';
      P <= Pmax;
      P >= Pmin;
      V >= 0.9;
cvx_end
[V, P]
% 
U = ones(NumN,1);
V = U;
P = diag(V)*(G*V)+H.*(U-V);
tic
for k = 1:10
cvx_begin quiet
    variable dV(NumN);
    variable dP(NumN);
    minimize ((V+dV)'*G*(V+dV));
    subject to
    -[diag(H)-diag(V)*G-diag(G*V)]*dV == dP;
    P+dP-H.*(U-V)+H.*dV <= Pmax;
    P+dP-H.*(U-V)+H.*dV >= Pmin;
    V+dV >= 0.9;
    V+dV <= 1.1;    
cvx_end
if norm([dV;dP])<1E-5
    break
end
disp('-----------------------------------------------');
disp(k);
disp(cvx_status);
disp(cvx_optval);
V = V + dV;
P = diag(V)*(G*V)+H.*(U-V);
disp([dV, dP, V, P])%
gr(k) = cvx_optval;
end
toc
%% 可视化
plot(gr,'Color','r','Marker','*','LineWidth',2);
grid on;


4.2 运行结果

5 微电网中最优潮流(OPF)的凸优化

5.1 Matlab代码

%% 微电网中最优潮流(OPF)的凸优化
clc
clear all
R = 1.5E-3;
Vnom = 380;
Pnom = 1000;
Znom = Vnom*Vnom/Pnom;
%% 线路数据
%       N1  N2 lenght(m)      
Lines =[1 2  50
        2 3  15
        2 4  20
        4 5  18
        2 6  23
        6 7  17
        7 8  21
        7 9  13
        8 10 15];
Lines(:,3) = Lines(:,3)*R/Znom;  % in pu
%% 节点数据
% Node Pmin(kW) Pmax(kW) Droop(pu)
Nodes =[1    0.00   0.00   0.00
        2  -10.00  -7.50   0.50 
        3  -10.00  -6.30   0.60
        4    0.00  10.00   0.50
        5  -10.00  -8.00   0.50  
        6  -10.00  -9.00   0.60
        7    0.00   9.00   0.50
        8    0.00   9.00   0.60
        9    0.00   9.00   0.50
        10 -10.00  -5.50   0.60];     
Nodes(:,2:3) = Nodes(:,2:3)/Pnom*1000;
NumE = length(Lines(:,1));  % 线路数  
NumN = length(Nodes(:,1));  % 节点数
Pmin = Nodes(:,2);
Pmax = Nodes(:,3);
H    = Nodes(:,4);
%% 矩阵G
G = zeros(NumN,NumN); 
for k = 1:NumE
    n1 = Lines(k,1);
    n2 = Lines(k,2);
    gkm = 1/(Lines(k,3));
    G(n1,n1) = G(n1,n1) + gkm;
    G(n2,n2) = G(n2,n2) + gkm;
    G(n1,n2) = G(n1,n2) - gkm;
    G(n2,n1) = G(n2,n1) - gkm;
end
%不考虑松弛节点,因此节点数等于线数,因为网格是径向的。
U = ones(NumE,1);
%% 电力系统强大的求解器CVX
cvx_begin
    variable V(NumN);
    variable P(NumN);
    minimize (V'*G*V);
    subject to
      P == G*V-sum(G)' + V.*sum(G)';
      P <= Pmax;
      P >= Pmin;
      V >= 0.9;
cvx_end
[V, P]
% 
U = ones(NumN,1);
V = U;
P = diag(V)*(G*V)+H.*(U-V);
for k = 1:10
cvx_begin quiet
    variable dV(NumN);
    variable dP(NumN);
    minimize ((V+dV)'*G*(V+dV));
    subject to
    -[diag(H)-diag(V)*G-diag(G*V)]*dV == dP;
    P+dP-H.*(U-V)+H.*dV <= Pmax;
    P+dP-H.*(U-V)+H.*dV >= Pmin;
    V+dV >= 0.9;
    V+dV <= 1.1;    
cvx_end
if norm([dV;dP])<1E-4
    break
end
disp('-----------------------------------------------');
disp(k);
disp(cvx_status);
disp(cvx_optval);
V = V + dV;
P = diag(V)*(G*V)+H.*(U-V);
disp([dV, dP, V, P])
gr(k) = cvx_optval;
end
%% 可视化
plot(gr,'Color','r','Marker','*','LineWidth',2);
grid on;


5.2 结果

6 写在最后

部分理论引用网络文献,若有侵权请联系博主删除。

相关文章
|
2月前
|
算法 调度
基于CVX凸优化的电动汽车充放电调度matlab仿真
本程序基于CVX凸优化实现电动汽车充放电调度,通过全局和局部优化求解,展示了不同情况下的负载曲线。程序在MATLAB 2022a上运行,有效平抑电网负荷峰值,提高电网稳定性。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
211 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
135 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
95 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
算法
基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真
```markdown # 摘要 本课题聚焦于基于仿射区间的分布式三相配电网潮流算法在MATLAB2022a中的仿真。算法利用仿射运算处理三相不平衡情况及分布式电源注入,旨在提供比区间算法更精确的不确定区域。仿真结果展示了算法优势。核心程序设计考虑了PQ、PV及PI节点,将不同类型的节点转换统一处理,以适应含分布式电源的配电网潮流计算需求。 ``` 这个摘要以Markdown格式呈现,总字符数为233,满足了240字符以内的要求。
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
7月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
7月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
7月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)