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

基于BIM+AI的建筑能源优化模型【神经网络】

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

AEC(建筑、工程、施工)行业的BIM 技术,允许在实际施工开始之前虚拟地建造建筑物; 这带来了许多有形和无形的好处:减少成本超支、更有效的协调、增强决策权等等。 对于一些公司来说,采用 BIM 是需要克服的一大障碍,许多公司仍在苦苦挣扎。 但现在我们看到行业出现了另一个新趋势:人工智能。 我们不要害怕,仔细看看它。 它比你想象的要简单!

在本文中,我将展示我的硕士论文,题为“使用深度神经网络优化 BIM 模型能源性能”。

1、问题的提出

许多不同的估计表明,大约 70-80% 的设施成本用于运营。
在这里插入图片描述

当然,这些也是由于维护造成的; 但请记住,建筑业有时被称为“40% 的行业”,因为它占用了世界自然资源和二氧化碳排放量的 40%。 我们应该更好地爱护大自然!

我将尝试提出一个框架来优化建筑物的能源消耗,这被称为 EUI,或能源使用强度,以兆焦(或千瓦时)/平方米/年为单位测量。 Green Building Studio 将使用 DOE-2 引擎和从 Revit 导出的 gbXML 文件执行能源分析。

2、获取BIM数据

首先,我们需要做出一些假设。 让我将要测试的每个模型的 HVAC 系统保持相同(即,Revit 提供的单户住宅标准 HVAC 模型将用于每个 Revit 模型)。 事实上,在实际设施中,随着时间的推移,它可以被更高效的固定装置和系统取代,否则我们可能根本不知道暖通空调类型那么早。

相反,让我们关注建筑物更永久的特征,例如地板、墙壁和屋顶的导热率(R,m²K/W); 窗墙比; 计划中的旋转。 这些是我将要尝试的特征。

另一个假设是我们的 Revit 模型将是一个普通的盒子,里面只有一个房间,没有隔断和窗户(窗墙比将在稍后分配)。 这是为了简化分析。
在这里插入图片描述

因此,让我们尝试以下参数范围的所有组合:
在这里插入图片描述

10368 种组合太多了,但 Revit API 会有所帮助。 Green Building Studio 使用 Revit 可以导出的 gbXML 文件。 此脚本将热阻值和平面旋转的组合应用于模型,并将每个组合模型导出为 gbXML 格式。 通过改变热资产的导热系数来实现不同的热阻值。 改变厚度会在分析中引入另一个因素:分析表面始终位于单元的中间,因此总面积随壁厚而变化。

解析 gbXML 目录以获取所有文件的路径后,我们准备将 3456 (121212*2) gbXML 文件上传到 Green Building Studio。 使用 Dynamo 包 Energy Analysis for Dynamo。
在这里插入图片描述

分析完成后,我们可以开始在 Green Building Studio 中分配窗墙比。 不幸的是,Dynamo 包没有此功能,并且 GBS API 仅供开发人员使用,因此我不得不借助浏览器自动化来分配 WWR。 然而,这只需要执行一次,我们稍后会看到原因。 能量分析完成后,我们可以解析 GBS 中的数据并对其进行彻底检查。

在这里插入图片描述

现在,让我们用另一个简单但不同的 Revit 模型重复上述所有步骤。

在这里插入图片描述

我们将需要这些数据以供以后使用。

3、训练神经网络

对于每个机器学习项目来说,数据检查和准备是必须的。 但在这种情况下,我们没有丢失数据或异常值:我们的数据是人为创建的。 因此我们可以安全地跳过许多检查步骤。 我将写另一篇文章更详细地描述神经网络。 如果你有兴趣,这里是脚本。 但长话短说,神经网络在给定大量数据的情况下,能够导出管理数据的规则。 与传统编程相比,我们给出规则和数据来获得答案。
在这里插入图片描述

当规则难以编码时,神经网络会派上用场:面部或语音识别、自然语言处理、翻译、情感分析等。

我们为本文中BIM数据设计的网络具有以下架构:
在这里插入图片描述

输入层(绿色)有 5 个单元。 这些是我们的参数:WWR、平面旋转和三个热阻值。 输出层(黄色)是 EUI 值。 将此网络(蓝色层)视为一个巨大的矩阵,其中第一步仅包含随机数。 为了训练网络,我们的输入层(向量)乘以一系列矩阵以获得 EUI 值的预测。 然后将预测与实际 EUI 值进行比较,并更新网络中的数字以更好地预测输出。 重复这个循环,直到我们对性能感到满意为止。

现在是时候根据第一个盒模型的数据点来训练我们的网络了。 其中 94% 将用于训练我们的网络,6% 将用于验证网络并调整影响网络的一些参数以获得更好的性能。

