TDengine 的 AI 应用实战——电力需求预测

作者: derekchen    

Demo数据集准备

我们使用公开的UTSD数据集里面的电力需求数据,作为预测算法的数据来源,基于历史数据预测未来若干小时的电力需求。数据集的采集频次为30分钟,单位与时间戳未提供。为了方便演示,按照频率从2025-01-01 00:00:00开始向前倒推生成时间戳,并存储在TDengine对应的表里。

数据集中包含5个文件,我们使用编号最大的一个子集来完成演示。该数据文件,放置于https://github.com/taosdata/TDgpt-demo仓库的demo_data目录下,请参考下文的步骤导入TDengine以完成演示。数据集的统计信息如下:

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

演示环境准备

环境要求

您可基于Linux、Mac以及Windows操作系统完成Demo系统的运行。但为使用docker-compose,您计算机上需要安装有下属软件:

  1. Git
  2. Docker Engine: v20.10+
  3. Docker Compose: v2.20+

Demo中包含3个docker镜像 (TDengine, TDgpt, Grafana),以及一组用于产生预测/异常检测结果的shell脚本。组件版本的要求如下:

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

克隆Demo仓库到本地

 
  1. git clone https://github.com/taosdata/TDgpt-demo
  2. cd TDgpt-demo
  3. chmod 775 analyse.sh

文件夹下包含docker-compose.yml、tdengine.yml两个yml文件。docker-compose.yml 包含了所有一键启动demo所需的镜像配置信息,其引用tdengine.yml作为Grafana的数据源配置。

TDgpt-demo/demo_data下包含三个csv文件(electricity_demand.csv、wind_power.csv、ec2_failure.csv),以及三个同前缀sql脚本,分别对应电力需求预测、风力发电预测和运维监控异常检测场景。

TDgpt-demo/demo_dashboard下包含了三个json文件(electricity_demand_forecast.json、wind_power_forecast.json、ec2_failure_anomaly.json),分别对应三个场景的看板。

docker-compose.yml中已经定义了TDengine容器的持久化卷:tdengine-data,待容器启动后,使用docker cp命令将demo_data拷贝至容器内使用。

运行和关闭Demo

注意:在运行demo前,请根据您宿主机的架构(CPU类型),编辑docker-compose.yml文件,为TDengine指定对应的platform参数:linux/amd64(Intel/AMD CPU)或linux/arm64(ARM CPU)。TDgpt必须统一使用linux/amd64参数。

进入docker-compose.yml文件所在的目录执行如下命令,启动TDengine、TDgpt和Grafana一体化演示环境:

 
  1. docker-compose up -d

首次运行时,等待10s后请执行如下命令将TDgpt的Anode节点注册到TDengine:

 
  1. docker exec -it tdengine taos -s "create anode 'tdgpt:6090'"

在宿主机执行下列命令,初始化体验测试环境的数据:

 
  1. docker cp analyse.sh tdengine:/var/lib/taos
  2. docker cp demo_data tdengine:/var/lib/taos
  3. docker exec -it tdengine taos -s "source /var/lib/taos/demo_data/init_electricity_demand.sql"

关闭演示环境,请使用:

 
  1. docker-compose down

进行演示

  1. 打开浏览器,输入http://localhost:3000,并用默认的用户名口令 admin/admin 登录Grafana。
  2. 登录成功后,进入路径”Home → Dashboards”页面,并且导入electricity_demand_forecast.json文件。

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

  1. 导入后,选择“electricity_demand”这个面板。面板已经配置好了真实值、TDtsfm_1以及HoltWinters的预测结果。当前只有真实值的数据曲线。

  1. 我们以analyze.sh脚本,来进行预测。首先完成TDtsfm_1算法的演示:
 
  1. docker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo --table electricity_demand --stable single_val --algorithm tdtsfm_1 --params "fc_rows=48,wncheck=0" --start "2024-01-01" --window 30d --step 1d

