随机自适应鲁棒方法!基于恶劣场景辨别法的微网随机自适应鲁棒模型程序代码!

本文主要是介绍随机自适应鲁棒方法!基于恶劣场景辨别法的微网随机自适应鲁棒模型程序代码!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

随着分布式电源(distributed generator,DG)接入电网比例的不断提高,其出力的随机性和间歇性对电力系统的安全稳定运行构成威胁。微网凭借先进的智能计量技术、协调控制技术以及信息通信技术,为有效解决DG并网提供了新的思路。然而,由于电价的波动性和风光出力的随机性,不平衡惩罚依然存在,微网参与市场竞标仍存在很大的风险。微网往往聚合可再生能源、储能、需求响应(demand response,DR)等多种分布式能源,通过协调内部各机组出力,实现作为一个有机整体参与电网运行与调度,极大减小了分布式电源单独并网对公网造成的冲击,并提高了其市场竞争力。多阶段鲁棒优化调度模型能够在仅知道不确定性因素边界值的基础下,严格保证极端条件下的系统运行可靠性,并通过动态迭代降低保守性,克服了静态鲁棒优化的缺点。

恶劣场景概念及现实意义

从现实意义上来讲,所谓最恶劣场景,就是使得微网实时调度收益最低的场景,例如,当光伏出力波动较大,在本该出力较高的10-16(一般认为)时,由于天气等原因,此时光伏出力值较低,为了满足较高的负荷需求,微网在此时需要增加向电网的购电电量或增开燃气轮机组等其余发电设备,相较于成本较低廉的光伏发电,该举措使得微网的发电成本增加,从而其收益有所降低。

事实上,整体目标函数包括两部分,第一阶段基准场景下的日前优化调度收益最大化,由于基准场景一般给定,所以第一阶段为确定性的优化模型。第二阶段考虑了所有可能出现的光伏场景,设该场景集合为Ω,第二阶段的min-max问题其实质含义为,假设Ω集合中共计有ns种光伏场景,则内层max求解的是每一个光伏场景微网的实时调度收益最大化问题,共计有ns种最优解,分别对应不同场景。而外层的min主要用于辨别这ns种场景下使得微网实时收益最低的场景,若假设当取场景si时,对应的微网实时调度收益在所有场景中最低,则可认为此时的si最恶劣场景,也称恶劣场景。

鲁棒性的定义与意义

鲁棒性是指算法模型在面对各种异常情况时,能够保持良好的性能和稳定性。在实际应用中,数据可能存在噪声、缺失、异常值等问题,算法模型需要具备一定的鲁棒性才能在这些情况下正常工作。提高算法模型的鲁棒性可以提高其在真实环境中的适应性和可靠性,为实际问题的解决提供更好的保障。

自适应鲁棒优化求解思路

目前求解自适应鲁棒优化问题主要有4种思路:1)仿射算法;2)Benders分解算法;3)列约束生成法;4)场景法。

首先,仿射算法利用线性决策规则建立决策变量与不确定参数之间的仿射关系,从而将两阶段问题转化为单阶段优化问题,但是结果较为保守;

Benders分解算法以及列约束生成法在线性化过程中会引入大量的边界参数和整数变量,导致问题规模较大时模型求解复杂;

场景法需要列举大量不确定场景集合,导致计算的效率偏低,求解时间过长。

迭代流程图

程序介绍

针对光伏出力的随机性与间歇性,采用动态鲁棒优化法对其进行处理。构建了考虑电价和光伏出力不确定性的微网两阶段鲁棒优化调度模型,并采用恶劣场景辨别算法将原问题分解为主问题和子问题进行迭代求解。子问题用来辨别最恶劣的光伏出力情景,并通过主问题对该情景下的单层优化模型进行求解,从而极大地削减了所需求解情景数量,提高了模型的计算效率。程序中算例丰富,注释清晰,干货满满,创新性和可扩展性很高,足以撑起一篇高水平论文!下面对程序做简要介绍!

程序适用平台:Matlab+Yalmip+Cplex

参考文献:《基于恶劣场景辨别法的微网随机自适应鲁棒模型》-南方电网技术

复现情况:本程序未复现考虑微网同时参与日前能量市场、实时能量市场以及碳交易市场的情况,感兴趣的小伙伴可以自己尝试添加。

程序结果

部分程序

kmp=length(j);P_MP=sdpvar(1,1);​u_GTon=binvar(1,24);
u_GToff=binvar(1,24);u_GT=binvar(1,24);​C_GT=sdpvar(kmp,24);
P_DA=sdpvar(1,24);S_DA=sdpvar(1,24);​P_RT=sdpvar(kmp,24);
S_RT=sdpvar(kmp,24);g_GT=sdpvar(kmp,24);P_D=sdpvar(kmp,24);​
C_GT>=0,​Pmax>=P_DA>=0,
Pmax>=S_DA>=0,Pmax>=P_RT>=0,​Pmax>=S_RT>=0,
g_GT>=0,P_Dmax>=P_D>=0,​
u_GT(t)-u_GT(t-1)<= u_GTon(t),u_GT(t-1)-u_GT(t)<= u_GToff(t),      ​
​2*u_GToff(t)<=2-u_GT(t)-u_GT(t+1);    
2*u_GTon(t)<= u_GT(t)+u_GT(t+1);​
C_GT(s,t)==a*u_GT(t)+k*g_GT(s,t)+SUC*u_GTon(t)+SUD*u_GToff(t),​
g_GT(s,t) <= u_GT(t)*g_GT_max;     ​
​g_GT(s,t)-g_GT(s,t-1)<=RU;  
​g_GT(s,t)-g_GT(s,t-1)>=-RD; 
S_DA(t)+S_RT(s,t) == P_DA(t)+P_RT(s,t)+P_RES(s,t)+g_GT(s,t);    ​
​P_MP<=sum(x_RT.*(S_RT(s,:)-1.1*P_RT(s,:)))-sum(C_GT(s,:));
Obj_MP=Obj_MP+x_DA(t)*(S_DA(t)-1.1*P_DA(t))-SUC*u_GTon(t)-SUD*u_GToff(t);

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

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

这篇关于随机自适应鲁棒方法!基于恶劣场景辨别法的微网随机自适应鲁棒模型程序代码!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920878

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提