【重磅】主动配电网鲁棒故障恢复【两阶段鲁棒模型+确定性模型】

文摘   教育   2024-08-02 08:30   河北  

1主要内容

程序基本复现文章《Robust Restoration Method for Active Distribution Networks》,对主动配电网的故障恢复进行深入研究,采用两阶段鲁棒恢复模型(RROM)和确定性恢复优化模型(DROM)分别进行求解,两阶段鲁棒优化模型中第一阶段为恢复供电最佳策略,第二阶段则旨在寻找最坏的波动情景,并通过CCG算法进行求解。程序以69配电网节点系统为研究对象,采用二阶锥模型,考虑潮流约束、电压约束、支路功率约束、DG约束等,有对应的解释说明文档,方便学习参考!(程序采用matlab+gurobi求解)

之前发布过配电网两阶段优化程序,采用的是锥对偶的方式,过程推导的难度大一些,具体链接详见:【重磅】IEEE33配电网两阶段鲁棒优化调度CCG。本次发布的程序和上述程序处理方式不一样,采用的是matlab自带的kkt函数,并结合求解器直接求解,也是非常值得学习参考的!

2部分代码

%% 输入所需数据S = 1;                                  % 鲁棒强度mpc = PGE69;                            % 读取配电网数据SB = mpc.baseMVA;                       % 基准功率VB = mpc.bus(1,10);                     % 基准电压phi_L = mpc.branch(:,1:2);              % 支路集合Y_b = mpc.bus(:,1);                     % 节点集合Y_dg = [19 25 32 54 68];                % 含DG的节点集合nb = length(Y_b);                       % 节点总数ns = 1;                                 % 电源节点数Y_s = 1;                                % 电源节点集合ndg = length(Y_dg);                     % 含DG的节点数nl = length(phi_L);                     % 支路数S_ij_max = 6.5*ones(nl,1);              % 支路视在功率上限S_ij_max([26 34 45 49 51 64 66 68]) = 1.12;S_ij_max([25 33 44 48 50 63 65 67]) = 2.24;S_ij_max([69 13 71 72 73]) = 3.54;S_ij_max([21:24 30:32 47 41:43 60:62]) = 4;S_ij_max = S_ij_max/SB;                 % 转为标幺值r_ij = mpc.branch(:,3);                 % 支路电阻/pux_ij = mpc.branch(:,4);                 % 支路电抗/puP_E = mpc.bus(:,3)/SB;                  % 期望有功负荷/puQ_E = mpc.bus(:,4)/SB;                  % 期望无功负荷/puP_E_dg = [0.15 0.07 0.040 0.0065 0.10]; % DG的期望有功功率Q_E_dg = [0.07 0.04 0.025 0.0400 0.05]; % DG的期望无功功率P_E_dg = P_E_dg/SB;                     % 转为标幺值Q_E_dg = Q_E_dg/SB;                     % 转为标幺值dP_dg = 0.3*P_E_dg;                     % DG有功功率波动上限dQ_dg = 0.3*Q_E_dg;                     % DG无功功率波动上限U_max = [1.05;1.1*1.1*ones(nb-1,1)];    % 节点电压平方的上限U_min = [1.05;0.9*0.9*ones(nb-1,1)];    % 节点电压平方的下限branch_to_node=zeros(nb,nl);            % 流入节点的支路branch_from_node=zeros(nb,nl);          % 流出节点的支路for k=1:nl    branch_to_node(mpc.branch(k,2),k)=1;    branch_from_node(mpc.branch(k,1),k)=1;endN = round(S*ndg);                       % 不确定预算delta = 1e-10;                          % 很小的正数M = 999999;                             % 很大的正数P_E(P_E == 0) = delta;                  % 强制注入有功Q_E(Q_E == 0) = delta;                  % 强制注入无功
%% 定义决策变量p_ij = sdpvar(nl,1); % 支路有功功率q_ij = sdpvar(nl,1); % 支路无功功率P_load = sdpvar(nb,1); % 节点实际有功负荷Q_load = sdpvar(nb,1); % 节点实际无功负荷P_dg = sdpvar(ndg,1); % DG实际有功出力Q_dg = sdpvar(ndg,1); % DG实际无功出力P_g = sdpvar(ns,1); % 主电源输出有功Q_g = sdpvar(ns,1); % 主电源输出无功U_i = sdpvar(nb,1); % 节点电压的平方alpha_n = binvar(ndg,1); % 节点的负向波动系数
%% 确定故障支路、失电节点、带电节点[Y_con,Y_out] = fault_analysis(mpc,fault_branch,1);% 根据故障支路求出带电节点和失电节点
%% 目标函数objective = sum(P_load(Y_out));

3程序结果

详尽的解释文档

运行结果总结和展示

3下载链接

扫码阅读原文即可跳转程序页面:

想了解更多程序?按照下面教程查看程序目录


电力程序
打造电力专业最新原创程序集散地,免费分享基础编程资料,在这里,带着希望而来,带着知识而归~
 最新文章