当前位置: 首页 > news >正文

(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码

参考文献:

[1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012.

1.基本原理

        本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合传递给内层,内层模型求解当前容量组合下经济性最优的能量调度结果与日运行收益并反馈给外层。外层模型计及BIPV 系统全寿命周期成本与效益,以投资回收期最短为目标函数,优化光伏与储能的容量配置。双层耦合模型的结构如图 1 所示。

        根据建筑所在地经纬度,通过 NASA POWER网站获取单位小时太阳辐射量数据,根据光电转换率与光伏系统效率计算得到典型光伏日出力数据。外层模型设置光伏与储能容量备选集,其中光伏容量以光伏板面积表示,选取某一容量组合[APV, Eb],其中 APV为集合{A0,A0+ΔA,…,Amax}中某一取值,Eb在集合{E0,E0+ΔE, …,Emax}中取值,并传递给内层模型。内层模型在当前容量配置下,根据建筑 1 日用电分布等参数,以储能电池 25h 的荷电状态作为优化参数(初值与末值相等且都设置为 0.5),日运行收益最大作为优化目标,利用改进粒子群算法(particle swarm optimization,PSO)进行求解,得到24h内建筑集成光储系统的能量调度结果与日运行最大收益并反馈给外层模型。外层模型据此计算当前容量配置组合下的最短投资回收期,再选取下一个容量组合,重复上述过程。遍历备选集所有的容量组合,投资回收期作为评价标准,即可获得最优光伏–储能容量配置组合与该组合对应的最优能量调度策略。

1.1优化指标

        采用投资回收期作为优化目标,综合考虑系统全寿命周期各阶段的成本与效益。

1.1.1 系统成本

        系统成本主要包括光伏与储能的建设成本与运维成本。

        1)储能建设成本。

        内层模型计及储能充放电成本,即将储能建设阶段的投资折算到一日循环充放电产生的成本,其计算式为

 

        2)储能运维成本。

        储能维护成本包括日常运维、零部件更换、人工等费用,利用建设成本乘以比例系数ηB得到,计算式为

        3)光伏建设与年度运维成本。

        光伏建设成本包括光伏组件、逆变器、缆线、辅材等费用及人工安装费。运维成本包括器件维护费用及人工成本,对应比例系数为ηPO,计算式为

1.1.2 系统收益

        系统收益包括电价收益、光伏上网收益、政府补贴、碳减排收益与光伏组件回收收益。

        4)碳减排收益。

        碳交易是温室气体排放权交易的统称,2005年《京都议定书》将市场机制作为解决全球温室气体减排问题的新路径,即把二氧化碳排放权作为一种商品,从而形成了二氧化碳排放权的交易[15-16]。

1.2目标函数

1.2.1 外层模型目标函数

        外层模型以整个系统的投资回收期最短作为优化目标,其函数表达式为

1.2.2 内层模型目标函数

        内层模型根据 1 日内每小时的能量流动结果,获得每日最大收益,目标函数可以表示为

1.3约束条件 

2.改进粒子群算法求解

        经典粒子群算法是一种基于群体智能的全局随机搜索算法[17-18],通用性较强,在各个工程领域中都得到广泛的应用。但经典粒子群算法在解决复杂高维优化问题时,容易陷入局部极值且收敛速度减慢[19]。因此,本文提出一种改进粒子群算法,对惯性权重、学习因子、速度限制等参数进行自适应调整,优化粒子个体的寻优能力。同时施加速度变异,保障求解结果为全局最优解。改进的粒子群算法流程如图 2 所示。

 

         3)惯性权重取值将影响整个过程的收敛性与优化结果。对于当前适应度较大的粒子,其惯性权重因子应较小,从而在群体中保留该微粒,反之则应设置较大的惯性权重。因此,对惯性权重因子的取值做出调整,一方面使整体惯性权重随迭代次数线性递减,另一方面根据当前各粒子适应度差异性,自适应调节单个粒子的惯性权重。这种惯性权重修正方式可表示为

 

3.编程思路分析

3.1参数和变量定义

表1 相关参数

 2 上层决策变量

变量

Matlab定义

含义

维度

A_{PV}

A_PV

光伏板面积

1

E_b

E_b

储能额定容量

1

 3 下层决策变量

