【双层模型】考虑供需双侧的综合能源双层优化模型

news2025/1/7 20:30:56

目录

主要内容  

   内容研究  

1.模型简介

2 程序释义

 部分代码 

 运行结果 

下载链接


主要内容  

该程序实现一个综合能源系统的优化调度双层模型,上下层分别采用差分进化算法和规划算法进行求解。模型考虑了多种能源设备,包括燃气轮机、燃气锅炉、风电、光伏、储能设备等的协同运行,同时兼顾了能源供应商和用户的利益,需满足各种约束条件,包括设备出力约束、储能约束、负荷平衡约束等,以供应商和用户的收益、成本等为目标进行求解,同时考虑到负荷需求响应,通过分层模型将非线性求解模型转化为线性求解模型,实现了系统的经济和性能优化。程序采用matlab+cplex进行求解,注释清楚,有对应的文档说明,方便学习研究!

   内容研究  

1.模型简介

上层模型目标函数为:

为了便于理解,分块分析如下:

I3代表运营商售电收入,I4代表运营商售热收入,C_CCHP代表CCHP的运行成本,C_grid代表购电成本,FD代表储能的售电收益,FH代表售热能收益。

下层目标函数为:

逐项分析如下:

FU代表用户满意度,F5代表用户的购电,F6代表用户购热成本。

该目标的意思是用户满意度最高,用户购电和购热成本最低。

下层模型是采用规划算法结合cplex优化主体出力结果和目标值。

涉及到的约束主要有:

  • 设备出力约束
  • 设备爬坡约束
  • 热电功率平衡约束
  • 与电网交互约束
  • 用户侧热电储能约束
  • 用户侧负荷转移和削减约束

2 程序释义

程序包括的子程序较多,相互间的调用关系可参考下图:

具体每部分代码含义详见下载文件夹中说明文档。

 部分代码 

%基础热负荷
dh=[1000,1010,1043,1155,1172,1197,1158,1060,923,880,910,830,785,730,700,730,810,820,810,910,950,1010,1030,1020];
%基础电负荷
de=[540,528,504,516,524,520,612,652,696,856,956,968,992,864,720,676,680,668,708,976,968,960,572,532];
de1=[408,404,372,392,396,388,448,448,460,524,620,780,764,768,612,628,620,632,660,868,864,848,448,404];
%风电出力
Pwt=[203,277,264,331,137,81,72,141,43,12,20,12,5,48,86,346,287,530,491,448,603,601,403,380];
%光伏出力
Ppv=[0,0,0,0,0,0,97,220,336,410,486,444,453,445,442,325,202,140,29,0,0,0,0,0];
%电网分时电价、上网电价
grid_fs=[0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.8,0.8,0.8,1.2,1.2,1.2,1.2,0.8,0.8,0.8,0.8,1.2,1.2,1.2,0.8];
grid_sw=[0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35];    
ch_min=[0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15];%热价下限
ch_max=[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5];%热价上限
Pice=sdpvar(1,24,'full');%电输出功率
Qgb=sdpvar(1,24,'full');%热输出功率
Pbuy=sdpvar(1,24,'full');%从电网购电电量
Psell=sdpvar(1,24,'full');%向电网售电电量
Pnet=sdpvar(1,24,'full');%交换功率
Temp_net=binvar(1,24,'full'); % 购|售电标志
le=sdpvar(1,24,'full');%可转移电负荷
lh=sdpvar(1,24,'full');%可转移热负荷
Pcharge=sdpvar(1,24,'full');UPcharge=binvar(1,24,'full');%  充电  
Pdischarge=sdpvar(1,24,'full');UPdischarge=binvar(1,24,'full');%  放电  
Hti=sdpvar(1,24,'full');UHti=binvar(1,24,'full');%充热
Hto=sdpvar(1,24,'full');UHto=binvar(1,24,'full');%放热
%用户偏好常系数
ve=1.5;
a_e=0.0009;
vh=1.1;
a_h=0.0011;
%燃气发电机、锅炉常数
ae=0.0013;
be=0.16;
ce=0;
ah=0.0005;
bh=0.11;
ch=0;
ce_ave=0.7;%平均电价约束
ch_ave=0.45;%平均热价约束
n_c=0.8;%热交换效率
n_ex=0.83;   %余热回收效率
n_ice=0.35;   %内燃机发电效率
​
%热储能
H_storage_max=1500; h_n=0.98;h_charge=0.98;h_discharge=1;%热储能容量/自损/充热/放热;
%电储能
E_storage_max=2000; e_n=1;e_charge=0.95;e_discharge=0.95;%电储能容量/自损/充电/放电;
bggin=1000;%%电储能

 运行结果 