训练后,我们使用网络预测 10368 个 EUI 值:

在这里插入图片描述

误差保持在0.2%以内,还不错。 除此之外,网络将我们的数据从离散变为连续。 换句话说,我们现在可以获得以前无法获得的参数的 EUI 值; 例如 21% WWR 或 R=2.45。

好的,这让我们进入下一步。

4、迁移学习

还记得我们第一步做的第二个 Revit 模型吗? 我们现在将通过称为“迁移学习”的技术来使用它。 让我们采用上一步中经过训练的网络,并将前四层设置为不可训练:

在这里插入图片描述

或者,换句话说,让我们只关注最后两层。

此时,网络“知道”主要模式和趋势以及每个参数如何影响 EUI。 但仅适用于第一个 Revit 模型。

现在让我们通过使用新数据重新训练最后两层,将新的 Revit 模型“引入”到我们的网络中。 但有一个重要的区别:这次只有 6% 的数据用于训练,94% 用于验证。 不执行超参数调整。 训练后我们得到这样的结果:

在这里插入图片描述

注意:训练时间约为 1 或 2 分钟,而第一个盒子 Revit 模型则需要 2-3 小时,并且预测几乎同样准确。

5、训练集/验证集比例的实验

为什么要坚持 6% 的训练与验证比例? 让我们再尝试一下,看看效果如何。

在这里插入图片描述

4% 训练数据
在这里插入图片描述

1% 训练数据
在这里插入图片描述

0.25% 训练数据

事实证明,训练-验证比例大约为 1-2% 时,性能开始显着下降。

请注意,损失函数达到平台后停止训练

6、结果与比较

恭喜! 现在,我们有了一个训练好的神经网络,可以使用少量数据来预测 Revit 模型在大范围参数下的能耗。 该模型甚至可能没有任何窗户。 我们所做的最后一步展示了它:通过引入我们想要分析的模型中的一些数据点,我们得到了相当准确的估计,几乎没有误差。

为了强调迁移学习的效果,让我们用刚刚训练的网络来预测两个模型的 EUI。
在这里插入图片描述

一个网络 — 两个 Revit 模型预测

这就是说,我们不能采用随机神经网络并期望它与我们的模型一起工作:应该进行一些能量分析。 然而,它可以像第一部分一样自动化。

7、未来的工作

现在我们有了一个可以准确预测能耗的神经网络,除了使用复杂的 Revit 模型对其进行测试之外,还必须向实际优化迈出一步。 为了找到最优的参数组合,需要建立成本模型。 成本模型应包括材料、劳动力、可能的维护、能源成本,并应考虑建筑物的生命周期、建筑和物理限制。

这将产生现实的框架,只需很少的努力,就可以在项目的概念阶段选择最佳的参数组合。


原文链接:神经网络BIM能源优化 — BimAnt

相关文章:

基于BIM+AI的建筑能源优化模型【神经网络】

推荐:用 NSDT设计器 快速搭建可编程3D场景。 AEC(建筑、工程、施工)行业的BIM 技术,允许在实际施工开始之前虚拟地建造建筑物; 这带来了许多有形和无形的好处:减少成本超支、更有效的协调、增强决策权等等。…...

#P0998. [NOIP2007普及组] 守望者的逃离

题目背景 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。 题目描述 守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。 为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛…...

vue3+ts+elementui-plus二次封装弹框

一、弹框组件BaseDialog <template><div classmain><el-dialog v-model"visible" :title"title" :width"dialogWidth" :before-close"handleClose"><!-- 内容插槽 --><slot></slot><template…...

ffmpeg批量分割视频解决视频前几秒黑屏的问题解决

echo 请输入视频地址&#xff1a; set /p fp echo 请输入开始时间&#xff1a; set /p st echo 请输入结束时间&#xff1a; set /p et echo 请输入分片时间&#xff1a; set /p sgt echo 注意&#xff1a;循环范围参数要空格。 for /l %%i in (%st%, %sgt%, %et%) do call :aa…...

nodejs + express 调用本地 python程序

假设已经安装好 nodejs ; cd /js/node_js ; 安装在当前目录的 node_modules/ npm install express --save 或者 cnpm install express --save web 服务器程序 server.js const http require(http); const express require(express); const path require(path); const …...

微信小程序代码优化3个小技巧

抽取重复样式 样式复用 我们会发现很多时候在开发的过程中会存在多个页面中都用到了同样的样式&#xff0c;那么其实之前有提到过&#xff0c;公用样式可以放在app.wxss里面这样就可以直接复用。 如&#xff1a;flex布局的纵向排列&#xff0c;定义在app.wxss里面 .flex-co…...

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图&#xff1a; 需要先加载运行js代码&#xff0c;可能是对环境进行检测&#xff0c;反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscript…...

