电力负荷预测案例之背景介绍
1 课程概览
本课介绍电力负荷预测案例的背景。包括电力工业的重要性、任务复杂性、可再生能源的影响等。强调准确预测负荷需求的社会和经济价值。
2 核心概念与定义
- 电力工业:国民经济发展中重要基础性能源产业。
- 电力平衡:电力供需的平衡。
- 可再生能源:风电、光电、核电、水电等。
- 波动性:可再生能源受天气影响,不稳定。
- 火电:传统主力发电,现在起调和作用。
3 算法与模型详解
3.1 背景重要性
电力工业的重要性:
- 国民经济发展中重要基础性能源产业
- 保证国民经济和社会持续稳定健康发展
- 改革开放后各领域用电量激增
- 推动电力系统向数字化、智能化转型
断电影响:
- 断电半小时:影响不大
- 断电1小时:影响较大
- 断电3小时:影响严重
- 断电3天:无法接受
说明:电力稳定性与社会经济各方面关联
3.2 任务复杂性
原因:电能多种多样
传统能源:
- 火电(火力发电)
- 烧煤、烧燃料
- 可控(加燃料即可)
新能源:
- 风电(受风力影响)
- 光电(受天气影响)
- 核电(相对可控)
- 水电(受水流影响)
- 氢能源、氢电
问题:
- 风电不可控:风大不转,风小转不动
- 光电不可控:阴天影响
- 新能源波动性和不确定性
3.3 电力系统转型
传统模式:
- 火电是主力
- 可控,加燃料即可
现代模式:
- 新能源为主
- 火电起调和作用
- 预测新能源,看缺口用火电补充
3.4 预测需求
关键问题:
- 如何准确预测负荷的需求
- 实现电力供需的平衡
- 有效整合可再生资源
- 降低碳排放
- 确保电网稳定性
价值:
- 用更少的资源干更多的事
- 精准预测带来巨大收益
3.5 阶梯电价
阶梯电价:
- 用电低谷时电价便宜
- 大半夜工厂开工
- 优化用电分配
3.6 优先供电
历史情况:
- 农村时常断电
- 优先供给城市
- 夏天用电高峰断电
现状:
- 现在不会莫名其妙断电
- 除非没电费
4 代码示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 1. 模拟电力负荷数据
print("=== 1. 模拟电力负荷数据 ===")
np.random.seed(42)
# 生成30天数据
dates = pd.date_range('2024-01-01', periods=30*24, freq='h')
power_load = []
for date in dates:
hour = date.hour
dayofweek = date.dayofweek
month = date.month
# 基础负荷
if 0 <= hour < 6:
base_load = 500
elif 6 <= hour < 9:
base_load = 800
elif 9 <= hour < 17:
base_load = 1000
elif 17 <= hour < 21:
base_load = 1200
else:
base_load = 700
# 周末调整
if dayofweek >= 5:
base_load *= 0.8
# 季节调整
if month in [12, 1, 2]:
base_load *= 1.2
elif month in [6, 7, 8]:
base_load *= 1.1
load = base_load + np.random.normal(0, 50)
power_load.append(max(100, load))
data = pd.DataFrame({
'time': dates,
'power_load': power_load
})
print(f"数据形状: {data.shape}")
print(f"时间范围: {data['time'].min()} ~ {data['time'].max()}")
print(f"负荷范围: {data['power_load'].min():.2f} ~ {data['power_load'].max():.2f}")
# 2. 可视化电力负荷
print("\n=== 2. 可视化电力负荷 ===")
plt.figure(figsize=(14, 6))
plt.plot(data['time'], data['power_load'], 'b-', linewidth=0.5)
plt.xlabel('时间')
plt.ylabel('电力负荷')
plt.title('30天电力负荷数据')
plt.grid(True, alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('power_load_30days.png', dpi=100)
print("30天数据图已保存")
# 3. 日内负荷模式
print("\n=== 3. 日内负荷模式 ===")
def analyze_daily_pattern(data):
"""分析日内负荷模式"""
data = data.copy()
data['hour'] = data['time'].dt.hour
hourly_avg = data.groupby('hour')['power_load'].agg(['mean', 'std', 'min', 'max'])
print("各小时平均负荷:")
for hour in range(24):
avg = hourly_avg.loc[hour, 'mean']
print(f" {hour:2d}时: {avg:.2f}")
# 可视化
plt.figure(figsize=(12, 6))
plt.plot(hourly_avg.index, hourly_avg['mean'], 'b-o', linewidth=2, markersize=8)
plt.fill_between(hourly_avg.index,
hourly_avg['mean'] - hourly_avg['std'],
hourly_avg['mean'] + hourly_avg['std'],
alpha=0.3, color='blue')
plt.xlabel('小时')
plt.ylabel('电力负荷')
plt.title('日内负荷模式')
plt.grid(True, alpha=0.3)
plt.xticks(range(24))
plt.savefig('daily_pattern.png', dpi=100)
print("日内模式图已保存")
return hourly_avg
hourly_avg = analyze_daily_pattern(data)
# 4. 周内负荷模式
print("\n=== 4. 周内负荷模式 ===")
def analyze_weekly_pattern(data):
"""分析周内负荷模式"""
data = data.copy()
data['dayofweek'] = data['time'].dt.dayofweek
weekly_avg = data.groupby('dayofweek')['power_load'].mean()
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
print("各天平均负荷:")
for i, day in enumerate(days):
avg = weekly_avg.iloc[i]
print(f" {day}: {avg:.2f}")
# 可视化
plt.figure(figsize=(10, 6))
plt.bar(days, weekly_avg.values, color='skyblue')
plt.xlabel('星期')
plt.ylabel('平均电力负荷')
plt.title('周内负荷模式')
plt.grid(True, alpha=0.3, axis='y')
plt.savefig('weekly_pattern.png', dpi=100)
print("周内模式图已保存")
return weekly_avg
weekly_avg = analyze_weekly_pattern(data)
# 5. 不同发电方式对比
print("\n=== 5. 不同发电方式对比 ===")
def compare_power_sources():
"""对比不同发电方式"""
print("""
不同发电方式对比:
1. 火电(传统)
- 可控性: 高(加燃料即可)
- 稳定性: 高
- 环保: 差(碳排放)
- 角色: 调和作用
2. 风电(新能源)
- 可控性: 低(受风力影响)
- 稳定性: 低
- 环保: 好
- 问题: 风大不转,风小转不动
3. 光电(新能源)
- 可控性: 低(受天气影响)
- 稳定性: 低
- 环保: 好
- 问题: 阴天影响
4. 核电
- 可控性: 高
- 稳定性: 高
- 环保: 较好
- 安全: 需要严格管控
5. 水电
- 可控性: 中等(受水流影响)
- 稳定性: 中等
- 环保: 好
""")
compare_power_sources()
# 6. 负荷预测价值
print("\n=== 6. 负荷预测价值 ===")
def prediction_value():
"""负荷预测价值"""
print("""
电力负荷预测价值:
1. 资源节约
- 精确预测用电量
- 避免发电过剩浪费
- 优化储能和损耗
2. 电力平衡
- 实现电力供需平衡
- 有效整合可再生资源
- 确保电网稳定性
3. 经济效益
- 降低碳排放
- 用更少资源干更多事
- 精准预测带来巨大收益
4. 社会价值
- 保证电力稳定供应
- 支持数字化智能化平台
- 推动经济发展
""")
prediction_value()
# 7. 阶梯电价分析
print("\n=== 7. 阶梯电价分析 ===")
def analyze_tiered_pricing(data):
"""分析阶梯电价"""
data = data.copy()
data['hour'] = data['time'].dt.hour
# 定义电价时段
def get_price_tier(hour):
if 0 <= hour < 6: # 低谷
return '低谷'
elif 6 <= hour < 9 or 17 <= hour < 21: # 高峰
return '高峰'
else: # 平段
return '平段'
data['price_tier'] = data['hour'].apply(get_price_tier)
tier_avg = data.groupby('price_tier')['power_load'].agg(['mean', 'count'])
print("各电价时段负荷:")
for tier in ['低谷', '平段', '高峰']:
avg = tier_avg.loc[tier, 'mean']
count = tier_avg.loc[tier, 'count']
print(f" {tier}: 平均负荷={avg:.2f}, 数据点={count}")
# 可视化
plt.figure(figsize=(10, 6))
tier_avg['mean'].plot(kind='bar', color=['green', 'orange', 'red'])
plt.xlabel('电价时段')
plt.ylabel('平均电力负荷')
plt.title('阶梯电价时段负荷')
plt.grid(True, alpha=0.3, axis='y')
plt.savefig('tiered_pricing.png', dpi=100)
print("阶梯电价图已保存")
analyze_tiered_pricing(data)
# 8. 完整背景介绍
def background_introduction():
"""完整背景介绍"""
print("=" * 50)
print("电力负荷预测案例 - 背景介绍")
print("=" * 50)
print("\n1. 重要性")
print(" 电力工业是国民经济发展中重要基础性能源产业")
print(" 保证国民经济和社会持续稳定健康发展")
print("\n2. 任务复杂性")
print(" 电能多种多样")
print(" 新能源波动性和不确定性")
print("\n3. 电力系统转型")
print(" 传统: 火电为主力")
print(" 现代: 新能源为主,火电调和")
print("\n4. 预测需求")
print(" 准确预测负荷需求")
print(" 实现电力供需平衡")
print(" 有效整合可再生资源")
print(" 降低碳排放")
print("\n5. 社会价值")
print(" 资源节约")
print(" 经济效益")
print(" 保证电力稳定供应")
print("\n" + "=" * 50)
print("背景介绍完成!")
print("=" * 50)
background_introduction()
输出示例:
=== 1. 模拟电力负荷数据 ===
数据形状: (720, 2)
时间范围: 2024-01-01 00:00:00 ~ 2024-01-30 23:00:00
负荷范围: 423.45 ~ 1456.78
=== 3. 日内负荷模式 ===
各小时平均负荷:
0时: 524.56
1时: 489.12
...
23时: 712.34
=== 4. 周内负荷模式 ===
各天平均负荷:
周一: 856.78
周二: 867.90
...
周日: 678.90
=== 7. 阶梯电价分析 ===
各电价时段负荷:
低谷: 平均负荷=512.34, 数据点=180
平段: 平均负荷=890.12, 数据点=360
高峰: 平均负荷=1156.78, 数据点=180
5 重难点与易错提醒
- ❗重点:电力工业是基础性能源产业。
- ❗重点:新能源具有波动性和不确定性。
- ❗重点:火电从主力变为调和作用。
- ❗重点:准确预测有巨大社会和经济价值。
- ⚠️易错:忽视新能源的波动性。
- ⚠️易错:低估预测的价值。
- 💡深入理解:电力负荷预测是资源节约的关键。
6 课堂问答精选
Q: 为什么电力负荷预测任务复杂?
A: 任务复杂的原因:
- 电能多种多样(火电、风电、光电、核电、水电)
- 新能源具有波动性和不确定性
- 风电受风力影响(风大不转,风小转不动)
- 光电受天气影响(阴天)
- 需要整合多种能源
Q: 电力负荷预测有什么价值?
A: 价值:
- 资源节约:精确预测,避免浪费
- 电力平衡:实现供需平衡
- 经济效益:降低碳排放,用更少资源干更多事
- 社会价值:保证电力稳定供应
7 本课小结
- 背景:电力工业是基础性产业。
- 复杂性:新能源波动性和不确定性。
- 转型:火电从主力变调和。
- 需求:准确预测负荷,实现平衡。
- 价值:资源节约、经济效益、社会价值。
8 延伸思考与实践
- 实践:运行电力负荷数据分析。
- 预习:项目搭建。
- 思考:如何提高预测准确性?