从基础抓起!基于线性规划的机组最优组合模型程序代码!

文摘   科学   2024-07-06 09:09   江苏  

前言


为了实现电力供需的平衡,并最合理地利用发电资源,预先对发电机组的启停和出力进行调度安排就是非常必要的,这就是机组组合问题(Unit Commitment, UC)。机组组合问题问题是一类混合整数规划问题(Mixed Integer Programming, MIP),要求基于已知的系统数据,求解计划时间内机组决策变量的最优组合,使得系统总成本达到最小。该问题的决策变量由两类,一类是各时段机组的启停状态,为整数变量,0表示关停,1表示启动;另一类是各时段机组的出力,为连续变量。对于混合整数规划,常用的方法有分支定界法,benders分解等。CPLEX提供了快速的MIP求解方法,只需要按照程序规范在MATLAB中编写程序化模型,调用CPLEX求解器,即可高效求解。

数学模型


1)目标函数:

目标函数即为最小化成本,包括发电带来的煤耗成本和机组启停产生的开停机成本。

其中,机组的能耗成本可用二次函数表述:

2)约束条件:

由上小节构建的机组组合优化模型,煤耗成本采用二次函数,当系统规模较大时(如节点数超过1000),求解起来将消耗大量时间。因此我们可以对原模型进行线性化处理。

算例分析


本程序算例基于IEEE-30节点标准测试系统,系统接线图如下图所示。系统包含30个节点,6台发电机组。要求确定系统最优机组组合,使得系统各机组总运行成本(煤耗成本+启停成本)最小化,对学习机组组合的小伙伴很有帮助!

适用平台:Matlab+Yalmip+Cplex/Gurobi

程序结果


从上到下依次为热备用系数:0.020.050.080.150.250.35

部分程序


%% 规模变量%机组数gennum=size(paragen);gennum=gennum(1,1);%节点数numnodes=size(loadcurve);numnodes=numnodes(1,1)-1;%时间范围T=size(loadcurve);T=T(1,2)-1;%线性化分段数(按需要更改)m=4;%各时刻节点总负荷%决策变量u=binvar(gennum,T,'full');%状态变量p=sdpvar(gennum,T,'full');%即各机组实时功率p(i,t)Ps=sdpvar(gennum,T,m,'full');%分段出力costH=sdpvar(gennum,T,'full');%启动成本costJ=sdpvar(gennum,T,'full');%关停成本sum_PowerGSDF=sdpvar(T,branch_num,numnodes,'full');%发电机的输出功率转移总和%% 目标函数线性化MaxPs=zeros(gennum,T,m);%这里表示分段出力的上限st=[];%st约束初始化for i=1:gennum   %目标函数线性化后分段出力的不等式约束MaxPs(i,t,s)=(limit(i,1)-limit(i,2))/m;st=st+[Ps(i,t,s)>=0,Ps(i,t,s)<=MaxPs(i,t,s)];K=zeros(gennum,m);%煤耗函数的斜率值K(i,s)=2*para(i,1)*(2*s-1)*MaxPs(i,1,1)+para(i,2);%推导简化后的煤耗斜率 %目标函数线性化后分段出力的等式约束st=st+[p(i,t)==(sum(Ps(i,t,:),3)+u(i,t)*limit(i,2))];%% 目标函数totalcost=0;%机组费用成本最小%线性化的最优成本目标totalcost=totalcost+K(i,s)*Ps(i,t,s);%线性化煤耗成本totalcost=totalcost+u(i,t)*(para(i,2)*limit(i,2)+para(i,1)*limit(i,2)^2+para(i,3));%加上表示机组开机并以最小出力 运行产生的煤耗totalcost=totalcost+costH(i,t)+costJ(i,t);%加上机组启停产生的开停机成本%原二次函数式的最优成本目标otalcost=totalcost+para(i,1)*p(i,t).^2+para(i,2)*p(i,t)+para(i,3)*u(i,t);  %煤耗成本%    totalcost=totalcost+costH(i,t);   %启动成本totalcost=totalcost+costJ(i,t); %关停成本st=st+[u(i,t)*limit(i,2)<=p(i,t)<=u(i,t)*limit(i,1)];%机组出力上下限约束

部分内容源自网络,侵权联系删除!

欢迎感兴趣的小伙伴点击文末阅读原文获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!

更多创新性预测及优化程序请点击公众号首页:《预测优化》|《综合能源》链接!

创新优化及预测代码
免费分享研究理论及方法,基础代码资料,努力提供电力系统相关专业预测及优化研究领域的创新性代码,保质保量!面包多地址:https://mbd.pub/o/yc_yh/work
 最新文章