上述shell脚本,将从指定的起始时间开始(2024-01-01)以前一个月的数据为输入,使用TDtsfm_1算法预测当前下一天的每30mins的电力需求(共计48个数据点),直到达到electricity_demand 表中最后一天的记录,并将结果写入electricity_demand_tdtsfm_1_result 表中。执行新的预测前,脚本会新建/清空对应的结果表。执行过程中将持续在控制台上,按照天为单位推进输出如下的执行结果:

 
  1. taos> INSERT INTO tdgpt_demo.electricity_demand_tdtsfm_1_result SELECT _frowts, forecast(val, 'algorithm=tdtsfm_1,fc_rows=48,wncheck=0')
  2. FROM tdgpt_demo.electricity_deman
  3. WHERE ts >= '2024-01-12 00:00:00' AND ts < '2024-02-11 00:00:00'
  4. Insert OK, 48 row(s) affected (0.238208s)
  1. Grafana的看板上,配置刷新频率为5s,将动态显示预测结果的黄色曲线,直观呈现与实际值的对比。为了展示清晰,请按住command键点击左下角的Real以及TDtsfm_1图例(Mac下,Windows下请使用win键),从而只保留这两条曲线展示。

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

  1. 完成HoltWinters模型的演示:
 
  1. docker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo --table electricity_demand --stable single_val --algorithm holtwinters --params "rows=48,period=48,wncheck=0,trend=add,seasonal=add" --start "2024-01-01" --window 30d --step 1d

与第四步类似,HoltWinters模型将动态输出预测结果并呈现在看板上。从预测结果中可以看到,TDtsfm_1对数据的预测精度显著优于传统的统计学方法HoltWinters。除了预测精度外,HoltWinters算法的最大问题是需要非常精细化的对参数进行调整评估,否则还容易出现下图中这种频繁发生的预测值奇异点。

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

基于鼠标圈选的方式,我们可以查看一段时间内的细粒度预测结果对比:

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

您也可以尝试其他算法或模型,来找到最合适自己场景的算法和模型。

Demo脚本使用详解

脚本概述 

analyse.sh脚本用于在 TDengine 数据库上执行时间序列预测和异常检测分析,支持滑动窗口算法处理。主要功能包括:

  • 时间序列预测 :使用 HoltWinters 等算法进行未来值预测 。
  • 异常检测 :使用 k-Sigma 等算法识别数据异常点 。
  • 自动窗口滑动 :支持自定义窗口大小和步长进行连续分析。

参数说明

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

TDengine推荐使用超级表来进行数据建模。因此,Demo中建立了一个名为 single_val 的超级表,包含ts (timestamp类型) 和val (float类型),以及标签定义scene (varchar (64) )。现阶段TDgpt只支持单列值输入输出,因此这个超级表可以作为所有源数据表和结果表的结构定义。子表的表名与tag名称保持一致即可。

db参数指定了源数据表和结果表隶属的数据库。结果表将以【源表名称】_【算法名称】_【result】格式存储。Grafana里面通过查询结果表实现分析结果和原始数据的对比。

一般情况下,对于非必填项,用户在demo过程中只需要设置–start参数以节省运行时间。对于必填项,请参考示例值进行设置。

时间格式说明 

step和window参数指定的滑动步长和分析窗口大小需符合如下参数约定:

基于 TDgpt 时序数据智能体的电力需求预测 - TDengine Database 时序数据库

脚本执行流程

  1. graph TDgpt_Demo
  2. A[开始] --> B[参数解析与验证]
  3. B --> C{是否指定start?}
  4. C -->|否| D[查询最小时间戳]
  5. C -->|是| E[转换时间格式]
  6. D --> E
  7. E --> F[计算时间窗口]
  8. F --> G[生成结果表]
  9. G --> H{是否到达数据终点?}
  10. H -->|否| I[生成并执行SQL]
  11. I --> H
  12. H -->|是| J[输出完成信息]

使用更多的数据

参考「运行和关闭Demo」章节里electricity_demand.sql脚本的内容,确保按照规定格式将数据准备为csv格式(逗号分隔,值需要用英文双引号括起来),即可将数据导入TDengine。然后,请使用「进行演示」章节中的方法来生成预测结果,并调整Grafana中的看板以实现和实际数据的对比。

