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

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

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求鲁棒优化问题的一般方法。......
鲁棒优化入门(三)——鲁棒优化工具箱RSOME快速上手与应用实例
本文主要参考RSOME工具箱的用户手册《Users Guide for RSOME》 RSOME的用户手册并不是很长,但一些地方可能不是特别好理解,在这里我主要是通过写博客分享一下我的使用方法,和大家一起学习,也能加深自己的理解。
|
数据采集 数据挖掘 Python
使用Python构建简单的Web爬虫:实现网页内容抓取与分析
本文将介绍如何使用Python编写一个简单的Web爬虫,实现对特定网页内容的抓取与分析。通过学习本文,读者将了解到如何利用Python的requests和Beautiful Soup库来获取网页内容,并通过示例演示如何解析HTML结构,提取所需信息。此外,我们还将讨论一些常见的爬虫挑战以及如何避免被网站封禁的策略。
|
6月前
|
存储 机器学习/深度学习 数据采集
综合能源系统零碳优化调度研究(Matlab代码实现)
综合能源系统零碳优化调度研究(Matlab代码实现)
141 7
|
机器学习/深度学习 数据可视化 算法
利用 XGBoost 进行时间序列预测
利用 XGBoost 进行时间序列预测
1135 0
|
算法 vr&ar
状态空间模型:卡尔曼滤波器KFAS建模时间序列
状态空间模型:卡尔曼滤波器KFAS建模时间序列
|
机器学习/深度学习 数据可视化 算法
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
【免费资料】IEEE33节点系统参数及拓扑图visio
初学者入门配电网可参考经典的IEEE 33节点系统,此系统在文献中广泛应用。资源包括节点和支路参数的Excel表格及Visio的网络拓扑图,可免费下载。配电网以闭环设计增强灵活性和可靠性,故障恢复涉及网络拓扑约束。提供的MATLAB相关链接探讨了孤岛、重构及故障恢复策略。
|
存储 人工智能 算法
鲁棒优化入门(4)-两阶段鲁棒优化及行列生成算法(C&CG)超详细讲解
        鲁棒优化是应对数据不确定性的一种优化方法,但单阶段鲁棒优化过于保守。为了解决这一问题,引入了两阶段鲁棒优化(Two-stage Robust Optimization)以及更一般的多阶段鲁棒优化,其核心思想是将决策问题分为两个阶段。第一阶段是进行初步决策,第二阶段是根据第一阶段的决策结果制定更好的决策策略,应对数据不确定性的影响。这种方法可以降低保守性,提高鲁棒性。
|
存储 算法 调度
Matlab+Yalmip两阶段鲁棒优化通用编程指南
主要包含8大内容: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题。 ⑤.使用对偶变换求解两阶段鲁棒优化的子问题。 ⑥.采用Yalmip工具箱的内置函数,将线性约束写成紧凑矩阵形式的方法。 ⑦.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的KKT条件。 ⑧.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的对偶问题。