训练营介绍:
从零入门 AI for Science(AI+经济)是 Datawhale 2024 年 AI 夏令营第三期的学习活动,基于阿里云天池平台“第二届世界科学智能大赛社会科学赛道:市场博弈和价格预测” 开展的实践学习。
学习内容方向:
数学建模方案(主体建模 Agent-based model)到强化学习方案。
AI+社会科学是近年来非常前沿的方向,主要结合博弈论、复杂系统、强化学习、系统动力学、市场经济等领域知识,对个体在环境中的行为进行模拟,探索群体的涌现现象,从而指导现实社会的政策制定、资源分配等。
在接下来的学习中,我们将进一步了解ABM(Agent-Based-Modeling)这一简洁而有趣的建模复杂世界的方法。学习如何结合博弈论、市场经济、时间序列挖掘等知识,帮助解决复杂的电力现货市场定价问题,体验计算社会科学的神奇之处。
通过魔塔社区的内置jupterlab进行了一次baseline的跑通,初步认识了
第二届世界科学智能大赛社会科学赛道:市场博弈和价格预测赛题背景
此次比赛主要针对“电力现货市场”(可以类比证券交易市场),泛指短时间内的电能量交易市场。
市场中有大量发电机组(供给者,会发电并卖出电力)按照交易规则,在指定的平台上采取集中竞价的方式确定电能的交易量和价格。这些电能会被输送给个体户、商业用户等,从而利用市场机制实现资源优化配置。
在最理想的情况下,市场完全竞争(市场参与者众多,以至于没有任何一方能够影响价格,不存在控制价格的可能性),没有任何博弈行为。每个发电机组都诚实报价,市场出清价格稳定可靠,达到最优效率。
但现实中,电力现货市场有以下特点:
-
寡头竞争(几家电力公司独大,对价格有显著影响)
-
不完全信息(不同机组信息不互通,存在打信息差牟利的可能)
-
非合作博弈(机组之间各谋其利,追求各自的利益最大化)
-
参与者有限理性(受限于经济知识和对市场的了解,机组不一定能做出最优决策)
从而不同机组之间有复杂的博弈行为,这就让市场出清价格难以估计。
因此,本次比赛要求针对电力现货市场价格和市场博弈主体(549个发电机组)的信息,用ABM方法建模这些机组在报价上的博弈行为,使最终模拟的市场出清报价接近现实中的市场出清价格。
赛题数据
electricity price.csv
:电力市场的市场出清价格,市场需求等信息。训练集范围为2021年12月1日到2023年7月1日,共计55392个点;测试集范围为2023年7月1日到2024年4月18日,共计28228个点
-
Day/Time:交易时间,中国电力现货市场15分钟结算一次,一天共96个交易点
-
demand:区域内电力总负荷(总需求),单位为MW
-
clearing price (CNY/MWh):市场出清电价,单位为元/MW·h
简要介绍ABM(Agent-Based-Modeling)
注意,这里ABM的Agent不是大语言模型中的Agent,更接近强化学习中的Agent概念
ABM(Agent-Based Modeling),即基于个体的建模,是一种模拟系统复杂行为的工具。它通过模拟个体(代理)的行为和相互作用,来研究系统整体的动态变化。
ABM有很多应用案例,例如康威的生命游戏(Game of Life),新冠传染病传播模型、政府企业博弈模型、鸟群模型……
你会发现这和DW数学建模教程中的微分方程和动力系统如此相似,事实上二者一脉相承,不过ABM不关注复杂的数学,只关注如何用简单的交互规则模拟复杂系统。
例如在模拟两种生物种群相互作用的捕食者-被捕食者(Predator-Prey)模型中,数学建模用洛特卡-沃尔泰拉(Lotka-Volterra)方程来描述作用关系,并用数值方法解微分方程观察结果:
-
被捕食者种群变化率:$$\frac{dN}{dt} = rN - aNP$$,被捕食者种群的增长率来自自身的自然增长(rN)和捕食者捕食造成的减少(aNP)
-
捕食者种群变化率:$$\frac{dP}{dt} = baNP - mP$$,捕食者种群的增长率来自捕食被捕食者获得的增长(baNP)和自身的自然死亡(mP)
但现实中,并不是所有模型都能用方程表示,尤其在交互更加复杂,参数逐渐增多的时候。因此ABM提供了一个更简单的方案——从简单的个体交互规则涌现系统的复杂性。在ABM中,实现相似的模拟结果,只需要三个规则:
-
每个智能体有初始的能量,移动会消耗能量,进食会增加能量
-
当能量过低,智能体死亡;当能量足够高,智能体会繁育
-
如果移动后遇到食物(对于羊来说是青草,捕食者来说是羊),则吃下它
哇哦ABM真神奇,想不想试试写一个Datawhale宣传传播模型?(`∀´)
总结来说,一个典型的ABM模型由以下几个部分组成:
-
代理(Agent):系统中的基本个体,每个代理都有自己的属性和行为规则。
-
环境(Environment):代理活动的空间或网络,可能影响代理的行为。
-
交互规则(Interaction Rules):代理之间、代理与环境之间的相互作用规则。
-
时间步(Time Steps):系统按离散的时间步推进,模拟出系统的动态变化过程。
定义了这些规则后,我们就可以开始模拟,并从模拟中发现ABM的核心“涌现现象”,即个体的行为涌现出了总体的变化。
当然,这里只简要说明ABM的概念,具体我们将在Task2中进一步实践ABM建模୧(๑•̀◡•́๑)૭
市场出清价格(Market Cleaning Price)如何形成
注意,这里假设了只有数据集中的火电厂存在。但现实中火电厂会受风电、水电、太阳能等电力替代品竞争,同时总负荷一部分会被如跨省调电、蓄电等方式消耗,这些我们没有考虑在Baseline中。
电力市场的出清价格形成类似证券市场早上9:15-9:25的集合竞价,由于赛题只提供了总需求,我们可以认为需求曲线是一条直线。
出清价格的形成步骤如下:
-
所有发电机组申报自己卖出的电价和电量
-
市场根据机组报价,从低到高排序,依次从低价开始成交
-
当成交的容量和大于等于总需求时,达到市场出清(供需平衡),这时候最后一个达成交易的机组报价为市场出清价格
我们用一个实际案例来解释,假如市场总需求为3000MW,四个机组依次报价报量如下:
-
机组1:报价150元,容量500MW
-
机组2:报价200元,容量500MW
-
机组3:报价250元,容量2000MW
-
机组4:报价400元,容量2500MW
按价格从低到高,机组1先成交,随后是机组2、机组3,此时容量和等于总需求,不再有额外的电力需求,市场达到出清状态,市场出清价格为250元。
这里我们还可以发现一些现象:
-
机组4由于过高的价格竞标失败,导致没有卖出任何电力。现实中机组4不得不停掉一些发电机。但煤电机组频繁关停会影响设备寿命和性能,还可能延误后续高价时段的正常发电,最终只能亏本卖出。
-
机组1实际上能卖更多钱,如果他能预料到机组2和3报价为200和250,他就可以报价300元,保证最后一个出清的是他,而不是只能卖150元(但它无法报特别高的价,因为电力是公共物品,受政府管控,设置了价格上下限)
因此报价本身就是一个充满策略博弈的行为,就像在股市中总想做买入价格最低,卖出价格最高的那个人。
价格帽
根据上面内容,我们会想:“那如果用电特别紧缺”,机组不是能开特别高价来获利吗?
为了解决这个问题,并且保证市场稳定,电力现货市场中存在价格帽,即规定:
-
报价上限为:1300元/MWH
-
报价下限为:-80元/MWH
-
出清价格上限:1500元/MWH
-
出清价格下限:-100元/MWH
通过观察数据我们也能发现,数据中有4512个-80元的交易点,最低价格为-85元。而最高价格是1296元,接近价格上限。
边际成本定价策略
实际边际成本并不会保持不变,由于边际报酬递减规律,其会随着发电量的增加而增加。但在该比赛中假设了边际成本不变。
在baseline中,我们选择了最简单的边际成本定价策略作为每个Agent的策略,在这里我们解释这样做是最朴素但也最稳健的原因,当然这种简单的策略没有包含智能体之间的交互以及与环境的交互。
边际成本的定义是生产额外一单位产品(这里是一度电)带来的成本增加,机组报出的电价不能低于边际成本,否则就会亏损。
-
假设机组突然报一个低价,原来边际成本是300元,现在报200元,最后发现市场以350元出清,导致自己损失了本来可能赚的150元
-
现在机组抬价,报1000元,然后发现低价的都先成交了,市场以400元出清,自己竞价失败,只能亏本售电。而电能具有难存储性,必须保证用电发电平衡,如果无法售出只能弃电,相当于成本价都无法收回。
因此长期来看,所有机组都会选择边际成本定价,至少能保证不亏不赚
但实际的电力市场并没有这么理想,不按边际成本报价才是正常的,具体来说发电机组可能产生如下行为:
-
分析供需关系,在预期电力需求上升时提高报价以获取更高收益;在预期电力供应过剩时降低报价以抢占市场份额
-
在成本价的基础上,乘以一个系数以获取额外利润
-
根据其他机组过去的边际价格,估计市场边际电价,并在该基础上报一个低价,保证自己的电量能完全卖出
-
预测其他机组的报价来提高自己报价
-
跟随大部队报价
这些策略可能被应用于后续的效果提升中
day | time | demand | clearing price (CNY/MWh) | ||||||||||||||||||||
2021/12/1 | 0:15 | 40334.18 | 350.8 | ||||||||||||||||||||
2021/12/1 | 0:30 | 40523.15 | 350.8 | ||||||||||||||||||||
2021/12/1 | 0:45 | 40374.74 | 350.8
机组数据包含549个不同的火电机组
比赛任务比赛本质是一个回归(预测目标为连续值,例如根据年龄预测身高)问题,需要预测2023年7月1日到2024年4月18日每15分钟的市场出清价格,虽然可以纯粹依靠时间序列模型完成,但比赛方称期待参赛成员使用ABM模型建模获取市场出清价格,因此可以在两方面进行尝试上分(ps:如果感觉ABM较难,可以专注于时间序列挖掘哦)。 |