结论

在本文中,我们展示了使用TDgpt来进行电力需求预测的完整流程。从中可以看到,基于TDgpt 来构建时序数据分析,能够以SQL方式实现与应用的便捷集成,还可以用Grafana 进行展示,大大降低开发和应用时序数据预测和异常检测的成本。

从预测效果来看,基于transformer架构的预训练模型TDtsfm_1在使用的数据集上展示出显著优于Holtwinters模型的效果。在不同的实际场景下,用户需要针对数据特点,针对模型算法进行选择和参数调优,也可以选择不同的算法或模型进行尝试。

TDengine 的企业版中,TDgpt 将为用户提供更多的选择:

  1. 模型选择器。模型选择器可以自动根据用户的历史数据集,对购买的所有模型进行准确性评估。用户可选择最适合自己场景的模型或算法进行部署和应用。
  2. TDtsfm_1自研模型的重训练及微调。TDtsfm_1基于海量时序数据进行了预训练,在大部分场景下相比于传统的机器学习和统计预测模型都会有显著的准确率优势。如果用户对于模型预测准确度有更高的要求,可以申请购买 TDgpt 企业版的预训练服务。使用用户的场景历史数据进行预训练,在特定场景下的预测效果可能更佳。
  3. 第三方解决方案。涛思数据联合国内外时序分析/异常检测专业厂家、研究机构,为用户提供专业的分析解决方案,包括落地过程中的实施服务等。

关于背景

电力需求预测作为现代能源管理的核心工具,其核心价值贯穿电力系统的全生命周期。在资源配置层面,通过精准预判用电趋势,可优化发电设施布局与电网升级节奏,避免超前投资造成的资源闲置或滞后建设引发的供应缺口,典型场景中可使基础设施投资效率提升15%-20%。对于电力运营商而言,负荷预测支撑着从燃料采购到机组调度的动态优化,在火力发电领域已实现吨煤发电量2%以上的能效提升,同时通过削峰填谷降低电网备用容量需求,显著压缩系统运行成本。 

在能源安全维度,预测技术构建起电力供需的缓冲机制。短期预测误差每降低1个百分点,对应减少的紧急调峰成本可达区域电网日均运营费用的3%-5%,这在应对极端天气或突发事件时尤为关键。而中长期预测则为跨区域电力互济、储能设施配置提供决策基线,有效缓解结构性缺电风险。市场环境中,预测能力直接转化为经济收益,发电企业通过日前96时段负荷预测优化报价策略,在电力现货市场中可额外获取10%-18%的价格套利空间,工商用户则借助负荷特性分析制定用能方案,实现年度电费支出5%-10%的降幅。

本文提供基于 docker-compose 快速部署 TDgp 体验测试环境的指引,并基于这个环境和真实的数据,展示日前预测电力需求的全过程,便于大家快速掌握 TDgpt,迅速让自己拥有AI驱动的时序数据预测与异常检测的能力。

关于TDgpt

TDgpt 是 TDengine 内置的时序数据分析智能体,它基于 TDengine 的时序数据查询功能,通过 SQL 提供运行时可动态扩展和切换的时序数据高级分析的能力,包括时序数据预测和时序数据异常检测。通过预置的时序大模型、大语言模型、机器学习、传统的算法,TDgpt 能帮助工程师在10分钟内完成时序预测与异常检测模型的上线,降低至少80%的时序分析模型研发和维护成本。

截止到3.3.6.0版本,TDgpt 提供Arima、HoltWinters、LSTM、MLP 以及基于Transformer架构自研的TDtsfm (TDengine time series foundation model) v1版和其他时序模型,以及k-Sigma、Interquartile range(IQR)、Grubbs、SHESD、Local Outlier Factor(LOF)、Autoencoder这六种异常检测模型。用户可以根据TDgpt开发指南自行接入自研或其他开源的时序模型或算法。

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

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

相关文章

