基于信息间隙决策理论的碳捕集电厂优化调度程序代码!

2024-03-04 15:04

本文主要是介绍基于信息间隙决策理论的碳捕集电厂优化调度程序代码!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

适用平台:Matlab+Yalmip+Cplex

程序在建立电厂与碳捕集装置协同调度模型的基础上,引入信息间隙决策理论(information gap decision theory, IGDT)以同时满足系统的鲁棒性和经济性要求,通过风险追求和风险规避2种决策角度得到不同的调度方案。程序算例丰富、注释清晰、干货满满,可扩展性和创新性很高!码超所值!下面对文章和程序做简要介绍!

程序创新点:

1)将该系统在不确定性下的调度分为机会模型( opportuneness model, OM )和鲁棒模型(robustness model, RM)2种,前者偏投机,后者偏向保守。

2)在进行调度优化时,研究者需考虑负荷的不确定性并对调度方案进行决策指导。这里采用IGDT方法优化负荷的不确定性。

主要工作:

作为目前最有潜力的大规模商业化减碳手段之一,基于化学溶剂吸收的燃烧后碳捕集技术有望实现化石能源的清洁使用。在燃煤火电厂动态运行的基础上耦合碳捕集系统对于推动“碳中和”进程具有重要意义。但是,大多数研究没有考虑诸如用电价格波动和用电量的变化等因素对耦合碳捕集系统的电厂的影响。为此,该文在建立电厂与碳捕集装置协同调度模型的 基础上,引入信息间隙决策理论(information gap decision theory,IGDT)以同时满足系统的鲁棒性和经济性要求,通过风险追求和风险规避2种决策角度得到不同的调度方案,为系统的动态运行提供指导性意见。该文首先构建了确定性电厂与碳捕集装置耦合调度模型;其次,针对实时市场中负荷需求的不确定性,通过引入信息间隙决策理论,得到不同风险态度下的不确定性电厂与碳捕集装置耦合调度模型,优化确定系统调度的决策方案。

主要框架:

1. 信息间隙理论-IGDT

IGDT是处理非概率不确定性的决策方法。常用的随机规划方法难以优化此类无法用概率或场景表示的不确定性。同时,因模型设置了预期成本或利润指标,在优化中可同时保证系统鲁棒性和基本经济性,优于传统的鲁棒优化方法。不同于鲁棒优化精确的上下限范围集合,

IGDT的不确定因素输入为一个不精确的集合,并通过一些非概率模型的不确定集描述不确定性如包络模型、分数不确定性模型和椭球模型等。

2. 基于风险追求的机会IGDT调度模型

机会IGDT模型认为实时市场电力负荷的不确定性可使调度朝经济有利的方向发展。在风险追求调度决策下,不确定性调度模型的目标是最小化不确定度,即要保证在负荷波动幅度内的系统日利润要大于期望利润,且尽可能降低追求不确定性带来的风险,从而获得更大的收益。因此,建立了基于风险追求的机会IGDT碳捕集电厂调度模型,表示如下:

上式为双层规划模型,下层的目标函数通过风险追求调度决策优化使利润最大化,在该模型中实时负荷需求限制在不确定集内;上层的目标函数为最小化负荷的不确定度。其中:εm为机会偏差因子,DPOM为机会收益阈值,DP0为确定性碳捕集电厂调度模型(或称为风险中性模型,neutral model,NM)的最优值,该确定性模型是基于不确定性的预测值构建的。决策方案的机会性使得下层模型的目标利润大于DP0,因此εm的取值为[0,1),且与决策对风险追求的程度呈正比。对于碳捕集电厂而言,考虑负荷的调度方案与以电价为导向的调度方案相比,其日利润有所下降。此时,风险追求调度决策下负荷需求约束越小,越能获得收益。对于上式来说,当实时负荷需求取值为不确定集的下限λELt=λELt(1-α)时,下层模型的日利润能达到最大值, 因而可将双层规划模型转化为下述单层优化模型:

3. 基于风险规避的鲁棒IGDT调度模型

鲁棒IGDT模型认为负荷的不确定性会影响系统调度结果。在风险规避调度决策下,碳捕集电厂希望在保证基本的经济性的前提下实现鲁棒性最优,即求得不确定参数波动的极限值使得碳捕集电厂的日利润能够满足期望值,因此建立的基于风险规避的鲁棒IGDT碳捕集电厂调度模型为:

其中:δm为鲁棒偏差因子,DPRM为鲁棒收益阈值.同理,δm的取值范围为[0,1),且与决策对风险的规避程度呈正比。同时,对于上式来说,当实时负荷需求为λELt=λELt(1+α)时,即为不确定集的上界时。下层模型能取得最小值。同理。可将上式转化为:

