综合能源系统电压稳定研究(Matlab代码实现)

news2024/9/23 15:30:52

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

当前世界资源与环境问题日益突出,对能源系统进行合理的安全评估是保障其经济、稳定运行的重要基础。评估结果不仅可以实时反馈系统的运行情况,还能为其优化调度提供指导。然而,随着多种能源系统形成的综合能源体系规模不断增大、耦合日益紧密、拓扑结构日趋复杂,传统的评估方法多用于能流形式单一、负荷模式固定的场景,已不足以对复杂的综合能源系统供能安全性给出准确评估。

📚2 运行结果

 

 

 

 

 

 

 部分代码:

clear;
clc;
tic;
%%% 设置基准值
Hload_B=1;
%非线性,不要动了
Hm_B=1;
%
T_B=1;
CP_B=1;
HK_B=1;

G_B=1;
Gpi_B=1;
Kg_B=1;


%% 迭代参数设置
Elimit=1*10^-5;
Glimit=10;
Hlimit=1*10^-1;
Tmax=100;
%% CHP机组参数
% cm=823200;
cm=755528;
ne=0.0015;

%% 电网参数输入
mpc_E = loadcase('case_E.m');

E_nb = length(mpc_E.bus);
E_n_PQ = sum(mpc_E.bus(:,2) == 1); % PQ 节点个数


P=zeros(1,E_nb); %P,Q为原始数据,Pi,Qi为计算结果
Q=zeros(1,E_nb);
U=ones(1,E_nb); %电压初始值由此确定
theta=zeros(1,E_nb); 

P(mpc_E.bus(:,1)) = - mpc_E.bus(:,3);
P(mpc_E.gen(:,1)) = mpc_E.gen(:,2);
Q(mpc_E.bus(:,1)) = - mpc_E.bus(:,4);
U(mpc_E.gen(:,1)) = mpc_E.gen(:,6);
theta(mpc_E.bus(mpc_E.bus(:,2) == 3,1)) = mpc_E.bus(mpc_E.bus(:,2) == 3,9);
% theta = mpc_E.bus(,9);
P = P/mpc_E.baseMVA;
Q = Q/mpc_E.baseMVA;


Y = makeYbus(mpc_E.baseMVA,mpc_E.bus,mpc_E.branch);
G=real(Y); %电导矩阵
B=imag(Y); %电纳矩阵
%% 热网参数输入
mpc_test=case_H();
H_nb =  length(mpc_test.bus);
H_nl =  length(mpc_test.branch);


hkk=0.2;%热传导系数
Cp=4200;%热媒的比热容
Cp1=4200;

% 原始算例
% hload=[50000,50000,50000,50000,100000,50000,10000,50000,80000,100000,50000,50000,1000000];
% 增加热功率

 


% index = (Gpipe(:,5)~=3);
% temp = sum(index);
% Ag = sparse(Gpipe(index,1),1:temp,-1,G_nb,temp) + sparse(Gpipe(index,2),1:temp,1,G_nb,temp);

%输入平衡节点气压 单位bar 负荷节点默认为0
Gp1=[5.000 5.000]/Gpi_B;
%天然气系统数据处理
zg = sum(Gpipe(:,5) == 3);
%计算管道常数
% Kr = 70840/Kg_B./sqrt(Gpipe(:,3))';
% disp('管道摩擦系数:');
% disp(Kr);

%计算迭代初始值,这部分再商量,先假设初值为下述:    
Gpi=[4.4973 4.4839 4.4397 4.4394 4.4323]/Gpi_B;

Gpi=[Gp1,Gpi];
Gpi2=Gpi.^2;
% disp('Gpi2:');
% disp(Gpi2);


%计算气网不平衡量
[Gload,Gpi2,dpi2,Ag,Gpipe,Ag2,dGQ,dG] = GUnbalanced(0,Gpi2,Ag,Gpipe,G_nl,zg,0,Gload,gas);
% 计算热网不平衡量
[Cs,bs,Cr,br,hk,hT0source] = H_un(mh,lh,sh,hkk,Hpipe,HTs,Hm,hT0,HTrload,Cp1);
[dP_H,dp_H,dTs,dTr] = bupinghengliang(Cp,As1,Hm,hT0,Bh,HK,Cs,HTsload,bs,Cr,HTrload,br,Hload);
%整合为一整个不平衡量
dEGH=[dP';dQ';dP_H;dp_H;dTs;dTr;dG];
% disp('整个的不平衡量:');
% disp(dEGH);

%% 牛拉法大循环开始
for round=1:Tmax
    fprintf('第%d次迭代\n',round);
    
    %%%%%%%%%%%耦合设备转换
    hT0source=40/T_B;
