【分布鲁棒】多源动态最优潮流的分布鲁棒优化方法

简介: 【分布鲁棒】多源动态最优潮流的分布鲁棒优化方法

1 主要内容

程序主要复现的是《多源动态最优潮流的分布鲁棒优化方法》,针对大规模清洁能源接入电网引起的系统鲁棒性和经济性协调问题,提出含风–光–水–火多种能源的分布鲁棒动态最优潮流模型。采用分布鲁棒优化方法将风光不确定性描述为包含概率分布信息的模糊不确定集。将模糊不确定集构造为一个以风光预测误差经验分布为中心,以 Wasserstein距离为半径的 Wasserstein 球。在满足风光预测误差服从模糊不确定集中极端概率分布情况下最小化运行费用。由于梯级水电厂模型为混合整数模型,为了提高计算效率,将交流潮流近似为解耦线性潮流,以118节点系统为例验证了方法的可行性。

在研究过程中,有些地方描述不是很清楚,然后参考同作者英文文献获得启发《Wasserstein Metric Based Distributionally Robust Approximate Framework for Unit Commitment》,两个文章公式部分基本一致,表达方式有所差别,所以单一个文献看不明白的话可以找到作者其他文献就更容易了解作者的意图,尤其是有些期刊论文说的比较简约,但是在硕博论文中就解释的非常仔细,一点小心得分享给大家。

2 代码

%% 决策变量
x_theta = sdpvar(nbus, Horizon,'full');%网络角度
V = sdpvar(nbus, Horizon,'full');%网络节点电压
x_P_h = sdpvar(ngen, Horizon,'full');%风光调整前火电
x_P_s = sdpvar(ns, Horizon,'full');%风光调整前水电
% x_P_hz = sdpvar(ngen, Horizon,'full');
% x_P_sz = sdpvar(ns, Horizon,'full');
x_P_w = sdpvar(nw, Horizon,'full');
x_P_v = sdpvar(nv, Horizon,'full');
ww = sdpvar(1,Horizon,'full');%风力偏差
wp = sdpvar(1,Horizon,'full');%光伏偏差
wwp = sdpvar(1,Horizon,'full');%风光总偏差
alfah = sdpvar(ngen,Horizon,'full');%火电机组参与因子
alfas = sdpvar(ns,Horizon,'full');%水电机组参与因子
rgmax = 50.*ones(ngen, Horizon);%火电旋转备用容量
rgmin = 10.*ones(ngen, Horizon);%火电旋转备用容量
rsmax = 50.*ones(ns, Horizon);%水电旋转备用容量
rsmin = 10.*ones(ns, Horizon);%水电旋转备用容量
rhog = 2.*ones(ngen, Horizon);
rhos = 3.*ones(ns, Horizon);
k1 = sdpvar(1);%对偶变量
k2 = sdpvar(1);%对偶变量
tk1 = sdpvar(1,K,'full');%辅助变量
tk2 = sdpvar(1,K,'full');%辅助变量
%平方分段线性化参数
gn=5;%分段数
x_pf=sdpvar(ngen, Horizon,'full');%p的平方
x=sdpvar(ngen, Horizon,'full');
gw1=sdpvar(gn+1,Horizon,'full');%辅助参数,下同
gw2=sdpvar(gn+1,Horizon,'full');
gw3=sdpvar(gn+1,Horizon,'full');
gw4=sdpvar(gn+1,Horizon,'full');
gw5=sdpvar(gn+1,Horizon,'full');
gw6=sdpvar(gn+1,Horizon,'full');
gw7=sdpvar(gn+1,Horizon,'full');
gw8=sdpvar(gn+1,Horizon,'full');
gw9=sdpvar(gn+1,Horizon,'full');
gw10=sdpvar(gn+1,Horizon,'full');
gw11=sdpvar(gn+1,Horizon,'full');
gw12=sdpvar(gn+1,Horizon,'full');
gw13=sdpvar(gn+1,Horizon,'full');
gw14=sdpvar(gn+1,Horizon,'full');
gz1=binvar(gn, Horizon,'full');gz2=binvar(gn, Horizon,'full');gz3=binvar(gn, Horizon,'full');gz4=binvar(gn, Horizon,'full');gz5=binvar(gn, Horizon,'full');
gz6=binvar(gn, Horizon,'full');gz7=binvar(gn, Horizon,'full');gz8=binvar(gn, Horizon,'full');gz9=binvar(gn, Horizon,'full');gz10=binvar(gn, Horizon,'full');
gz11=binvar(gn, Horizon,'full');gz12=binvar(gn, Horizon,'full');gz13=binvar(gn, Horizon,'full');gz14=binvar(gn, Horizon,'full');
%% 约束条件生成
cons = [];
cons = [cons,wwp == ww + wp];
% 火电
Phmax = 10.*[460;300;443;320;330;460;300;443;320;330;460;300;443;320];%火电机组上限
Phmin = [90;58;110;30;50;90;58;110;30;50;90;58;110;30];%火电机组下线
ru=50;rd=40;%爬坡和滑坡
%水电
Psmax = [1060;820;1243];
Psmin = [90;58;110];
rsu=0.1;rsd=0.1;
cons_sgen = getConssGen(x_P_s,Psmax,Psmin,rsu,rsd,rsmax,rsmin,wwp,alfas,Horizon);
 cons_gen = getConsGen2(x_P_h,Phmax,Phmin,ru,rd,rgmax,rgmin,wwp,alfah,Horizon);
 cons = [cons, cons_gen];
 cons = [cons, cons_sgen];
 %风电
 cons = [cons, x_P_w==muw+ww,-0.3.*muw<=ww<=0.3.*muw];
  %光伏
 cons = [cons, x_P_v==muv+wp,-0.3.*muv<=wp<=0.3.*muv];