下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单片机-串转并-74HC595芯片

1、74HC595芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。 15 和 1 到 7 脚 QA--QH:并行数据输出 9 脚 QH 非:串行数据输出 10 脚 SCLK 非&#x…

(框架漏洞)

1.Thinkphp 1.Thinkphp5x远程命令执⾏及getshell 搭建靶场环境 vulhub/thinkphp/5-rce docker-compose up -d #启动环境 ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami ?s/Index/\think\app/invokefunctio…

[SMARTFORMS] 输出文本变量绑定

在SMARTFORMS表单中的表格接口的"导入"页签处添加导入参数IV_EBELN 参数IV_EBELN为采购凭证编号,并为该参数添加默认值 在SMARTFORMS表单中的全局定义中的"全局数据"页签定义变量 结构ZSPO_HEADER_437、ZSPO_ITEM_437与表类型ZTPO_ITEM_437的定…

【DevOps】Jenkins部署

Jenkins部署 文章目录 Jenkins部署资源列表基础环境一、部署Gilab1.1、安装Gitlab1.2、修改配置文件1.3、加载配置文件1.4、访问Gitlab1.5、修改root登录密码1.6、创建demo测试项目1.7、上传代码1.8、验证上传的代码 二、部署Jenkins所需软件2.1、部署JDK2.2、部署Tomcat2.3、部…

Redis(二)value 的五种常见数据类型简述