恒运资本:A股、港股全线爆发,沪指突破3300点,恒指重返2万点上方

7月31日&#xff0c;两市股指高开高走&#xff0c;沪指在金融、地产、酿酒等权重板块的带动下一举突破3300点。截至发稿&#xff0c;沪指、深成指、创业板指涨幅均超1%&#xff0c;上证50指数涨近2%。Wind数据显现&#xff0c;北向资金净买入超25亿元。 职业方面&#xff0c;券…...

Rust vs Go:常用语法对比(十二)

题图来自 Rust vs Go in 2023[1] 221. Remove all non-digits characters Create string t from string s, keeping only digit characters 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 删除所有非数字字符 package mainimport ( "fmt" "regexp")func main() { s : hei…...

jmeter接口测试、压力测试简单实现

jmeter测试的组件执行顺序&#xff1a; 测试计划—>线程组—>配置元件—>前置处理器—>定时器—>逻辑控制器—>取样器—>后置处理器—>断言—>监听器 组件的作用范围&#xff1a; 同级组件同级组件下的子组件父组件 目前市面上的三类接口 1、基…...

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境&#xff0c;本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…...

19套项目实战系列--Spring Cloud Spring Boot(整套源码)

整套大型项目源码&#xff0c;需要的回复私信&#xff1a;19 ┃ ┣━01.19套项目实战系列 ┃ ┃ ┣━第04套【项目实战】Spring Cloud分布式微服务实战&#xff0c;打造大型自媒体3大业务平台 分布式前后端分离项目分层聚合 养成应对复杂业务的综合技术能力 ┃ ┃ ┃ ┣━1-…...

TCP/IP协议详解(二)

目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中&#xff0c;TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式&#xff0c;详情请见上一篇文章&#xff0c;现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…...

Linux6.2 ansible 自动化运维工具(机器管理工具)

文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具&#xff08;机器管理工具&#xff09;一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …...

前端面试题 —— React (二)

目录 一、React 组件中怎么做事件代理&#xff1f;它的原理是什么&#xff1f; 二、React.Component 和 React.PureComponent 的区别 三、Component, Element, Instance 之间有什么区别和联系&#xff1f; 四、React声明组件有哪几种方法&#xff0c;有什么不同&#xff1f…...

【分享帖】LCD的MCU接口和SPI接口详解

LCD&#xff08;Liquid Crystal Display&#xff09;液晶屏&#xff0c;作为电子产品的重要组成部分&#xff0c;是终端用户与电子产品交互的重要载体。现在市场上的LCD&#xff0c;按照尺寸、功能、接口、用途等分为很多种&#xff0c;本文主要介绍如下两种LCD物理接口&#x…...

【Java】使用@Expose注解和excludeFieldsWithoutExposeAnnotatGson()方法将toJson()过程的部分字段忽略

要在使用 Gson 的 toJson() 方法时忽略 List 中的某些字段&#xff0c;你可以使用 Gson 的 Expose 注解和 excludeFieldsWithoutExposeAnnotation() 方法。 首先&#xff0c;在 List 中的 Bean 类中&#xff0c;使用 Expose 注解标记你想要序列化的字段&#xff1a; public c…...

移动硬盘不显示怎么办?正确解决方式看这里!

移动硬盘为存储带来了很大的方便&#xff0c;在对数据存储时&#xff0c;可做到即插即用&#xff0c;且其体积小、容量大&#xff0c;且比较安全可靠。但在实际的使用中&#xff0c;也会出现各种问题。请看下面2个常见案例。 案例1&#xff1a;“各位朋友&#xff0c;我新买了一…...

MySQL 5.7.39 关于时间精度

前情提要 当EndTime的数据类型为datetime when the end_time’s dataType is datetime; entity.EndTime DateTime.MaxValue; context.Set<T>().Add(entity);当保存 ‘9999-12-31 23:59:59’ 这个值时,发生报错。 A crash has happended in the program when saving ‘…...

宝塔设置云服务器mysql端口转发,实现本地电脑访问云mysql

环境&#xff1a;centos系统使用宝塔面板 实现功能&#xff1a;宝塔设置云服务器mysql端口转发&#xff0c;实现本地电脑访问mysql 1.安装mysql、PHP-7.4.33、phpMyAdmin 5.0 软件商店》搜索 mysql安装即可 软件商店》搜索 PHP安装7.4.33即可&#xff08;只需要勾选快速安装&…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

CSS | transition 和 transform的用处和区别

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

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...