%     PG=Cp*(Hm(1)+Hm(4))*(HTssource-hT0source);
    PG=Cp*Hm(1)*(HTssource-hT0source);
    P(30)=(PG/cm);
    Gload(3)=PG/(cm*ne);
    % 计算雅克比矩阵
    %     求解Jee
    J=Jacobi( E_nb,E_n_PQ,U,theta,B,G,Pi,Qi );
%     J = -makeJac();PQ 顺序不同%$%
%     disp('Jee:');
%     disp(J);
    
    %     求解Jhh
    [HJhh] = HJacobi(nh,mh,lh,Cp,HTsload,HTs,hT0,As1,Bh,HK,Hm,Cs,Cr,Hpipe,hk);
    %     求解Jgg
    for i=1:G_nl - zg
        D(i,i)=dGQ(i)/(2*dpi2(i));
    end
%     disp(D);
    Jgg=-Ag2*D*Ag2';
%     disp('Jgg:');
%     disp(Jgg);

%     Jgh(3,1)=Cp*Hm(4)*(HTssource-hT0source)/(cm*ne);
%     Jgh(3,4)=Cp*Hm(1)*(HTssource-hT0source)/(cm*ne);
    Jgh(3,1)=Cp*(HTssource-hT0source)/(cm*ne);
%     disp('Jgh');
%     disp(Jgh);
    
    % 求解Jge
    Jge=zeros(5,E_n_PQ+E_nb-1);

    % 求解Jhe
    Jhe=zeros(mh+2*lh,E_n_PQ+E_nb-1);

    % 求解Jhg
    Jhg=zeros(mh+2*lh,5);
    
    % 合成整个的雅克比矩阵
    JEGH=[J,Jeh,Jeg;
          Jhe,HJhh,Jhg;
          Jge,Jgh,Jgg];
%     disp('JEGH');
%     disp(JEGH);
    
    con(round) = cond(JEGH);
    con1=max(con);
    
    % 求解修正量
    [dtheta,dU,dHm,dHTsload,dHTrload,dppp] = EGHcorrect(E_nb,E_n_PQ,mh,lh,U,dEGH,JEGH,5);
    
%     修正状态量
%     修正电网状态量
    U=U+dU;
    theta=theta+dtheta;
%     disp('节点电压幅值:');
%     disp(U);
%     disp('节点电压相角:');
%     disp(rad2deg(theta));
    % 修正热网状态量
    Hm=Hm+dHm;
    HTsload=HTsload+dHTsload;
    HTrload=HTrload+dHTrload;
%     disp('修正后的管道流量:');
%     disp(Hm);
%     disp('修正后的节点供热温度:');
%     disp(HTsload);
%     disp('修正后的节点回热温度:');
%     disp(HTrload);
    % 修正气网状态量
    Gpi2=Gpi2+dppp;
%     disp('修正后的节点气压值');
%     disp(Gpi2);
    
    % 判断方向
%     [As1,Hpipe,Hm] = panduan(mh,Hpipe,As1,Hm);
        
    % 求解不平衡量
    % 计算电网不平衡量
    [dP,dQ,Pi,Qi]=EUnbalanced( E_nb,E_n_PQ,P,Q,U,G,B,theta );
    [ref, pv, pq] = bustypes(mpc_E.bus, mpc_E.gen);
    V = U' .* exp(theta' * j);
    Vm = U';
    mpopt = mpoption;
    mis = V .* conj(Y * V) - makeSbus(mpc_E.baseMVA, mpc_E.bus, mpc_E.gen, mpopt, Vm);
    F = [   real(mis(1:38));%pv;pq;30:
            imag(mis(pq))   ];
    %计算气网不平衡量
    [Gload,Gpi2,dpi2,Ag,Gpipe,Ag2,dGQ,dG] = GUnbalanced(0,Gpi2,Ag,Gpipe,G_nl,zg,0,Gload,gas);
    % 计算热网不平衡量
    [Cs,bs,Cr,br,hk,hT0source] = H_un(mh,lh,sh,hkk,Hpipe,HTs,Hm,hT0,HTrload,Cp1);
    [dP_H,dp_H,dTs,dTr] = bupinghengliang(Cp,As1,Hm,hT0,Bh,HK,Cs,HTsload,bs,Cr,HTrload,br,Hload);
    %整合为一整个不平衡量
    dEGH=[dP';dQ';dP_H;dp_H;dTs;dTr;dG];
%     disp('整个的不平衡量:');
%     disp(dEGH);

    % 判断收敛
    if (max(abs(dP))<Elimit && max(abs(dQ))<Elimit ) && max(abs(dP_H))<Hlimit && max(abs(dp_H))<Hlimit && max(abs(dTs))<Hlimit && max(abs(dTr))<Hlimit && max(abs(dG))<Glimit
        break;
    end
