Matlab|计及需求侧响应日前—日内两阶段鲁棒备用优化

目录

[1 主要内容](#1 主要内容)

日前计划模型

日内调整模型

不确定集建模

[2 部分代码](#2 部分代码)

[3 程序结果](#3 程序结果)

[4 下载链接](#4 下载链接)


1 主要内容

该程序复现文章《计及需求侧响应日前---日内两阶段鲁棒备用优化》,以6节点系统为例,综合考虑风电出力不确定性与电力设备 N-k强迫停运,增强电力系统应对不确定性因素的鲁棒性。基于鲁棒模型对系统运行备用进行优化,最小化电网在最恶劣运行场景下的调整成本,保证电网的安全可靠运行,并采用列和约束生成算法对两阶段三层优化问题进行求解。这个程序算是个超级丐版,注释较少,运行结果也少,如果预算充足可以参考一文说清楚6节点电网两阶段鲁棒优化调度如何编程,同时附赠【KKTCCG】IEEE6节点系统两阶段鲁棒优化调度matlab,学起来更加便捷轻松!

日前计划模型

日内调整模型

不确定集建模

2 部分代码

复制代码
%风电场接在母线5上,在风电场端口集成储能系统
%118系统风电场接在母线19、25、40、62
​
%% 数据及常数矩阵
mpc=loadcase('case6ww');
bus=mpc.bus;
branch=mpc.branch;
gen=mpc.gen;
gencost=mpc.gencost;
baseMVA=mpc.baseMVA;
​
load('data.mat');
CPw=Cw(:,1:24,3)*300;%修改风电场场景、时间间隔、数目与容量
CPw=permute(CPw,[3,2,1]);
LD=1.8*bus(:,3)*Load(:,1:24);%修改Load,以改变考虑的时间间隔
​
NB=size(bus,1);
NG=size(gen,1);
NL=size(branch,1);
NW=size(CPw,1);
NT=size(CPw,2);
NS=size(CPw,3);
​
dW=zeros(NW,NT,NS);
maxdW=zeros(NW,NT);
mindW=zeros(NW,NT);
for i=1:NS
    dW(:,:,i)=CPw(:,:,i)-CPw(:,:,1);
end
for i=1:NW
    for j=1:NT
        maxdW(i,j)=1.2*max(dW(i,j,:));
        mindW(i,j)=1.2*min(dW(i,j,:));
    end
end
​
X=repmat(branch(:,4),1,NT);
Fmax=repmat(branch(:,6),1,NT);
PGmax=repmat(gen(:,9),1,NT);
PGmin=0.85*repmat(gen(:,10),1,NT);
LIDRmax=0.4;
% LIDRmax=0.1;
Pt=gen(:,10);%修改爬坡约束
​
ref=find(bus(:,2)==3);
G2B=zeros(NB,NG);
for i=1:NG
    G2B(gen(i,1),i)=1;
end
W2B=zeros(NB,NW);
W2B(5,1)=1;
B2B=zeros(NB,NL);
for i=1:NL
    B2B(branch(i,1),i)=1;
    B2B(branch(i,2),i)=-1;
end
​
costa=gencost(:,5);
costb=gencost(:,6);
costc=gencost(:,7);  
StartCost=gencost(:,2);
ShutCost=gencost(:,3);
% PG0=gen(:,2);
% IS0=ones(NG,1);
% for i=1:NG
%     if PG0(i)==0
%         IS0(i)=0;
%     end
% end
PG0=zeros(NG,1);
IS0=zeros(NG,1);
Ton=3;%开关机时间可修改
Toff=2;
​
pela=zeros(NT,NT);
em=0.4;
et=2;
for i=1:NT
    pela(i,i)=-em;
    num_period=0;
    for j=i-et:i+et
        if j>0 && j<=NT && j~=i
            num_period=num_period+1;
        end
    end
    for j=i-et:i-1
        if j>0
            pela(j,i)=em/num_period;
        end
    end
    for j=i+1:i+et
        if j<=NT
            pela(j,i)=em/num_period;
        end
    end
end
price0=[18 18 18 18 18 18 21 21 23 23 23 23 23 23 23 23 21 21 21 21 21 21 18 18]';
price0=price0(1:NT);
LPDRmax=0.2;
% LPDRmax=0;
​
CRGu=15;
CRGd=8;
CRL=30;
CWc=10;
CLs=1000;
​
M_l=Fmax(:,1)+2*pi./X(:,1);
M_rho=10000;
M=10000;
​
itermax=99;
e=0.001;
UB=zeros(1,itermax);
UB(1)=999999999;
LB=zeros(1,itermax);
LB(1)=-999999999;
gap_cal=zeros(1,itermax);
PWu_return=zeros(NW,NT,itermax);
zl_return=zeros(NL,1,itermax);
​
%% 子问题对偶问题左端系数矩阵
lambda_PG=zeros(NB*NT,NG*NT);
for i=1:NT
    lambda_PG((i-1)*NB+1:i*NB,i*NG-NG+1:i*NG)=G2B;
end
lambda_PG=lambda_PG';
lambda_PW=zeros(NB*NT,NW*NT);
for i=1:NT
    lambda_PW((i-1)*NB+1:i*NB,i*NW-NW+1:i*NW)=W2B;
end
lambda_PW=lambda_PW';
lambda_Flow=zeros(NB*NT,NL*NT);
for i=1:NT
    lambda_Flow((i-1)*NB+1:i*NB,i*NL-NL+1:i*NL)=-B2B;
end
lambda_Flow=lambda_Flow';
lambda_LIDR=eye(NB*NT);
lambda_LS=eye(NB*NT);
​
mu_Flow=eye(NL*NT);
mu_Theta=zeros(NL*NT,NB*NT);
for i=1:NT
    mu_Theta((i-1)*NL+1:i*NL,(i-1)*NB+1:i*NB)=-baseMVA*B2B';
    for j=1:NL
        mu_Theta((i-1)*NL+j,(i-1)*NB+1:i*NB)=mu_Theta((i-1)*NL+j,(i-1)*NB+1:i*NB)/X(j,1);
    end
end
mu_Theta=mu_Theta';
​
nu_Flow=eye(NL*NT,NL*NT);
​
kappa_Theta=eye(NB*NT,NB*NT);
​
beta_PG=eye(NG*NT);
beta_dPu=-eye(NG*NT);
beta_dPd=eye(NG*NT);
​
delta_dPu=eye(NG*NT);
​
gamma_dPd=eye(NG*NT);
​
rho_PW=eye(NW*NT);

3 程序结果

4 下载链接

相关推荐
IT猿手3 小时前
SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
开发语言·人工智能·matlab·智能优化算法
我爱C编程12 小时前
基于Qlearning强化学习的机器人路线规划matlab仿真
matlab·机器人·强化学习·路线规划·qlearning·机器人路线规划
Evand J1 天前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
孤亭远见1 天前
COMSOL with Matlab
matlab
图南楠1 天前
simulink离散传递函数得到差分方程并用C语言实现
matlab
信号处理学渣1 天前
matlab画图,选择性显示legend标签
开发语言·matlab
机器学习之心2 天前
Bayes-GRU-Attention的数据多特征分类预测Matlab实现
matlab·分类·gru
叶庭云2 天前
Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的
matlab·编程语言·r·数组索引·从 1 开始
γ..2 天前
基于MATLAB的图像增强
开发语言·深度学习·神经网络·学习·机器学习·matlab·音视频
IT猿手2 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习