% 仿射约束
x_P_hz = x_P_h-alfah.*repmat(wwp,ngen,1);
x_P_sz = x_P_s-alfas.*repmat(wwp,ns,1);
cons = [cons,0<= alfah <=1,0<= alfas <=1,sum(alfah)+sum(alfas) == ones(1,Horizon)];

3 程序效果

程序采用118节点系统

以上是程序优化结果图,下面为原文对照图。

以上是程序优化结果图,下面为原文对照图。4


相关文章
鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题
鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......
|
数据采集 数据挖掘 Python
使用Python构建简单的Web爬虫:实现网页内容抓取与分析
本文将介绍如何使用Python编写一个简单的Web爬虫,实现对特定网页内容的抓取与分析。通过学习本文,读者将了解到如何利用Python的requests和Beautiful Soup库来获取网页内容,并通过示例演示如何解析HTML结构,提取所需信息。此外,我们还将讨论一些常见的爬虫挑战以及如何避免被网站封禁的策略。
|
9月前
|
存储 机器学习/深度学习 数据采集
综合能源系统零碳优化调度研究(Matlab代码实现)
综合能源系统零碳优化调度研究(Matlab代码实现)
179 7
|
算法 调度
电网两阶段鲁棒优化调度模型(含matlab程序)
电网两阶段鲁棒优化调度模型(含matlab程序)
|
存储 监控 算法
jvm-性能调优(二)
jvm-性能调优(二)
|
机器学习/深度学习 算法 调度
深度学习|改进两阶段鲁棒优化算法i-ccg
深度学习|改进两阶段鲁棒优化算法i-ccg
|
机器学习/深度学习 自然语言处理 语音技术
深度学习的奇妙之旅:从理论到实践
【10月更文挑战第36天】在本文中,我们将一起探索深度学习的神秘世界。我们将首先了解深度学习的基本概念和原理,然后通过一个简单的Python代码示例,学习如何使用深度学习库Keras进行图像分类。无论你是深度学习的初学者,还是有一定基础的学习者,都可以从这篇文章中获得新的知识和启示。
|
安全 Java 应用服务中间件
认识SpringSecurity
认识SpringSecurity
149 0
认识SpringSecurity
|
机器学习/深度学习 数据可视化 算法
利用 XGBoost 进行时间序列预测
利用 XGBoost 进行时间序列预测
1201 0
|
算法 vr&ar
状态空间模型:卡尔曼滤波器KFAS建模时间序列
状态空间模型:卡尔曼滤波器KFAS建模时间序列