目录 一、string(字符串) 1、raw 2、int 3、embstr 二、hash(哈希表) 1、hashtable 2、ziplist 三、list(列表) ​编辑 1、linkedlist 2、ziplist 3、quicklist(redis 3.2后的列表内…

PyQt实战——将pcm文本数据转换成.pcm的二进制文件

系类往期文章: PyQt5实战——多脚本集合包,前言与环境配置(一) PyQt5实战——多脚本集合包,UI以及工程布局(二) PyQt5实战——多脚本集合包,程序入口QMainWindow(三&…

Word2Vec解读

Word2Vec: 一种词向量的训练方法 简单地讲,Word2Vec是建模了一个单词预测的任务,通过这个任务来学习词向量。假设有这样一句话Pineapples are spiked and yellow,现在假设spiked这个单词被删掉了,现在要预测这个位置原本的单词是…

STM32F1学习——编码器接口

一、编码器接口 编码器接口可以接收正交编码器的信号,根据编码器旋转产生的正交信号脉冲,通过硬件自动控制CNT值的自增或自减,从而指出编码器的位置、旋转方向和旋转速度。 每个高级定时器和通用定时器都有一个编码器接口,他们会占…

什么是网关路由

1.认识网关 网关(Gateway)和路由(Router)是两个相关但不同的概念。 一、网关(Gateway) 定义 网关是一个网络节点,它充当了不同网络之间的连接点。可以将其看作是一个网络的 “大门”&#xf…

S32K144 UDSdoCAN 升级刷写实现笔记

文章目录 1. 摘要2. 开发环境搭建2.1 开发板2.2 IDE 安装2.3 更新扩展包2.4 烧录仿真测试2.4.1 新建工程2.4.2 导入已有工程2.4.3 编译工程2.4.4 硬件连接2.4.5 Debug2.4.6 添加 .c .h 文件2.5 串口配置2.5.1 时钟2.5.2 GPIO2.5.3 定时器2.5.4 uart 工程2.5.5 烧录验证3. 升级原…

第十八周:Faster R-CNN论文阅读

Faster R-CNN论文阅读 摘要Abstract文章简介1. 引言2. Faster R-CNN 框架2.1 RPN2.2 损失函数2.3 RPN的训练细节 3. Faster R-CNN的训练4. 优缺点分析总结 摘要 本篇博客介绍了 Faster R-CNN,这是一种双阶段的目标检测网络,是对 Fast R-CNN 的改进。为了…

Day28下 - 大模型微调:酒店评论情感分析

一、前置准备 1. 下载 LLaMA Factory https://github.com/hiyouga/LLaMA-Factory.git 搭建过程详见:https://blog.csdn.net/CSBLOG/article/details/144584581 2. 选择 预训练模型 和 prompt指令模型 预训练阶段在实际工作中,一般是用不上的&#xff…

【网络安全 | 漏洞挖掘】JS Review + GraphQL滥用实现管理面板访问

未经许可,不得转载。 正文 在映射目标范围后,我发现了一个用于管理的控制台界面,但没有注册功能。 于是我开始尝试: 1、模糊测试注册端点 -> 失败 2、在请求中将登录替换为注册 -> 再次失败 尝试均未奏效后,我决定冷静下来,重新思考方法并利用技术手段。 我观察…

数据库管理-第278期 开年综艺,第七届中国PG数据库生态大会有感(20250105)

数据库管理278期 20245-01-05 数据库管理-第278期 开年综艺,第七届中国PG数据库生态大会有感(20250105)1 走后门的可观测性2 社区VS商业3 从O来到PG去4 现场集锦5 IF CLUB社区总结 数据库管理-第278期 开年综艺,第七届中国PG数据库…

Docker 安装Elasticsearch搜索引擎 搜索优化 词库挂载 拼音分词 插件安装

介绍 允许用户快速索引和搜索大量的文本数据。通过使用倒排索引,它能够在海量数据中高效检索相关信息。提供灵活的查询语言,可以做全文搜索、模糊搜索、数据统计等,用来代替MYSQL的模糊搜索,MYSQL的模糊搜索不支持使用索引从而导…

NVR小程序接入平台EasyNVR使用FFmpeg取流时提示错误是什么原因呢?

在视频监控系统中,FFmpeg常用于从各种源(如摄像头、文件、网络流等)获取流媒体数据,这个过程通常称为“取流”。 在EasyNVR平台中,使用FFmpeg取流是一种常见的操作。FFmpeg作为一款强大的开源多媒体处理工具&#xff…

【电源专题】为什么测试电源的SW波形上冲振荡之前的0V电位要先来个小的下降

在同步电源的开关节点SW波形测试中,你可能会发现周期性的SW波形在上升前的一小段时间时间内会有一个小小的下跌,这个下跌会低于0V。那么这个下跌是怎么来的呢? 如下所示为某降压转换器的SW开关节点波形: 其展开后可以看到在上升之前有20ns左右的时间,SW电压是下跌…

基于EB和S32DS3.5建立基础工程

本文参考: https://blog.csdn.net/weixin_41660366/article/details/141949690 https://blog.csdn.net/zhoujingCSDN/article/details/142284796 0、简介 本文基于S32K312 介绍新建工程并引入EB,环境如下: MCU:NXP S32k312 RT…

如何申请LabVIEW软件著作权?

申请 软件著作权 时,若你的单位开发的应用是基于 LabVIEW 的图形化编程语言,你需要将 LabVIEW 程序中的图形化设计转换为源代码形式,以符合软件著作权申请的要求。由于LabVIEW本身是图形化编程语言,而不是传统的文本编程语言&…

C/C++中new/delete与malloc/free的区别及对象管理

C/C++中new/delete与malloc/free的区别及对象管理 在C/C++编程中,动态内存管理是一个核心且复杂的话题,其中new、delete、malloc和free是四个经常用于此目的的工具。尽管它们都涉及到内存的分配和释放,但它们在处理对象时的方式和效果却大相径庭。本文将通过示例来说明这些工…