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

文摘   教育   2024-11-03 13:56   河北  

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下载链接

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

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


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