1.软件版本

matlab2013b

2.系统概述

整个算法的流程图,OPA模型的流程图如下:

详细的讲,我们的这个算法的安如下的步骤进行:

步骤1:k=k+1,通过慢动态过程中的几个公式,对Pmax,Fmax进行更新;

步骤2:考虑随机因素进行线路的断开,以一个随机概率来随机断开一条支路;

步骤3:根据慢动态计算得到的参数开始进行慢动态仿真;

步骤4:在慢动态仿真中,使用粒子群算法来计算论文公式5的最小值;

步骤5:进一步计算注入功率和潮流;

步骤6:根据计算得到的潮流和Fmax,根据F/Fmaz > alpha来确定线路是否接近容量极限;

步骤7:如果满足F/Fmaz > alpha,则以一个概率beta进行断开。

步骤8:如果发生断开时间,则返回步骤1,如果没有发生断开事件,则结束当前的动态过程。

3.部分源码

clc;
clear;
close all;
warning off;
addpath 'FUNC\'%%
MOD      = 4;%选择3种不同的参数
if MOD < 4
%参数初始化
k        = 1;
kmax     = 100000;%点数少的话,就没法得到平滑的仿真图,
K2       = 2;
sel      = 1;      %1:选择IEEE30模型,2:选择IEEE118模型;
alpha    = 0.7;    %Fjk/Fjk,max
if MOD == 1
beta     = 0.3;   %开断概率
end
if MOD == 2
beta     = 0.7;   %开断概率
end
if MOD == 3
beta     = 1;   %开断概率
endlemda    = 1.0005; %Pi,(k+1),max/pi,k,max
mu       = 1.003;  %Fi,(k+1),max/Fi,k,max
gamas    = [1,1];  %Pik/Pik,max
gama     = gamas(1) + (gamas(2) - gamas(1))*rand(1,1);W        = 10;%公式五中的w值
iter_max = 2000;%粒子群优化算法得到最小的值(公式5)
MTKL     = 1;%利用蒙特卡洛的设计思想,对一个结果进行多次仿真,然偶进行求平均
%初始化最大值的放大比例
KKK1     = 11.5;
KKK2     = 1;%节点数的初始化
if sel == 1%IEEE30初始化参数,直流潮流计算采用工具箱进行计算mpc                            = case30;BUS                            = mpc.bus;GEN                            = mpc.gen;LINE                           = mpc.branch;[r,c]                           = size(mpc.bus);%r为节点数量Bus_Num                        = r;[r,c]                           = size(mpc.branch);%r为节点数量F_Num                          = r;
endif sel == 2%IEEE118初始化参数,直流潮流计算采用工具箱进行计算mpc                            = case118;BUS                            = mpc.bus;GEN                            = mpc.gen;LINE                           = mpc.branch;   [r,c]                           = size(mpc.bus);%r为节点数量  Bus_Num                        = r;[r,c]                           = size(mpc.branch);%r为节点数量F_Num                          = r;
end%变量初始化
p      = zeros(Bus_Num,kmax);  %实际负荷需求
F      = zeros(F_Num,kmax);    %潮流
Pmax   = zeros(Bus_Num,kmax);  %Pmax的最大值
Fmax   = zeros(F_Num,kmax);    %Fmax的最大值
CUT    = zeros(F_Num,kmax);    %判断某一天某个支路是否被断开
c      = zeros(Bus_Num,kmax);  %cij%定义两类集合:发电机节点G和负荷节点L
%定义两类集合:发电机节点G和负荷节点L
G      = zeros(Bus_Num,1);     %发电机的集合
L      = zeros(Bus_Num,1);     %负荷点的集合
PG     = zeros(Bus_Num,kmax);  %
PL     = zeros(Bus_Num,kmax);  %
P      = zeros(Bus_Num,kmax);  %
[G,L]  = func_findGL(Bus_Num,mpc.gen,mpc.bus);%%
%直流潮流计算
%通过初始的IEEEXX电网的类型,计算出其对应的节点负荷和线路潮流,即计算k = 1的情况
%即计算K = 1的时候,系统初始的F和P
%根据公式5来计算
%根据IEEEXX标准数据得到节点的初始负荷
p(:,1) = mpc.bus(:,3);%计算导纳矩阵A
Ak = func_Admittance_matrix(mpc.bus,mpc.branch);%初始的注入功率Pk(发电机出力和负荷)
PG(G,1) =  mpc.gen(:,2);   %发电机节点
c(G,1)  =  1;
PL(L,1) =  mpc.bus(L,3); %负荷节点%然后根据Fk = Ak * Pk计算潮流
P(:,1) = PG(:,1) + PL(:,1);%这里做相加,其实就是数组的合并,即出力节点和负荷节点的合并变为Pik
F(:,1) = Ak * P(:,1);%初始化网络结构
BUS    = mpc.bus;
GEN    = mpc.gen;
LINE   = mpc.branch;   %初始化最大值的参数
%初试情况下,我们将最大值定义所有节点的最大值
%注意,这里最大值的初始约束条件,你也可以自己设定
Pmax(:,1)    = KKK1*P(:,1); %节点的发电能力和负荷
for i = 1:F_NumFmax(i,1)= KKK2*F(i,1);
end%保存停电次数变量
CUT_NUM = zeros(kmax,1);
%保存停电规模变量
CUT_ARE = zeros(kmax,1);
S1      = 0;%OPA模型的循环
for k = 2:kmax%慢循环过程LINE   = mpc.branch;flag   = 0;%步骤一%步骤一%由慢动态确定最后的最大值%对于第k天,确定发电机的最大出力和负荷需求后Fi,k,max  Pi,k,max      %更新负荷,发电机和部分线路容量%更新PPmax(:,k) = lemda*Pmax(:,k-1);%更新Ffor i = 1:F_Numif CUT(i,k-1) == 1%判断有没有开断的线路Fmax(i,k) = mu*Fmax(i,k-1);elseFmax(i,k) =    Fmax(i,k-1); endend%考虑随机因素进行线路的断开%这里以一个0~1的随机数和0.5做比较来判断是否收到随机因素的干扰%断开的一个随机位置的线路PP = rand(1,1);if PP >= 0.5%断开NUMS = floor(F_Num*rand(1,1));if NUMS == 0NUMS = 1;endLINE(NUMS,3:end) = 0;
%        CUT(NUMS,k)      = 1;else%不断开endwhile(flag == 0) %慢动态循环中下进行快动态循环%负荷节点的浮动p(:,k)   = gama*Pmax(:,k-1);%实际的负荷波动 disp('迭代次数:');k%步骤二%步骤二%根据公式5来计算出P和F%这里利用粒子群的思想,进行函数最小值的求解%这里编写了func_pso_calculate_min粒子群优化函数来计算公式5的最小值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[V_score2,PP] = func_pso_calculate_min(W,Bus_Num,iter_max,Pmax(:,k),c(:,1),p(:,k)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Ak     = func_Admittance_matrix(BUS,LINE);F(:,k) = Ak*PP;%步骤三%步骤三%随机开断线路%产生一个随机的数作为概率TMP = 0;for i = 1:F_Num           %如果满足如下的条件,则以一个固定的概率进行断开if abs(F(i,k)/Fmax(i,k)) >= alphaPp = rand(1,1);  if Pp >= 1 - beta%开断概率CUT(i,k) = 1;flag     = 1;elseCUT(i,k) = 0;endend endif flag == 0;break;end%步骤四%步骤四%根据CUT断开矩阵,重新更新网络结构%当检测到某个CUT为1的时候,说明要对该线路进行断开IND = [];cnt = 0;for i = 1:F_Numif CUT(i,k) == 1;%断开相关的线路cnt = cnt + 1;LINE(i,3:end) = 0; IND(cnt) = i;endendend%这里只是为了对比,所以实际的规模计算见图2,3,4的计算方法,这里简化CUT_NUM(k) = sum(CUT(:,k));I(k)       = (sum(p(L,k))/(abs(sum(Fmax(G,k)))));
end%%
%画出最后的仿真结果图,仿真出文献“基于直流潮流的电力系统停电分布及自组织临界性分析”的所有图
%每个仿真文件仿真对应如下的一个图
%(O)Fig.2:改变beta得到不同线路可靠性下的停电分布
%(X)Fig.3:改变mu得到不同线路容量增加方式下的停电分布
%(X)Fig.4:改变gama得到不同负荷波动下的停电分布
%(X)Fig.5:趋于临界状态的过程
%(X)Fig.6:停电概率分布if MOD == 1[n,m] = hist(CUT_NUM,20);m = m/max(m);save Result\fig2\data1.mat m n
end
if MOD == 2[n,m] = hist(CUT_NUM,20);m = m/max(m);save Result\fig2\data2.mat m n
end
if MOD == 3[n,m] = hist(CUT_NUM,20);m = m/max(m);save Result\fig2\data3.mat m n
end
elsefigure;load Result\fig2\data1.matloglog(m,n,'r','LineWidth',2);hold onload Result\fig2\data2.matloglog(m,n,'b','LineWidth',2);hold on   load Result\fig2\data3.matloglog(m,n,'m','LineWidth',2);hold on        xlabel('停电规模');ylabel('停电次数');axis([0.045,1,1e1,3e3]);grid on;legend('b=0.3','b=0.7','b=1');
end

4.仿真结论

5.参考文献

[1]佚名. 基于直流潮流的电力系统停电分布及自组织临界性分析[J]. 电网技术, 2006, 30(14):6.A02-09

【直流潮流】基于直流潮流的电力系统停电分布及自组织临界性分析相关推荐

  1. 基于直流潮流法的电力系统潮流计算程序设计

    一.设计题目 基于直流潮流法的电力系统潮流计算程序设计 二.计算方法 直流潮流法 三.设计要求 掌握基于直流潮流法的电力系统潮流计算理论,建立直流潮流法的潮流计算数学模型,制定直流潮流法的潮流计算步骤 ...

  2. VSC为_计及功率控制模式的VSC-MTDC交直流并列运行系统概率潮流计算

    厦门大学嘉庚学院的研究人员王紫瑶.廖进贤等,在2019年第2期<电气技术>杂志上撰文指出,在风电规模不断扩大的背景下,多端柔性直流输电(VSC-MTDC)成为一种灵活.经济的输电手段.本文 ...

  3. matlab电压灵敏度矩阵,一种基于线性化潮流的配电网灵敏度计算方法与流程

    本发明涉及一种基于线性化潮流的配电网灵敏度计算方法,属于电力系统运行控制技术领域. 背景技术: 在电力系统中,往往需要分析在目前的某些变量发生变化之后,其他变量会发生怎样的变化,比如调整发电机输出功率 ...

  4. ip iq 谐波检测matlab仿真,基于Matlab的低压电力系统谐波检测方法仿真研究

    基于Matlab的低压电力系统谐波检测方法仿真研究 1 前言 随着科学技术的发展,随着工业生产水平和人民生活水平的提高,非线性用电设备在电网中大量投运,造成了电网的谐波分量占的比重越来越大.它不仅增加 ...

  5. 电力系统matlab建模视频,基于Matlab的小型电力系统的建模与仿真实验1【精品毕设、无需降重】...

    基于Matlab的小型电力系统的建模与仿真 一.实验目的 电力系统的动态仿真研究将不能在实验室中进行的电力系统运行模拟得以实现.在判定一个电力系统设计的可行性时,都可以首先在计算机机上进行动态仿真研究 ...

  6. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...

    基于matlab语言计算电力系统暂态稳定仿真程序实验报告 BeijingJiaotongUniversity 电力系统分析 暂态稳定分析实验 学院:电气工程学院 班级:xxxxxxxx 学号:xxxx ...

  7. 基于MATLAB/Simulink的电力系统稳定器(PSS)和静态无功补偿器(SVC)的两机传动系统暂态稳定性仿真模型,观察PSS和SVC对系统稳定性的影响

    SVC_PSS:基于MATLAB/Simulink的电力系统稳定器(PSS)和静态无功补偿器(SVC)的两机传动系统暂态稳定性仿真模型,观察PSS和SVC对系统稳定性的影响. 仿真模型附加一份仿真说明 ...

  8. 基于BP神经网络的电力系统短期负荷预测,简单实用

    基于BP神经网络的电力系统短期负荷预测,包含30日的负荷数据和气象特征数据,对31日负荷进行预测,同时与实际负荷进行对比,观察误差. %创建一个新的BP前向神经网络 %newff-生成一个新的BP前向 ...

  9. 【电气专业知识问答】问:直流系统及其直流充电装置正常运行监视、检查的项目有哪些?

    [电气专业知识问答] 问:直流系统及其直流充电装置正常运行监视.检查的项目有哪些? 答:(1)运行参数监视.值班员及专职维护人员每天应检查运行中的直流电源装置,主要监视三相交流输入电压值显示是否正常和 ...

最新文章

  1. 从 Blast2GO 本地化聊一聊 Linux 下 MySQL 的源码安装
  2. csdn的blink
  3. ML之ME/LF:机器学习之风控业务中常用模型评估指标PSI(人群偏移度指标)的的简介、使用方法、案例应用之详细攻略
  4. 【Python3 爬虫】03_urllib.error异常处理
  5. Java匿名内部类总结
  6. Java私有方法解释_java接口中 定义 private 私有方法
  7. 2013\Province_Java_C\2.组素数
  8. 在node.js中如何使用ES6模块化
  9. Angular ngTemplateOutlet 元素的学习笔记
  10. python显示中文文件内容_Python实现的json文件读取及中文乱码显示问题解决方法...
  11. 128x64液晶驱动(添加详细)
  12. mysql的基础操作(笔记)
  13. js中export的问题
  14. 你不知道的Event
  15. C# winform界面上传附件到服务器(springboot)
  16. ibatis学习四---执行流程浅析
  17. python 协程进阶
  18. html网页中加载pdf,在HTML页面中嵌入本地PDF
  19. 德标螺纹规格对照表_螺栓螺母德标 欧标 国标对照表
  20. iOS人脸识别(CoreImage)

热门文章

  1. Asta:是什么终结了我的鸽王生涯?Go 1.13 发布!
  2. 专访OKEX Jay Hao:期权市场的需求从何而来?
  3. 有效预防xss_预防XSS攻击的一些方法整理
  4. python做平面设计-Python系列干货之——Python与设计模式
  5. STM32——触摸屏实验-电容型触摸屏-M4
  6. 牛客网 OI 赛制测试赛
  7. 成功转行IT软件测试,分享下我本科毕业2年转行的经历
  8. 量化学习:大数据时代的学习方式
  9. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
  10. aecmap快捷键_arcmap快捷键