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

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

相关文章

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决