程序结果:

1. 基于风险追求的机会IGDT 调度模型

2. 基于风险规避的鲁棒IGDT 调度模型


部分程序:

%%  定义信息间隙决策理论增加变量
HeatLoad=sdpvar(1,24);%实际热负荷​EleLoad=sdpvar(1,24);%实际电负荷
P_v_pre=sdpvar(1,24);%实际光伏​P_w_pre=sdpvar(1,24);%实际风电
gasLoad=sdpvar(1,24);%实际气负荷​C_CO2=sdpvar(1,1);%碳交易成本
% 购电
state=binvar(1,24,'full'); % 判断是否售电,1购电,0不购电
​P_buy = sdpvar(1,24,'full'); % 购电功率
% 燃气轮机​
GT_Q = sdpvar(1,24,'full'); % 燃气轮机的产热量
C_GT= sdpvar(1,24,'full'); % 燃气轮机碳排放
% 燃气锅炉
GB_G = sdpvar(1,24,'full'); % 燃气锅炉气耗量
GB_Q = sdpvar(1,24,'full'); % 燃气轮机的产热量
% 电锅炉
EB= sdpvar(1,24,'full');​EB_Q= sdpvar(1,24,'full');
EB_Qin=sdpvar(1,24,'full'); % 电锅炉供给CSP的热量
EB_Qload= sdpvar(1,24,'full');
% 储气装置
GS_S = sdpvar(1,24,'full'); %储气罐的储热量​GS_Qout = sdpvar(1,24,'full'); %储气罐的放热功率
% 电储能储装置
PS_S = sdpvar(1,24,'full'); ​PS_Qout = sdpvar(1,24,'full');
% 购气
Gas = sdpvar(1,24,'full'); % 购买的天然气量​P2G= sdpvar(1,24,'full'); % 电转气
G_P2G= sdpvar(1,24,'full'); % 电转气
% 光热​
CSP_S=sdpvar(1,24,'full'); % CSP中的储热罐的储热量​CSP_Qin=sdpvar(1,24,'full'); % CSP中的储热罐充热功率
CSP_Qout=sdpvar(1,24,'full'); % CSP的储热罐放热功率CSP_SU=sdpvar(1,24,'full'); % CSP用于启动汽轮机的热量​
% 碳捕集
CCS=sdpvar(1,24,'full'); %  碳捕集量​P_CCS=sdpvar(1,24,'full'); % 碳捕集能耗
CCS_P2G=sdpvar(1,24,'full'); % 供给P2G​CCS_S_in=sdpvar(1,24,'full'); % 储碳
CCS_S_out=sdpvar(1,24,'full'); % 放碳​
%% 碳捕集​​CCS(t)<=0.98*C_GT(t),P_CCS(t)==0.26*CCS(t)+3,CCS(t)==CCS_P2G(t)+CCS_S_in(t),​G_P2G(t)==2*(CCS_P2G(t)+CCS_S_out(t)),20<=CCS_S(t)<=150,CCS_S_lamda(t)*150*0.3>=CCS_S_out(t)>=0,​
%% 光热电站​%热量传递约束
Qsf(t)==CSP_Qin(t)-CSP_Qout(t)+CSP_SU(t)+CSP_Gen(t),​%% IGDT新增约束​
​HeatLoad(t)==(1-0.2*alfa)*HeatLoads(t),%热负荷鲁棒区间约束
​EleLoad(t)==(1-0.3*alfa)*EleLoads(t),%电负荷鲁棒区间约束
​P_v_pre(t)==(1+0.1)*P_v_pres(t),%光伏鲁棒区间约束
​P_w_pre(t)==(1+0.1)*P_w_pres(t),%风电鲁棒区间约束
​​gasLoad(t)==(1-0.3*alfa)*gasLoads(t),%气负荷鲁棒区间约];
%% 不确定性系数加权,各取0.2(此概率可自行设置,加一起等于1即可)​P_yun==sum(gamma_gas.*Gas)+sum(0.1*PV_P)+sum(0.1*WP_P)+sum(0.1*GT_P)+sum(0.1*GB_Q)+sum(gamma_buy.*(P_buy+P2G))+sum(0.1*CSP_GenP),C_CO2==0.5*(0.35*sum(GB_Q)+sum(C_GT)+1.08*sum(P_buy)-sum(G_P2G)),​cost<=29898.4065*(1-0.13),%设置目标函数约束,0.3为偏差系数,不过取的过小,否则容易无解;​   

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

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

这篇关于基于信息间隙决策理论的碳捕集电厂优化调度程序代码!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S