3.2编程思路

        根据对文献内容的解读,可以设计下面的编程思路:

        步骤1:输入所需数据

        这一步比较简单。算例分析用到的部分数据可以从原文中找到,其他数据可以自己假设一下。然后将所有需要的数据,按照表1的定义格式输入即可。

        步骤2上层备选集

        上层优化中决策变量是光伏板的容量和储能容量,但实际上还需要由光伏板的容量、太阳辐射强度以及其他相关参数计算出光伏的输出功率。在一个确定的时间,太阳辐射强度是固定的,其他参数也都是固定的,因此可以认为光伏输出功率和光伏容量是线性关系,我在代码中表示为:

        因为文中算例分析中以及给出了光伏容量的最优配置为30m²,同时也提供了该情况下光伏的出力曲线,所以令每小时光伏出力÷30,就可以得到系数取值。

        步骤3内层模型中决策变量的设置

        元文中提到,内层模型中决策变量为储能荷电状态Sb而其他的变量都可以通过计算得到,具体如下:

        步骤4粒子群算法的实现

        原文中所谓的改进粒子群算法和普通的粒子群算法没有多大区别,加入的5点改进,改进1其实就是把问题的精度降低,以使搜索空间减小,改进2-5是一些比较常规的做法,改进6就是初始化的时候,和问题的背景相结合,具体实现方式如下:

        ①粒子的初始化

        文献中的模型比较简单,决策变量初始化时,起始时段和末尾时段都是固定值0.5,所谓写了线性增加,线性减小的地方都是固定值,真正随机的只有写了Random的地方。

        ②适应度函数的计算

        有点无法理解文中公式4所表达的含义,当P_grid大于0时,表示需要向电网购电,那么购电费用就是P_grid×对应的分时电价。但文中将(负荷—向电网购电量)×分时电价称之为电价收益,有点不太理解,这一项最多只能说是通过配置光伏和储能,减少的购电费用,但减少了就能说是收益嘛?而且为什么只把减少的量放进来,不拿购电量放进来。反正我是没有理解这部分的逻辑,但可能是有哪些地方我没有参透吧,代码中我还是按照他给的方式来写的。

        粒子群算法中对于约束条件的处理有很多种形式,我在代码中参考这篇文章给的罚函数法进行处理:粒子群算法求解带约束优化问题 - 知乎

        ③每次迭代时更新速度上下限,惯性权重以及学习因子。

        ④加入变异机制

        步骤5输出运行结果

        参考文中的图表的格式,输出结果即可。

4.Matlab代码

%% 清除内存空间
clc
clear
close all%% 通过遍历光伏和储能的备选集合求最优配置方案
parameters;
it_num = length(20:5:160)*length(0.5:0.5:20);
I_INlayer = zeros(1,it_num);
S_b_INlayer = zeros(it_num,25);
I_CCER = zeros(1,it_num);
C_PV = zeros(1,it_num);
N_y = 365;
I_outlayer = zeros(1,it_num);
A_PVi = zeros(1,it_num);
E_bi = zeros(1,it_num);
it = 1;
for A_PV = 20:5:160for E_b = 0.5:0.5:20A_PVi(it) = A_PV;E_bi(it) = E_b;[I_INlayer(it) , S_b_INlayer(it,:)] = PSO_main(A_PV , E_b);I_CCER(it) = sum(A_PV*S_PV*N_y*lambda_e);C_PV(it) = A_PV*(N_PO*x_PC/sum((1 + rs).^(0:20)) + x_PC);I_outlayer(it) = C_PV(it)/(I_CCER(it) + N_y*I_INlayer(it));if I_outlayer(it) > 0disp(['当光伏板面积=',num2str(A_PV),'㎡,储能容量=',num2str(E_b),'kW·h时,日收益最大为',...num2str(I_INlayer(it)),'元,投资回收期为' , num2str(I_outlayer(it)) ,'年'])elsedisp(['当光伏板面积=',num2str(A_PV),'㎡,储能容量=',num2str(E_b),'kW·h时,日收益最大为',...num2str(I_INlayer(it)),'元,无法回收成本'])endit = it + 1;end
end%% 输出结果
I_outlayer(I_outlayer < 0) = inf;
show_result;

        以上仅为主函数部分的matlab代码,完整的matlab代码可以从这个链接获取:

https://download.csdn.net/download/weixin_44209907/88178958

5.运行结果分析

        因为原文并未提供完整的数据,因此结果不完全一样,但原理是相同的

 

 

 

 

 

 

 

 

 

相关文章:

(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码

参考文献&#xff1a; [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012. 1.基本原理 本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合…...

【Redis】——RDB快照

Redis 是内存数据库&#xff0c;但是它为数据的持久化提供了两个技术&#xff0c;一个是AOF日志&#xff0c;另一个是RDB快照&#xff1a; AOF 文件的内容是操作命令&#xff1b;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据&#xff0c;记录的是实际…...

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…...

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说&#xff0c;训练的过程需要保存中间结果&#xff08;不管是GPU还是CPU&#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)&#xff0c;后向传播由top_diff计算bottom_diff&#xff08;如果某个变量打开梯度进行训练的话&#xff…...

python excel 操作

excel文件内容如下&#xff1a; 一、xlrd 读Excel 操作 1、打开Excel文件读取数据 filexlrd.open_workbook(filename)#文件名以及路径&#xff0c;如果路径或者文件名有中文给前面加一个 r 2、常用函数 &#xff08;1&#xff09;获取一个sheet工作表 table file.sheets(…...

记一次Linux启动Mysql异常解决

文章目录 第一步&#xff1a; netstat -ntlp 查看端口情况2、启动Mysql3、查看MySQL日志 tail -100f /var/log/mysqld.log4、查看磁盘占用情况&#xff1a;df -h5、思路小结 第一步&#xff1a; netstat -ntlp 查看端口情况 并没有发现3306数据库端口 2、启动Mysql service …...

ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大

环球汇市行情摘要—— 昨日&#xff0c;美元指数上涨0.08%&#xff0c;收盘在102.08点&#xff0c; 欧元贬值0.07%&#xff0c;收盘价1.1003点&#xff1b; 日元贬值0.51%&#xff0c;收盘价142.47点&#xff1b; 英镑升值0.28%&#xff0c;收盘价1.2784点&#xff1b; 瑞…...

【博客687】k8s informer的list-watch机制剖析

k8s informer的list-watch机制剖析 1、list-watch场景&#xff1a; client-go中的reflector模块首先会list apiserver获取某个资源的全量信息&#xff0c;然后根据list到的rv来watch资源的增量信息。希望使用client-go编写的控制器组件在与apiserver发生连接异常时&#xff0c…...

用Python获取链家二手房房源数据,做可视化图分析数据

前言 数据采集的步骤是固定: 发送请求, 模拟浏览器对于url地址发送请求获取数据, 获取网页数据内容 --> 请求那个链接地址, 返回服务器响应数据解析数据, 提取我们需要的数据内容保存数据, 保存本地文件 所需模块 win R 输入cmd 输入安装命令 pip install 模块名 (如果你…...

Yield Guild Games:社区更新 — 2023 年第二季度

本文重点介绍了 Yield Guild Games (YGG) 2023 年第二季度社区更新中涵盖的关键主题&#xff0c;包括公会发展计划 (GAP) 第 3 季的总结、YGG 领导团队的新成员以及 YGG 的最新消息地区公会网络和广泛的游戏合作伙伴生态系统。 在 YGG 品牌焕然一新的基础上&#xff0c;第二季…...

Stable Diffusion - 运动服 (Gymwear Leggings) 风格服装与背景的 LoRA 配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132179050 测试模型&#xff1a;DreamShaper 8 运动裤 (Gymwear Leggings) 是紧身的裤子&#xff0c;通常用于健身、瑜伽、跑步等运动。运动裤的…...

js-7:javascript原型、原型链及其特点

1、原型 JavaScript常被描述为一种基于原型的语言-每个对象拥有一个原型对象。 当试图访问一个对象的属性时&#xff0c;它不仅仅在该对象上搜寻&#xff0c;还会搜寻该对象的原型&#xff0c;以及该对象的原型的原型&#xff0c;依次层层向上搜索&#xff0c;直到找到一个名字…...

无涯教程-Perl - continue 语句函数

可以在 while 和 foreach 循环中使用continue语句。 continue - 语法 带有 while 循环的 continue 语句的语法如下- while(condition) {statement(s); } continue {statement(s); } 具有 foreach 循环的 continue 语句的语法如下- foreach $a (listA) {statement(s); } co…...

【贪心算法】leetcode刷题

贪心算法无固定套路。 核心思想&#xff1a;先找局部最优&#xff0c;再扩展到全局最优。 455.分发饼干 两种思路&#xff1a; 1、从大到小。局部最优就是大饼干喂给胃口大的&#xff0c;充分利用饼干尺寸喂饱一个&#xff0c;全局最优就是喂饱尽可能多的小孩。先遍历的胃口&a…...

PyMySQL库版本引起的python执行sql编码错误

前言 长话短说&#xff0c;之前在A主机&#xff08;centos7.9&#xff09;上运行的py脚本拿到B主机上&#xff08;centos7.9&#xff09;运行报错&#xff1a; UnicodeEncodeError: latin-1 codec cant encode characters in position 265-266: ordinal not in range(256)两个…...

第二章-算法

第二章-算法 数据结构和算法的关系 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 算法的特性 算法有五个基本特征&#xff1a;输入、输出、有穷性、确定性和可行性。 输入&#xff1a;算法具…...

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件的原因及解决方法

今天我在用node.js的时候&#xff0c;结果出现如下错误&#xff1a; C:\Users\xiesj> vue -v vue不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因&#xff1a; 1、确定npm是否已正确安装&#xff1f; 2、确定vue以及vue-cli已正确安装&#xff1f;…...

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…...

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意&#xff1a;本文不是简单翻译Qt文档或者接口函数&#xff0c;而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类&#xff0c;它提供了一个类似于QListView提供的列表视图&#xff0c;但是它具有一个用于添加和删除项的经典的基于项的接口…...

Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

一、查看可安装的版本 docker search prom/prometheus 二、拉取镜像 docker pull prom/prometheus 三、查看镜像 docker images 四、书写配置文件-以及创建挂载目录 宿主机挂载目录位置&#xff1a; 以及准备对应的挂载目录&#xff1a; /usr/local/docker/promethues/se…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...