end
%% 迭代结束,判断收敛,输出结果
if (max(abs(dP))<Elimit && max(abs(dQ))<Elimit ) && max(abs(dP_H))<Hlimit && max(abs(dp_H))<Hlimit && max(abs(dTs))<Hlimit && max(abs(dTr))<Hlimit && max(abs(dG))<Glimit
    disp('计算收敛');
else
    disp('计算不收敛');
end
disp('************最终结果*************');
fprintf('迭代总次数:%d\n', round);
disp('***电网计算结果:')
disp('节点电压幅值:');
disp(U);
disp('节点电压相角:');
disp(rad2deg(theta));
disp('有功计算结果:');
disp(Pi);
disp('无功计算结果:');
disp(Qi);
disp('***热网计算结果:');
disp('负荷节点供热温度:');
disp(HTsload);
disp('负荷节点回热温度:');
disp(HTrload);
disp('热源回热温度:');
disp(hT0source);
disp('热网管道流量:');
disp(Hm);
disp('***气网计算结果:');
disp('天然气网络各节点压力:');
Gpi=sqrt(Gpi2);
disp(Gpi);
disp('天然气网络各管道流量:');
disp(dGQ);
disp('天然气网络负荷:');
disp(Gload);

toc;

🎉3 参考文献

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

[1]董洪辛. 综合能源系统供能安全评估及其应用[D].大连理工大学,2022.DOI:10.26991/d.cnki.gdllu.2022.001547.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【锟斤拷�⊠是怎样炼成的】——两分钟帮你彻底弄懂计算机的编码原理

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f33b;&#x1f33b;&#x1f33b;Hello&#xff0c;大家好&#xff0c;我是天寒雨落&#xff0c;一名有趣的博主&#xff0c;小白一枚&#xff0c;多多关照&#x1f61c;&#x1f61c…

解决vue-cli项目打包出现空白页和路径错误的问题