D2000平台上Centos使用mmap函数遇到的陷阱

----------原创不易&#xff0c;欢迎点赞收藏。广交嵌入式开发的朋友&#xff0c;讨论技术和产品------------- 在飞腾D2000平台上&#xff0c;安装了麒麟linux系统&#xff0c;我写了个GPIO点灯的程序&#xff0c;在应用层利用mmap函数将内核空间映射到用户态&#xff0c;然后…

深入了解linux系统—— 进程间通信之管道

前言 本篇博客所涉及到的代码一同步到本人gitee&#xff1a;testfifo 迟来的grown/linux - 码云 - 开源中国 一、进程间通信 什么是进程间通信 在之前的学习中&#xff0c;我们了解到了进程具有独立性&#xff0c;就算是父子进程&#xff0c;在修改数据时也会进行写时拷贝&…

设计模式——模版方法设计模式(行为型)

摘要 模版方法设计模式是一种行为型设计模式&#xff0c;定义了算法的步骤顺序和整体结构&#xff0c;将某些步骤的具体实现延迟到子类中。它通过抽象类定义模板方法&#xff0c;子类实现抽象步骤&#xff0c;实现代码复用和算法流程控制。该模式适用于有固定流程但部分步骤可…

Python使用

Python学习&#xff0c;从安装&#xff0c;到简单应用 前言 Python作为胶水语言在web开发&#xff0c;数据分析&#xff0c;网络爬虫等方向有着广泛的应用 一、Python入门 相关基础语法直接使用相关测试代码 Python编译器版本使用3以后&#xff0c;安装参考其他教程&#xf…

吴恩达机器学习笔记(1)—引言

目录 一、欢迎 二、机器学习是什么 三、监督学习 四、无监督学习 一、欢迎 机器学习是当前信息技术领域中最令人兴奋的方向之一。在这门课程中&#xff0c;你不仅会学习机器学习的前沿知识&#xff0c;还将亲手实现相关算法&#xff0c;从而深入理解其内部机理。 事实上&…

java笔记08

多线程&JUC 1.什么是多线程 1.什么是多线程&#xff1f;有了多线程&#xff0c;我们就可以让程序同时做多件事情 2.多线程的作用&#xff1f;提高效率 3.多线程的应用场景&#xff1f;只要你想让多个事情同时运行就需要用到多线程比如&#xff1a;软件中的耗时操作、所有…

【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素

使用正则表达式提取HTTP元素 1.正则表达式2.正则库的使用3.使用正则表达式提取HTTP请求行 1.正则表达式 正则表达式它其实是描述了一种字符串匹配的模式&#xff0c;它可以用来在一个字符串中检测一个特定格式的字串&#xff0c;以及可以将符合特定规则的字串进行替换或者提取…

显示即战略:铁电液晶如何成为 “数字中国” 的 “像素基石”?

一、显示技术&#xff1a;数字时代的核心战略支点 &#xff08;一&#xff09;从 “视觉窗口” 到 “战略基础设施” 在数字经济蓬勃发展的当下&#xff0c;显示技术早已超越了单纯的 “视觉呈现” 范畴&#xff0c;成为连接人与数字世界的关键接口。从智能手机、平板电脑到车…

适合小白的超详细配置YOLOv8教程(毕设必看)(训练自己数据集)(Pycharm保姆级安装教程)(lablme的使用)(GPU版)

目录 1.Pycharm的安装和虚拟环境调用&#xff08;已经安装好的可以跳过此步骤&#xff09; 1.1 下载pycharm软件 1.2 调用已创建虚拟环境&#xff08;调用上一篇教程中创建好的虚拟环境&#xff09; 2.标注自己数据集&#xff08;已有数据集的这部分可跳过&#xff09; 2.1…

EC800X QuecDuino开发板介绍

支持的模组列表 EG800KEC800MEC800GEC800E 功能列表 基本概述 EC800X QuecDuino EVB 搭载移远 EC800 系列模组。支持模组型号为&#xff1a; EC800M 系列、EC800K 系列、EG800K 系列、EC800E 系列等。 渲染图 开发板的主要组件、接口布局见下图 资料下载 EC800X-QuecDui…

