二阶锥潮流Distfolw(OPF)

二阶锥潮流Distfolw(OPF)

引言
本文将介绍以下几点内容:
1.什么是最优潮流。
2.什么直流潮流,什么是交流潮流。
3.支路潮流法的相角松弛。
4.支路潮流法的二阶锥松弛。
5.支路潮流法的适用范围。
6.举于matlab的代码实现。
正文
什么是最优潮流?
有学过电力系统分析的同学,对这个概念都有了解。一言以蔽之,就是通过调整发电机出力,电容器投入退出等操作,使得电力系统网络潮流发生改变。以达到发电成本最低,或者网络损耗最低。
什么是直流潮流,什么是交流潮流?
由于正常写出得交流潮流方程组是非凸的,所以要对其进行一定的松弛才能保证模型可解。在输电网中由于电阻远小于电抗,因此松弛过程中忽略了,电阻的影响,也不考虑无功分布的影响,因此把这种松弛后的潮流方程叫做直流潮流。在配电网中电阻与电抗接近,因此不能忽略电阻的影响,同时考虑电阻和电抗的影响的潮流方程叫做交流潮流。具体的,更详细的定义,建议查看专业书籍。.
支路潮流法的推导过程
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
适用的例子
在这里插入图片描述

U_B=12.66*10^3;%额定电压为12.66kV
S_B=100*10^6;%转换为标幺值
I_B=S_B/(1.73*U_B); %带有根号3
MAX_I=100/I_B;%每条支路的最大电流为100A
_B = U_B ^ 2 / S_B;
D_G = xlsread('IEEE32', '分布式电源信息'); %第一列为分布式电源所在位置,第二列为有功出力上限,第三列为无功出力上限(kW,kVar)
Banch_info = xlsread('IEEE32', '系统支路信息'); %一二列为首端节点和末端节点,三四列为电阻和电抗
Nodes_load = xlsread('IEEE32', '系统节点信息'); %第一列表示节点,第二三列表示有功无功负荷(kW,kVar)
D_G(:,2:3)=10^3*D_G(:,2:3)./S_B;
Banch_info(:,3:4)=Banch_info(:,3:4)./Z_B;
Nodes_load(:,2:3)=10^3*Nodes_load(:,2:3)./S_B;
error = 0.05; %电压允许的波动范围
V = sdpvar(32, 1, 'full'); %节点电压
l = sdpvar(31, 1, 'full'); %支路电流
P_G = sdpvar(8, 1, 'full'); %分布式电源有功出力
Q_G = sdpvar(8, 1, 'full'); %分布式电源无功出力
P_line = sdpvar(31, 1, 'full'); %线路有功潮流
Q_line = sdpvar(31, 1, 'full'); %线路无功潮流
%%----------约束------------%
st = [];
%功率平衡约束
for j = 1 : 32
    [r_out, ~] = find(Banch_info(:, 1) == j); %找出从节点j流出的功率,P_line_jx;
    [r_in, ~] = find(Banch_info(:, 2) == j); %找出流入节点j的功率,P_line_xj;
    [r_G, ~] = find(D_G(:, 1) == j);
    st = [st, -Nodes_load(j, 2)== sum(P_line(r_out)) - sum(P_line(r_in) -Banch_info(r_in, 3) .* l(r_in)) - sum(P_G(r_G))];
    st = [st, -Nodes_load(j, 3) == sum(Q_line(r_out)) - sum(Q_line(r_in) -Banch_info(r_in, 4) .* l(r_in)) - sum(Q_G(r_G))];
end
%电压约束
for j = 1 : 32
    if j == 1
        st = [st, V(j) ==1]; %选择平衡节点
    else
        [r_in, ~] = find(Banch_info(:, 2) == j); %找出以为节点j作为末端节点,首段节点
        st = [st, V(j) == V(Banch_info(r_in, 1)) - 2 .* (Banch_info(r_in, 3) .* P_line(r_in) + Banch_info(r_in, 4) .* Q_line(r_in)) + (Banch_info(r_in, 3) .^ 2 + Banch_info(r_in, 4) .^ 2) .* l(r_in)];
    end
end
%二阶锥松弛
for j = 1 : 32
    [r_in, ~] = find(Banch_info(:, 2) == j); %找出以为节点j作为末端节点,首段节点
    st = [st, norm([2 .* P_line(r_in); 2 .* Q_line(r_in); (V(j) - l(r_in))], 2) <= V(j) + l(r_in)];
end
%电压约束
for j = 1 : 32
    st = [st, (1 - error)  ^ 2 <= V(j) <= (1 + error) ^ 2];
end
%功率上下界约束
for j = 1 : 8
    st = [st, 0 <= P_G(j) <= D_G(j, 2), 0 <= Q_G(j) <= D_G(j, 3)];
end
%电流的上下界
for j = 1 : 31
    st = [st, 0 <= l(j) <= MAX_I ^ 2];
end
% %%----------目标函数---------%%
% %%最小网损
obj = 0;
for j = 1 : 32
    [r_in, ~] = find(Banch_info(:, 2) == j); %找出流入节点j的功率,P_line_xj;
    obj = obj + sum(Banch_info(r_in, 3) .* l(r_in));
end
%%---------求解------------%%
ops = sdpsettings('solver', 'gurobi');
[model,recoverymode,diagnostic,interalmodel]=export(st,obj);
result = solvesdp(st, obj, ops);
value(obj)


















求解的软件是matlab+yalmip+gurobi。
支路潮流法适用于辐射状的网络。
相应的节点参数会上传到资源库,供大家免费下载

  • 29
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
潮流计算(OPF)是电力系统运行中的一项核心任务,它主要用于求解电力系统各节点的电压相角和电流大小。随着计算机技术的发展,Python成为了一种广泛使用的编程语言,并且在电力系统领域也有很多应用。 Python提供了丰富的数学计算工具和优化算法库,这使得使用Python进行潮流计算变得更加简便高效。通过Python可以方便地使用科学计算库NumPy和计算工具包SciPy进行矩阵运算和优化问题求解。另外,Python还有一些专门用于电力系统计算的库,如Power System Analysis Toolbox (PSAT)和 PYPOWER,它们提供了一系列的函数和模型,可以方便地进行潮流计算和电力系统分析。 在使用Python进行潮流计算时,首先需要构建电力系统的数学模型,包括节点导纳矩阵、节点功率方程和节点电压方程等。然后,通过使用梯度下降法、牛顿-拉夫逊法等优化算法,求解模型中的未知量,即各节点的电压相角和电流大小。最后,通过结果的分析和比较,可以得到电力系统各节点的电压稳定性和功率平衡情况。 使用Python进行潮流计算的优势在于,它具有灵活的编程语言特性,可以自定义模型和算法,便于适应不同的电力系统计算需求。此外,Python还有丰富的可视化工具和数据处理库,可以直观地展示和分析潮流计算结果,提高计算效率和可视化效果。 总之,Python是进行潮流计算的一种强大工具,它具有丰富的数学算法库和灵活的编程特性,能够方便地进行潮流计算和电力系统分析。通过Python,我们能够更加方便地求解电力系统的各节点参数,为电力系统的规划和运行提供有力的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值