Matlab|电-气-热综合能源系统耦合优化调度

1 主要内容

程序主要做的是一个考虑电、热、气网耦合调度的综合能源系统优化调度模型,考虑了电网与气网,电网与热网的耦合,电网部分为10机39节点的综合能源系统,热网为6节点,气网部分为比利时20节点气网,潮流部分电网是用了直流潮流,气网部分也进行了线性化的操作处理。

  • 参考文献

《计及碳排放成本的电---气---热...源系统节点能价计算方法研究_邓红卫》

《计及需求响应与动态气潮流的电---气综合能源系统优化调度_张伊宁》

  • 程序的模块化很好。
  • 个模块的功能介绍很详细
  • 工具:MATLAB➕YALMIP➕cplex

(之前有些程序反映求解失败,都是软件没有配置好,而且官网免费的cplex真的严重受限,我用的matlab2018a,yalmip和cplex都是用的公众号免费软件里面的版本,匹配性比较好,一些比较高的matlab版本我也没有合适的不限制变量和约束cplex,建议你再安装一个matlab,对电脑影响不大,具体配套软件和安装说明在公众号有详细介绍。)

2 部分代码

复制代码
%导纳矩阵计算
% [Ybus, Yf, Yt] = makeYbus(baseMVA, bus, M_branch);   % build admitance matrix
[Bbus, Bf, Pbusinj, Pfinj] = makeBdc(baseMVA, bus, branch);       %直流潮流
%%
% 创建决策变量
%%
% 电网
% 火电发电机出力 
gen_P = sdpvar(n_gen, n_T);
gen_P_upper = sdpvar(n_gen, n_T);
​
% 火电机组状态
u_state = binvar(n_gen, n_T);    
​
% 电力系统各支路功率
PF_D  = sdpvar(n_branch, n_T);
% 电力系统各节点相角
Va = sdpvar(n_bus,n_T);
%%
% 气网
GasFlow = sdpvar(n_GasBranch, n_T);         %各管道气流量
GasPressure2 = sdpvar(n_GasBus, n_T);       %各节点气压平方
GasSourceOutput = sdpvar(n_GasSource, n_T); %各天然气源节点出力
GasGenNeed = sdpvar(n_GasGen, n_T);         %各天然气发电机耗气
​
%%
% 热网
TmprtrFromDir = sdpvar(n_HeatBranch, n_T);  %正方向支路头结点温度
TmprtrToDir = sdpvar(n_HeatBranch, n_T);    %正方向支路尾结点温度
TmprtrFromRev = sdpvar(n_HeatBranch, n_T);  %逆方向支路头结点温度
TmprtrToRev = sdpvar(n_HeatBranch, n_T);    %逆方向支路尾结点温度
​
TmprtrBusDir = sdpvar(n_HeatBus,n_T);       %正方向系统各节点热水的温度
TmprtrBusRev = sdpvar(n_HeatBus,n_T);       %逆方向系统各节点热水的温度
​
HeatSource = sdpvar(n_HeatBus, n_T);        %热源供热,因为电炉和CHP连在同一个节点才写的这么诡异
HeatCHP = sdpvar(n_CHPgen,n_T);             %chp机组热出力
HeatEBoiler = sdpvar(n_EBoiler,n_T);        %电锅炉热出力
PowerEBoiler = sdpvar(n_EBoiler,n_T);       %电锅炉耗电
​
C = [];     %约束
% C = sdpvar(C)>=0;
SCUC_value = 0;
​
%%
%添加约束
%%
%火电机组开机费用
% Add_Huodian_Startup;
%%
%功率平衡
% Add_PowerBalance;
Add_PowerFlow;
%%
%爬坡约束
Add_Ramp;
%%
%最小启停时间限制
Add_MinUpDownTime;
%%
%火电机组出力
Add_Huodian_UnitOutput;
%%
%天然气网约束
Add_GasConstraints;
%%
%热网约束
Add_HeatConstraints;
%%
%火电二次费用函数
Add_Huodian_GenCost;
%%
%天然气费用
Add_Gas_Cost;
%%     
%配置 
ops = sdpsettings('solver','cplex','verbose',2,'usex0',0);      
ops.gurobi.MIPGap = 1e-6;
ops.cplex.mip.tolerances.mipgap = 1e-6;
​
%%
%求解         
result = optimize(C, SCUC_value, ops);
​
if result.problem == 0 % problem =0 代表求解成功   
else
    error('求解出错');
end

3 程序结果

4 下载链接

相关推荐
我找到地球的支点啦12 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
吃好睡好便好4 天前
查找函数的使用
学习·算法·matlab·生活·查找函数
chhttty4 天前
Design Verifier检查:整型数溢出检查与修复
matlab·simulink
吃好睡好便好4 天前
判断函数的使用
学习·算法·matlab·生活·判断函数
hu9245195594 天前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
史上最甜的躯4 天前
控制系统——基础、导论;以直流电机控制系统为例详解微分方程模型、拉普拉斯变换、传递函数模型的理论、推导及仿真
matlab·simulink·传递函数·控制系统·拉普拉斯·电机模型
lingchen19065 天前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
可编程芯片开发5 天前
基于李雅普诺夫算法的四旋翼无人机姿态跟踪控制系统simulink建模与仿真
matlab·无人机·制造·四旋翼无人机·李雅普诺夫·姿态跟踪控制
matlab代码7 天前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
吃好睡好便好7 天前
转换函数的使用
学习·matlab·生活·转换函数