Unity + HybirdCLR热更新 入门篇

官方文档 HybridCLR | HybridCLRhttps://hybridclr.doc.code-philosophy.com/docs/intro 什么是HybirdCLR? HybridCLR&#xff08;原名 huatuo&#xff09;是一个专为 Unity 项目设计的C#热更新解决方案&#xff0c;它通过扩展 IL2CPP 运行时&#xff0c;使其支持动态加载和…

类 Excel 数据填报

类 Excel 填报模式&#xff0c;满足用户 Excel 使用习惯 数据填报&#xff0c;可作为独立的功能模块&#xff0c;用于管理业务流程、汇总采集数据&#xff0c;以及开发各类数据报送系统&#xff0c;因此&#xff0c;对于报表工具而言&#xff0c;其典型场景之一就是利用报表模…

MySQL 8.0 OCP 英文题库解析(十)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题81~90 试题81:…

JavaScript 性能优化实战:从原理到框架的全栈优化指南

在 Web 应用复杂度指数级增长的今天&#xff0c;JavaScript 性能优化已成为衡量前端工程质量的核心指标。本文将结合现代浏览器引擎特性与一线大厂实践经验&#xff0c;构建从基础原理到框架定制的完整优化体系&#xff0c;助你打造高性能 Web 应用。 一、性能优化基础&#x…

基于Web的分布式图集管理系统架构设计与实践

引言&#xff1a;为什么需要分布式图集管理&#xff1f; 在现代Web图形应用中&#xff0c;纹理图集&#xff08;Texture Atlas&#xff09;技术是优化渲染性能的关键手段。传统的图集制作流程通常需要美术人员使用专业工具&#xff08;如TexturePacker&#xff09;离线制作&am…

鸿蒙OS在UniApp中集成Three.js:打造跨平台3D可视化应用#三方框架 #Uniapp

在UniApp中集成Three.js&#xff1a;打造跨平台3D可视化应用 引言 在最近的一个项目中&#xff0c;我们需要在UniApp应用中展示3D模型&#xff0c;并实现实时交互功能。经过技术选型和实践&#xff0c;我们选择了Three.js作为3D渲染引擎。本文将分享我们在UniApp中集成Three.…

Flask中关于app.url_map属性的用法

目录 一、app.url_map 是什么? 二、可以查看哪些信息? 三、示例:打印所有路由 四、结合 url_for() 使用 五、常见用途场景 六、结合 Flask CLI 使用 总结 app.url_map 是 Flask 中非常重要的一个属性,用于查看或操作整个应用的 URL 路由映射表(routing map)。它展…

SpringBoot项目搭建指南

SpringBoot项目搭建指南 文章目录 SpringBoot项目搭建指南一、SpringBoot项目搭建1.1 SpringBoot 版本选择1.2 SpringBoot 框架引入方式1.2.1 继承 Starter Parent POM1.2.2 不使用 Parent POM 来使用 Spring Boot 1.3 SpringBoot 打包插件 二、日志框架引入2.1 引入SpringBoot…

数据库系统概论(十六)数据库安全性(安全标准,控制,视图机制,审计与数据加密)

数据库系统概论&#xff08;十六&#xff09;数据库安全性 前言一、数据库安全性1. 什么是数据库安全性&#xff1f;2. 为何会存在安全问题&#xff1f; 二、安全标准的发展1. 早期的“开拓者”&#xff1a;TCSEC标准2. 走向国际统一&#xff1a;CC标准3. TCSEC和CC标准有什么不…

Jvm 元空间大小分配原则

JVM元空间&#xff08;Metaspace&#xff09;的大小分配原则与系统物理内存密切相关&#xff0c;但并不是直接等比例分配&#xff0c;而是通过一系列参数和JVM的动态管理机制来确定。下面从原理和实际行为两方面详细说明&#xff1a; 1. 元空间&#xff08;Metaspace&#xff0…