今天为大家分享一篇解决vue-cli(&#xff08;vue-cli2.x版本&#xff09;项目打包出现空白页和路径错误的问题。具有很好的参考价值。希望对大家有所帮助。 vue-cli项目打包&#xff1a; 1. 命令行输入&#xff1a;npm run build 打包出来后项目中就会多了一个文件夹dist&am…

k8s1.23.15版本二进制部署/扩容及高可用架构详解

前言 众所周知&#xff0c;kubernetes在2020年的1.20版本时就提出要移除docker。这次官方消息表明在1.24版本中彻底移除了dockershim&#xff0c;即移除docker。但是在1.24之前的版本中还是可以正常使用docker的。考虑到可能并不是所有项目环境都紧跟新版换掉了docker&#xff…

五、树和二叉树

一、定义及基本术语 详见书本P111~113 二叉树不是树的特殊情况&#xff0c;它们是两个概念&#xff0c;但有关树的基本术语对二叉树都适用。 二叉树的子树一定要区分左子树还是右子树&#xff0c;即使只有一棵子树也一定要说明是左子树还是右子树&#xff0c;树只有一个孩子的…

事务隔离:为什么你改了我还看不见?

提到事务&#xff0c;你肯定不陌生&#xff0c;和数据库打交道的时候&#xff0c;我们总是会用到事务。最经典的例子就是转账&#xff0c;你要给朋友小王转 100 块钱&#xff0c;而此时你的银行卡只有 100 块钱。 转账过程具体到程序里会有一系列的操作&#xff0c;比如查询余…

迎接2023,用JAVA演奏“新年”

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;2023年快要到来啦&#xff0c;再此祝大家诸事顺遂&#xff0c;所见所盼皆如愿。 &#x1f514;本文讲解如何使用Java演奏一首歌曲&#xff0c;一起卷起来叭&#xff01; 众所周…

【复习】计算机网络学习笔记

前言 本篇笔记方便本人用于复习回顾知识点&#xff0c;内容庞杂&#xff0c;见谅。含有目录方便大家跳转复习&#xff01; 此复习笔记总结于 湖科大教书匠出品&#xff1a;深入浅出计算机网络 微课视频 此笔记尚未完结&#xff0c;持续更新中… 文章目录前言第一章 概述1.1 …

高并发系统设计 -- 服务限流算法

常见的限流算法 漏桶算法 漏桶法的关键点在于漏桶始终按照固定的速率运行&#xff0c;但是它并不能很好的处理有大量突发请求的场景&#xff0c;毕竟在某些场景下我们可能需要提高系统的处理效率&#xff0c;而不是一味的按照固定速率处理请求。 关于漏桶的实现&#xff0c;u…

快速入门 .NET nanoFramework 开发 ESP32-Pico 应用

本文是一篇适合初学者的 .NET nanoFramework 保姆级入门教程&#xff0c;并提供了基本的入门程序并介绍了微雪的 ESP32-S2-Pico 使用 .NET nanoFramework 开发过程的基础知识。 目录 1. 背景 1.1 .NET IOT 与 .NET nanoFramework 1.2 微控制器 1.3 实验板介绍 2. 搭建 .NET…

移动Web【空间转换[空间位移、透视、空间旋转、立体呈现、3D导航、空间缩放]、动画、综合案例】

文章目录一、空间转换1.1 空间位移1.2 透视1.3 空间旋转1.4 立体呈现1.5 3D导航1.6 空间缩放二、动画2.1 动画的实现步骤2.2 动画属性三、综合案例2.1 走马灯一、空间转换 空间&#xff1a;是从坐标轴角度定义的。 x 、y 和z三条坐标轴构成了一个立体空间&#xff0c;z轴位置与…

Android实战进阶 - 拉取项目代码后多处报红?如资源找不到该如何处理?

近期参与了一个我很感兴趣的项目&#xff0c;项目内用到了很多新东西&#xff0c;例如组件化、模块化、ARouter路由、MVI框架、Kt高阶用法等等&#xff0c;感觉可以学一段时间… Gradle相关Blog Android Gradle - Gradle、Gradle plugin 基础认知Android Gradle - AndroidStud…

函数极限定义的理解

回顾一下非正式的极限定义法。当x从任意一侧(自左向右或自右向左)接近常量 c时&#xff0c;如果f(x)变得任意接近一个单独的值L, 则当x接近c时f(x)的极限值是L, 写作 咋一看&#xff0c;这个定义似乎非常技术化。即使这样&#xff0c;它仍然是非正式的&#xff0c;因为它没有给…

三、Django -视图

Django 提示&#xff1a;本文根据b站黑马python课整理 链接指引 > 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录Django视图介绍和项目准备视图…

【数据集6】全球人工不透水面积GAIA(清华数据)

全球人工不透水面积&#xff08;lobal artificial impervious area, GAIA&#xff09; 人工不透水区是表征建成区和城市范围的重要覆盖类型&#xff0c;特别是在较细的空间分辨率下。 1 简介 原理&#xff1a; 由Landsat卫星图像和辅助数据集生成&#xff0c;如夜间灯光数据…

健康码识别[QT+OpenCV]

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦目录 一、识别原理 1.二维码定位 2.颜色识别 二、部分源码 一、识别原理 二维…

matlab实现基本相位调制

相位调制&#xff08;PM&#xff09;是将信息编码为载波的瞬时相位变化的一种调制模式。 调相的基本表达式如下&#xff1b; 载波c(t)是一个标准正弦信号&#xff1b;m(t)是调制信号&#xff1b;调制以后是把m(t)的变化附加到了载波的相位变化上&#xff1b; 调相的基本示意如…

WPF中iconfont图标库的使用

总目录 文章目录总目录前言一、查找项目需要的图标二、图标的使用1.将下载的文件解压缩2.将ttf文件复制粘贴到自己的项目中3.使用总结前言 本文主要介绍在WPF中iconfont图标库的使用 一、查找项目需要的图标 首先进入阿里巴巴矢量图标库网站&#xff0c;登录自己的账号&#…

MySQL快速生成大量测试数据 (脚本一键生成分表数据)

生成128个分表的测试数据敲到手累&#xff1b; 生成的测试数据虽然有离散分布&#xff0c;但随着时间的增长数据量不增反降&#xff0c;不符合大多数线上业务的增长趋势&#xff1b; 生成的测试数据部分超过当前日期。 具体表现如下图所示&#xff1a; 我们直接看下脚本的用法…

月入8000+的steam/csgo搬砖项目(详细拆解)

大家好&#xff0c;我是阿阳 今天就给大家带来一个在steam游戏搬砖项目的拆解&#xff0c;目前这个项目我们团队也一直在带队实操&#xff0c;已经跑通了项目的整个流程&#xff0c;提炼出了完整的赚钱体系。 先给大家看看近期的收益情况&#xff1a; 近期的出售记录&#xf…

[ Azure - Database ] Azure Database for MySQL 配置Auditing并查看使用

传统MySQL的二进制日志binlog可以说是MySQL最重要的日志&#xff0c;它记录了所有的DDL和DML语句&#xff08;除了数据查询语句select&#xff09;&#xff0c;以事件形式记录&#xff0c;还包含语句所执行的消耗的时间。本文会讲解微软云Azure Database for MySQL的binlog相关…