虚拟电厂运行机制
虚拟电厂(VPP)对电力资源的调节是其最核心、最精妙的功能。它本质上扮演着一个“全能电力调度员”的角色,但其调度对象不再是几个大电厂,而是成千上万个分散的、类型各异的分布式资源。
1. 察:全面感知与实时监测
这是调节的基础。虚拟电厂通过安装在各类终端资源上的智能电表、传感器和控制终端,实时收集数据:
-
发电侧:分布式光伏、风电的实时发电功率和预测。
-
负荷侧:楼宇空调、工厂生产线、电动汽车充电桩的用电功率和可调节潜力(如空调能调高几度而不影响舒适度)。
-
储能侧:储能系统的当前荷电状态(SOC)、最大充放电功率。
所有这些数据通过物联网技术汇聚到虚拟电厂的“大脑”——云控平台,形成一个完整的、实时的系统运行状态图。
2. 算:智能决策与优化计算
这是虚拟电厂的“大脑”工作环节。平台基于收到的数据和外部的电网需求指令或电力市场价格信号,进行高速优化计算。
-
目标:在满足所有约束条件(如用户舒适度、生产过程连续性、储能安全)的前提下,以最低成本或最大收益完成电网的调节需求(如降低1000千瓦负荷)。
-
算法:采用复杂的优化算法和人工智能模型,决定“让谁调节、调节多少、何时调节”。例如,是让A工厂的空调调节,还是启动B储能电站放电,或是降低C充电桩的功率,抑或是三者组合。
3. 控:精准执行与协调控制
计算得出最优策略后,虚拟电厂平台通过通信网络向各个终端资源下发控制指令。
-
负荷侧调节(需求响应):这是最常用的手段。
-
削峰:在用电高峰时段,远程降低商业综合体的空调功率、调节冷冻库的制冷温度、暂停非紧急的工业生产线(如抛光、清洗工序)。
-
填谷:在用电低谷时段,启动电动汽车充电桩、鼓励工厂在夜间生产。
-
-
储能侧调节:
-
放电:在用电高峰时放电,相当于一个“电源”。
-
充电:在用电低谷时充电,相当于一个“负荷”,吸收多余的电能(特别是风光发电多时)。
-
-
发电侧调节:
-
如果有自备的分布式燃气轮机等可控电源,可以指令其增加或减少发电出力。
-
所有这些控制可以是自动化的、毫秒级响应的,无需人工干预。
4. 评:效果验证与收益结算
调节指令发出后,平台会持续监测实际执行效果,验证是否达到了预期的调节目标(如确实减少了1000千瓦需求)。
-
性能评估:评估每个资源的响应速度、调节精度和可靠性,为未来的优化调度提供数据支持。
-
经济结算:根据每个资源实际提供的调节服务量,按照事先约定的价格进行收益结算,将钱分给参与的用户。这是激励用户持续参与的关键。
网约车平台
你可以把虚拟电厂理解成一个 “电力版的网约车平台”:
-
分布式资源(空调、储能、电动汽车)就像是路上行驶的私家车。
-
电网(需要调节电力)就像是需要打车出行的乘客。
-
虚拟电厂平台就像是网约车平台(如滴滴)。
-
“察”:平台知道所有车辆的位置、状态和空座率(实时监测)。
-
“算”:平台收到乘客的订单后,通过算法计算出由哪位司机来接单最合适、路线最优(智能决策)。
-
“控”:平台将订单发送给指定的司机(下发指令)。
-
“评”:行程结束后,平台从乘客那里收取车费,并按比例分给司机(验证结算)。
-
虚拟电厂就是这样,将海量、分散的电力资源高效地组织起来,去完成“乘客”(电网)的出行(调峰、调频)需求。
实际应用场景举例
场景:夏季用电晚高峰,电网压力巨大,急需降低某区域的用电负荷。
-
电网发出需求:向虚拟电厂平台发布指令:“请在30分钟内,降低1000千瓦负荷,持续2小时。”
-
平台快速计算:虚拟电厂平台立刻分析旗下所有资源的状态:
-
商业综合体A:空调可调节,预计可降负荷300kW。
-
工厂B:有一条非紧急生产线可暂停,预计可降负荷400kW。
-
储能站C:当前电量80%,可放电300kW。
-
电动汽车充电站D:可将10个快充桩功率暂时降低,预计可降负荷200kW。
-
优化决策:选择调用A、B、D的资源(共900kW)和C放电100kW,组合完成目标。这样对用户影响最小,且成本最优。
-
-
下发指令执行:
-
向综合体A发送指令,将其空调主机功率自动下调。
-
向工厂B发送指令,暂停指定生产线。
-
向充电站D发送指令,将10个充电桩功率从60kW暂时降至40kW。
-
向储能站C发送指令,以100kW功率放电。
-
-
验证与结算:
-
平台确认总负荷降低了1000kW,响应了电网需求。
-
事后,平台根据A、B、C、D各自贡献的调节量,向他们支付报酬。
-
1. 电网降负荷需求
这个价格不是固定的,它由市场决定,波动很大。其定价机制主要分为两种:由政府制定的补偿价格 和 由市场竞争形成的价格。
a) 政府制定的补偿价格(主要用于“需求响应”)
在许多虚拟电厂项目的初期,为了鼓励用户参与,政府或电网公司会出台明确的补偿价格标准。通常有两种模式:
-
固定补贴价格:例如,深圳市曾规定,对参与虚拟电厂需求响应的用户,每响应1千瓦负荷,补偿10元/小时(注意单位是“元/千瓦”,而非“元/度”)。这意味着,如果一个工厂响应了100千瓦的负荷,持续2小时,它将获得
10元/千瓦 * 100千瓦 * 2小时 = 2000元的补偿。 -
电费折扣/激励:另一种形式是,参与用户可以在电费账单上获得直接折扣,例如每度电便宜0.1元,而不是直接获得响应补偿。
特点:价格稳定、透明,旨在培育市场,但可能无法完全反映资源的真实市场价值。
b) 市场竞争形成的价格(主要用于“辅助服务市场”)
这是更成熟和高阶的模式。虚拟电厂作为一个整体,像传统电厂一样,参与电力现货市场或辅助服务市场(如调峰市场)进行竞价。
-
价格由供需决定:
-
在电力极度紧张时(例如,夏季用电晚高峰,所有机组都满发仍不够用),为了“削峰”,电网愿意支付高昂的价格来购买负荷削减能力。此时的边际出清价格可能会非常高,可能达到3-4元/度电甚至更高。
-
在电力供应宽松时(例如,春季凌晨,风电光伏大发而用电需求低),为了“填谷”,激励用户多用电的价格就会很低,可能只有0.1-0.2元/度电。
-
-
报价模式:虚拟电厂运营商会根据其聚合资源的成本(如给用户的补偿价、自身运营成本)和预期利润,向电力交易中心申报一个价格。交易中心按“价格优先”的原则排序,从低到高调用资源,最后一个被调用的资源的报价,就是市场的统一出清价格。
特点:价格波动大,能真实反映电力商品的时空价值,对虚拟电厂的运营策略和预测能力要求极高,但收益潜力也更大。
2. 支付的主体是哪些?
资金的最终来源是电力用户,但支付的主体(即“谁直接掏钱”)根据不同情况有所不同。
-
电网公司:
-
这是目前最主要的支付主体。当电网公司以“需求响应”项目的形式组织虚拟电厂进行削峰填谷时,它会直接向虚拟电厂运营商支付费用。这笔钱通常来源于电网公司的运营成本,或通过输配电价进行疏导。
-
-
电力市场/交易中心:
-
在已经开放电力辅助服务市场的地区(如广东、山西、山东等),虚拟电厂作为独立市场主体参与竞价。一旦中标并提供服务,电力交易中心会根据市场出清价格,从所有市场成员(主要是发电厂和电力用户)缴纳的相关费用中,向虚拟电厂支付报酬。
-
-
售电公司/大型电力用户:
-
一些售电公司为了平衡其购售电偏差(避免罚款),会愿意向虚拟电厂购买调峰服务。
-
一些执行“峰谷电价”且价差很大的大型企业,如果自身调节能力不足,也可能向虚拟电厂购买服务,以降低其高峰电费支出。
-
虚拟电厂在“填谷”中的具体操作
“填谷”就是在低谷电价时段,引导商户多用电,把电网的负荷“山谷”填高一些。虚拟电厂主要通过以下两种方式实现:
-
调整用电时间(负荷转移):
-
将一些原本要在高峰时段运行的生产或活动,推迟或提前到低谷时段进行。
-
典型案例:
-
电动汽车充电站:虚拟电厂引导或直接控制充电桩,在夜间低谷电价时段为车辆集中充电,而不是在白天高峰时段充电。
-
冰蓄冷空调:在夜间低谷时段,开动制冷机制冰,将“冷量”储存起来;在白天高峰时段,停止制冷机,直接用夜间储存的冰来供冷。
-
柔性生产制造:将一些高耗能、非连续的生产工序(如电解、电加热、粉碎等)安排在夜间进行。
-
-
-
增加用电量(负荷增加):
-
在低谷时段进行一些额外的用电操作,进一步消耗电网富余的电能(特别是风电、光伏大发时)。
-
典型案例:
-
储能电站(充电):虚拟电厂指令其聚合的分布式储能系统,在低谷电价时段从电网充电,吸收电能。
-
调节游泳池/水箱加热:在夜间低谷时段将水加热到比日常所需更高的温度,以备白天使用,减少白天的加热需求。
-
-
收益如何产生?—— 三方共赢的链条
假设低谷电价 0.3元/度,平段电价 0.7元/度。
1. 对于商户(如充电站、工厂)来说:收益来自于 “节省电费”
-
** before (参与前) **:
一个充电站白天(平段)为100辆车充电,总用电10000度。
电费成本:10000度 × 0.7元/度 = 7000元。 -
** after (参与虚拟电厂后) **:
虚拟电厂引导该充电站改为夜间(低谷)充电。
电费成本:10000度 × 0.3元/度 = 3000元。 -
商户的收益:
节省的电费 = 7000元 - 3000元 = 4000元。
对于商户来说,这节省的4000元就是它的“收益”。它不需要直接收到现金,而是体现在显著降低的电费账单上。
2. 对于虚拟电厂运营商来说:收益来自于 “服务分成”
虚拟电厂运营商通过其技术平台和调度策略,帮助商户实现了电费节省。因此,它会与商户共享这部分节省的收益。
-
运营商与商户事先签订协议,约定分成比例(例如 5 : 5 或 3 : 7,通常商户拿大头)。
-
在上面的例子中,总共节省了4000元。
-
如果按5:5分成:
-
商户额外多得:2000元(相当于电费成本再降2000元)
-
运营商收益:2000元(这是它的服务费收入)
-
-
如果按3:7分成(运营商3,商户7):
-
商户额外多得:2800元
-
运营商收益:1200元
-
-
3. 对于电网公司来说:收益来自于 “系统优化”
-
削峰填谷,平衡了电网负荷,提高了电网运行的安全性和稳定性。
-
促进了新能源消纳(夜间风电多发,正好被用于填谷)。
-
避免了为了满足短暂高峰而投资建设新的发电厂和输配电设施,节约了巨大的社会公共成本。
光伏发电预测:
以日光伏发电量为预测目标,和风天气 API (拿到过去1年的历史天气数据),通常能拿到这些关键特征:
1. 气象特征(最核心)
- 日照时数(sunshine hours)
- 总辐射 / 太阳辐射强度(solar radiation)
- 平均温度、最高温、最低温
- 湿度(相对湿度)
- 风速、风向
- 降水量、降水概率
- 云量 / 云覆盖率
- 气压
2. 时间特征(必须加)
- 年、月、日
- 季节(春 / 夏 / 秋 / 冬)
- 星期几
- 昼长、日出日落时间
- 历史同期发电量(滞后特征)
3. 可构造的衍生特征
- 温度 × 辐射 交互项
- 湿度 × 辐射 交互项
- 历史 N 天平均发电量
- 历史同期均值 / 方差
总共构造17个特征,从和风天气拉取:日辐射、日照、温度、湿度、云量、降水,拼接历史发电数据,构造时间特征 + 滞后特征。
数据来源:和风天气接口,包括:温度、天气状况、风力、风速、风向、相对湿度、大气压强、降水概率、露点温度、云量。
hourly.fxTime预报时间hourly.temp温度,默认单位:摄氏度hourly.icon天气状况的图标代码,另请参考天气图标项目hourly.text天气状况的文字描述,包括阴晴雨雪等天气状态的描述hourly.wind360风向360角度hourly.windDir风向hourly.windScale风力等级hourly.windSpeed风速,公里/小时hourly.humidity相对湿度,百分比数值hourly.precip当前小时累计降水量,默认单位:毫米hourly.pop逐小时预报降水概率,百分比数值,可能为空hourly.pressure大气压强,默认单位:百帕hourly.cloud云量,百分比数值。可能为空hourly.dew露点温度。可能为空
{ "fxTime": "2021-02-16T17:00+08:00", "temp": "0", "icon": "100", "text": "晴", "wind360": "341", "windDir": "西北风", "windScale": "4-5", "windSpeed": "25", "humidity": "11", "pop": "0", "precip": "0.0", "pressure": "1026", "cloud": "0", "dew": "-26" }
import pandas as pd import numpy as np import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.preprocessing import StandardScaler # ===================== 1. 数据准备(模拟和风天气数据 + 光伏数据) ===================== # 实际使用时替换为:从和风天气API拉取数据后整理成DataFrame # 特征列对应和风天气可获取的核心特征,目标列为日光伏发电量(kW·h) data = pd.DataFrame({ # 气象特征(和风天气API可获取) '日照时数': [6.2, 7.5, 5.8, 8.1, 4.9, 7.8, 6.5, 8.3, 5.2, 7.1, 6.8, 7.9], '太阳总辐射': [4.2, 5.1, 3.8, 5.5, 3.2, 4.9, 4.0, 5.3, 3.5, 4.7, 4.4, 5.0], '平均温度': [25, 28, 24, 30, 22, 29, 26, 31, 23, 27, 26, 30], '相对湿度': [65, 58, 70, 55, 75, 60, 68, 52, 72, 62, 66, 54], '风速': [2.1, 1.8, 2.5, 1.5, 3.0, 1.9, 2.2, 1.4, 2.8, 2.0, 2.3, 1.6], '云量': [20, 10, 30, 5, 40, 15, 25, 8, 35, 18, 22, 10], '降水量': [0, 0, 0.5, 0, 2.0, 0, 0, 0, 1.0, 0, 0, 0], # 时间特征(构造) '月份': [6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7], '昼长': [14.2, 14.5, 14.1, 14.6, 13.9, 14.7, 14.4, 14.8, 14.0, 14.6, 14.5, 14.7], # 目标列:日光伏发电量(kW·h) '日发电量': [850, 980, 780, 1020, 650, 950, 820, 1050, 700, 920, 880, 1000] }) # ===================== 2. 数据预处理 ===================== # 分离特征(X)和目标(y) features = ['日照时数', '太阳总辐射', '平均温度', '相对湿度', '风速', '云量', '降水量', '月份', '昼长'] X = data[features] y = data['日发电量'] # 划分训练集/测试集(7:3) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 特征标准化(可选,但能提升XGBoost稳定性) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 转换为XGBoost专用DMatrix格式(提升训练效率) dtrain = xgb.DMatrix(X_train_scaled, label=y_train) dtest = xgb.DMatrix(X_test_scaled, label=y_test) # ===================== 3. XGBoost模型参数设置 ===================== # 核心参数(针对日级光伏预测调优) params = { 'objective': 'reg:squarederror', # 回归任务(平方误差损失) 'max_depth': 5, # 树最大深度(避免过拟合) 'learning_rate': 0.1, # 学习率 'n_estimators': 100, # 树的数量 'subsample': 0.8, # 采样比例(防止过拟合) 'colsample_bytree': 0.8, # 特征采样比例 'random_state': 42, 'eval_metric': 'rmse' # 训练时评估指标 } # ===================== 4. 模型训练 ===================== # 训练模型 model = xgb.train( params, dtrain, num_boost_round=100, evals=[(dtest, 'test')], # 训练过程中验证测试集 early_stopping_rounds=10, # 早停(防止过拟合) verbose_eval=10 # 每10轮打印一次评估结果 ) # ===================== 5. 模型预测 & MSE评估 ===================== # 预测测试集 y_pred = model.predict(dtest) # 计算MSE(均方误差) mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) # 均方根误差(更直观,同发电量单位) # 输出评估结果 print(f"\n测试集MSE(均方误差): {mse:.2f}") print(f"测试集RMSE(均方根误差): {rmse:.2f} kW·h") # 打印真实值 vs 预测值对比 result = pd.DataFrame({ '真实发电量': y_test.values, '预测发电量': y_pred.round(2) }) print("\n真实值 vs 预测值:") print(result) # ===================== 6. 特征重要性分析(关键!) ===================== # 查看哪些特征对光伏预测最关键(和风天气数据中辐射/日照通常排前) importance = pd.DataFrame({ '特征': features, '重要性': model.get_score(importance_type='weight') # weight:特征被使用的次数 }).sort_values(by='重要性', ascending=False) print("\n特征重要性排名:") print(importance)

浙公网安备 33010602011771号