基于效用分类的智能电网实时电价算法
2020-04-10原冠秀王宏杰
原冠秀,高 岩,王宏杰
(1.上海理工大学 管理学院,上海 200093;2.上海健康医学院 文理学院,上海 201318)
随着现代工业技术的快速发展,人类生活变得越来越方便,如智能家居、电动汽车等的使用。然而,方便的同时也给世界能源可持续发展带来了巨大的挑战,尤其越来越多的电器产品和工业的超负荷运营,是当前世界电网所面临亟待解决的问题。在这种背景下,智能电网应运而生,智能电网是连接发电厂、供电商、用户之间的依靠先进的通信和计量设施建立起来的电力网络结构。
1 研究背景
由于电力能源自身的易损性和难存储性,要求电力市场供电侧和需求侧达到均衡时,才能实现能源的利用最大化。在电力市场运营中,实时电价已经是智能电网需求侧管理的重要手段之一。在实时电价问题的解决过程中,目前国内外研究主要采用两种方法:一种是利用博弈论方法均衡供电侧和需求侧之间的关系,制定定价机制;另一种是利用最优化方法研究社会福利最大化问题[1-2]。现有利用最优化方法来研究实时电价的文献,大多数考虑的是用户效用函数为单一类型,而现实生活中,由于用户种类繁多,他们的消费模式和偏好不同,效用函数会呈现多样化。文献[3]研究了基于用户效用最大化和供电商成本最小化的社会福利最大化模型,通过分布式算法进行对偶分解,并利用梯度投影法给出了供电商与用户之间的实时电价更新算法。文献[4-5]讨论了不同环境中智能电网实时电价的需求侧管理,提出了一些启发式算法,解决供电商和用户之间的用电策略,如粒子群算法、模拟退火法、ADMM算法等,它们所考虑的效用函数都为单一类型。而文献[6-7]虽然针对不同电器的使用情况和耗能类型,将电器分为弹性、半弹性和非弹性,仍然没有考虑电器分类所带来的不同类型的效用函数。文献[8-12]考虑了在实时动态价格算法中,由于可再生资源和传输损耗对住宅需求响应的不确定性,研究了如何鉴别、剔除不稳定供电商和恶意用户,但是,并没有考虑电力市场实时电价随效用函数的变化。另外,一些文献还研究了多目标的实时电价优化模型,考虑含风力和时间等多重约束耦合的实时电价及价格预测模型,利用当市场供需平衡时才能实现出清价格的原理,得到了实时电价的更新算法[13-15]。
在利用最优化方法解决实时电价问题中,大多数的研究都是基于效用函数最大化、成本函数最小化建立的。考虑单一类型效用函数的社会福利最大化模型,由于效用函数是凹函数,对应的优化问题为凸优化,利用Lagrange 对偶分解法、牛顿法、梯度投影法等方法求解,得到Lagrange乘子,即实时电价的影子价格[3,16]。但是,在现代网络时代,边际效益在有些情况下是增加的,如中国移动通讯,随着用户的增多,边际效益是增加的,也就是说,效用函数是非凹函数。类似的,本文考虑多类用户多类效用函数并存的社会福利最大化模型,该模型不再是凸优化问题,不能按照现有的方法解决。文献[17]中提出了边际效用非递减用户的实时电价方法,利用增广Lagrange 乘子法得到了影子价格的存在唯一性。文献[18]考虑了电器分类下不同类型的效用函数,文献[19-20]利用Karush-Kuhn-Tucher(KKT)系统解决该类实时电价问题,并得到了较好的效果。
本文考虑同时含有凹效用函数和非凹效用函数两种情形并存的社会福利最大化模型,根据微观经济学中出清价格满足市场供需平衡原理,通过求解KKT 最优性条件,证明了Lagrange 乘子的存在唯一性,进一步得到了一种基于KKT 系统的分布式实时电价更新算法。在求解过程中,供电侧的最优产电量与用电侧的最优用电量可以分别计算得到,这样也保护了用户的隐私。最后将数值仿真结果与固定电价算法下的社会福利相比较,证实了该算法的合理性、有效性。
2 系统模型
2.1 效用函数
效用函数是微观经济学中的概念,通常用来表示消费者在消费中所获得的效用与所消费的商品组合之间数量关系的函数,以衡量消费者从消费既定的商品组合中所获得满足的程度。效用函数有多种形式,这里按照用户不同,分两种情形讨论。
对于一般用户来说,随着电力消费越来越高,用户的满意度随之增长,但是,到一定程度会达到饱和,适合采用凹效用函数,即(x,ω)≤0。如对数函数、分片线性函数、二次函数等,本文采用如下二次函数[17]:
式中:x代表用户的用电量,不同用户不同时间段彼此独立;α为预先给定的参数,α ≥0;ω代表用户满意度参数,随着时间、温度等变化,各个用户之间也各不相同。
对于一些大工业、商业用户,由于电力消费满意度不同,效用随着产值的改变而变化很大,在一定的电力消费阶段,效用函数值的增加速度会随着电力消费水平迅速增加,如果仍采用凹效用函数,不再贴近实际生产状况。根据微观经济学原理,选取适当的非凹效用函数更加贴切。如S 型函数,即Sigmoid 函数[21]:
式中,a,b为预先给定的参数。
Sigmoid 函数是单调连续增函数,表示一些大用户在用电量过低或过高时效用变化缓慢,在用电量适宜的阶段,效用变化迅速。注意到参数b为函数的拐点,即
2.2 成本函数
假设供电商每次发电成本与产生的能量数量是单独相关的,可由成本函数来表示。通常成本函数是一个单调增加的严格凸函数,目前普遍采用的成本函数为二次函数,即
式中:ak,bk,ck为预先给定的参数,ak>0,bk,ck≥0,随着时段不同而变化;Lk为时段k内的产电量。
2.3 优化问题
假设在某个区域电力系统中有一个供电商、多个用户。N为所有用户集合,每个用户i∈N,,其中,Nc代表采用凹效用函数的用户集合,Ninc代表采用非凹效用函数的用户集合。实时电价理论上指某一时刻的费用,为了方便起见,将一个时间周期(如一天24 h)分为k个时段(如24 个时段),记K={1,2,···,k}为所有时段的集合。符号表示消费者在第 个时段的用电量,满足,其中,表示用户i在第k个时段最小用电量,即不断电的情况下满足基本的生活要求,表示用户i在第k个时段所有电器充分利用的最大用电量。符号Lk表示第k个时段供电商的产电量,它满足表示第k个时段内最小和最大产电量,要求能够提供在第k个时段所有用户的最小用电量,保障基本生活要求,即
在整个电力市场中,从社会福利最大化角度考虑,基于两个目的:最大化所有用户的效用之和,同时最小化供电侧的成本,从而建立如下模型:
式(4)中目标函数为社会总福利,第一个约束条件含义为在每一时段,电力市场不断电的情况下,所有用户侧的用电总量不会超过供电侧的产电量。
3 模型求解
3.1 模型分析与Lagrange 乘子的性质
在电力市场的消费过程中,每个时段的电力消耗可以看成是完全独立的,用户彼此之间也是独立的,这样整个社会福利最大化问题就可以转化为只需考虑某一个时段的社会福利最大化问题,整个社会福利最大化模型可以被分为k个子问题:
求解问题(5)有多种方法,如集中式内点法、梯度投影法[3]、牛顿法[19]等。事实上,优化问题的Lagrange 乘子,在电力市场实际问题中代表电价的影子价格,它反映了社会资源配置达到最优的一种价格,用来指导供电商调整电价。因此,可以通过求解优化问题(5)的KKT 条件,寻求Lagrange 乘子,即影子价格。定理1 首先给出优化问题(5)的Lagrange 乘子是存在且唯一的。
定理1[17]假设优化问题(5)中效用函数是连续可微的,由式(1)和式(2)给出,成本函数Ck(Lk)由式(3)给出,则优化问题(5)在最优点的Lagrange 乘子存在且唯一。
定理1 说明优化问题(5)的Lagrange 乘子存在且唯一,由于优化问题的约束条件都是线性的,满足线性独立约束规格[22-23],从而满足KKT 条件,这样就可以通过求解KKT 系统来进一步求解Lagrange 乘子,即实时电价的影子价格。
3.2 分布式算法
考虑社会福利最大化问题(5)对应的KKT 系统:
其中,第一个约束的Lagrange 乘子 λk代表了实时电价的影子价格,用于指导供电商调整电价。产电量约束条件的Lagrange 乘子为,用电量约束条件的Lagrange 乘子为。
用户侧和供电侧的边际效用和边际成本为
根据微观经济学原理,当电力水平目前没有达到饱和的情况下,市场供电量与需求量达到平衡时,市场价格为出清价格[21],从而建立实时电价迭代更新公式为
由式(9)可知,当电力市场的供电量和需求量保持一致时,即供需平衡时,算法收敛,此时为影子价格的最优解,指导供电商调整电价,得到市场出清价格。
定理2实时电价迭代式(9)中每个用户的用电量和产电量Lk可以分别由下列公式:
给出。
证明a.当产电量或者用电量达不到最大或最小值时,由式(6c)可知,产电量约束条件的Lagrange 乘子取值为0,将式(7)代入式(6a)可得,此时产电量为,这里代表边际成本函数mc(Lk)的反函数;
进一步整理,对于供电侧的产电量可以由式(10)给出。同样分析需求侧的用电量、边际效用与影子价格的关系,可以得到需求侧的用电量可以由式(11)给出。
给定某一时段k的第t次迭代的电价,利用式(10)计算出供电侧的产电量,利用式(11)计算用户侧的用电量,代入式(9),更新实时电价。这样,供电侧的产电量和用电侧的用电量就可以分开计算,保护了用户的隐私。
根据以上讨论,现给出实时电价更新算法。
算法1(用户侧):
步骤1当k∈K时,对所有用户i∈N,初始化
步骤2若t∈T,从供电商处接收电价;
步骤3利用式(11)更新用电量;
步骤4将用电量的信息传递给供电商。
算法2(供电侧):
步骤1当k∈K时,初始化
步骤2若t∈T,
b.利用式(10)更新产电量Lk;
步骤3若停止准则成立,则算法停止;否则,重复步骤b—d。
前面利用KKT 条件的结论给出了供电侧和用户之间的用电策略,在算法中,实时电价的更新只需要知道用户侧的用电量和供电侧的产电量,实现了供电侧和用户侧分离,无需知道每个用户的效用情况,保护了用户的隐私。该算法不仅适用于采用凹效用函数的用户,同样也适用于部分采用非凹效用函数的大工业、商业用户。
4 数值仿真
4.1 参数设置
假设所考虑的电力系统有1 个供电商、10 个用户,其中,8 个用户采用二次效用函数,2 个用户采用Sigmoid 效用函数。一天时间分为24 个时段。这里,成本函数参数取值ak=0.01,bk=0,ck=0。效用函数U1中取参数α=0.3,效用函数U2中取参数a=2,b=15,ω∈[1,4]随机选取,一旦取定,在一个小周期内固定,初始电价λ0=0.56,终止参数ε=0.01。
将仿真结果与固定电价下的社会福利进行了比较,在固定电价算法中,效用函数的参数取所有用户参数的最大值,即ωmax=4,固定电价利用公式[3]λk=ωmax-Lkα/N计算得到。
4.2 结果分析
图1 给出了分布式算法下每个时段实时电价的变化情况,图2 给出了实时电价下供电侧的产电量和用电侧的总用电量的变化情况,说明了当市场产电量与总用电量达到平衡时,实时电价得到最优值,即市场出清价格。
从图3 可以看出,在某一时间段供电侧的产电量、用电侧的总用电量、实时电价在迭代14 次以后,都达到了收敛,说明了分布式算法的有效性。
图1 一天实时电价Fig.1 Electricity real-time price of a day
图2 每时段产电量与总用电量Fig.2 Electricity production and consumption of a day
图3 某时段总用电量、产电量和实时电价的迭代次数Fig.3 Electricity consumption and production and the iteration times for the real-time electricity price in a certain time period
图4 比较了分布式实时电价算法和固定电价算法下的社会福利最大值,可以看出,每个时段实时电价下的社会福利值都大于固定电价下的社会福利最大值,说明实时电价的优越性。
考虑某一个用户的福利,用其效用减去所付费用来表示:
图4 实时电价与固定电价下的社会福利值Fig.4 Social welfare value under real-time price and fixed price
式中,p为实时电价。
图5 以用户3 为例,说明了在每个时段实时电价算法下的个体用户福利都要高于在固定电价算法下的福利。
图6 和图7 是考虑10 个用户分别采用不同效用函数进行比较,其中,前8 个用户采用的是二次凹效用函数,9,10 用户采用的是Sigmoid 非凹效用函数。在某一个时段中,虽然实时电价下的效用都大于固定电价下的效用,但是,从图6 中可以看出,采用Sigmoid 非凹效用函数的用户9 虽然用电量不为0,但是,图7 中的效用却接近于0,其他时段也有类似情形,这说明仅仅考虑耗电量比例公平对于这些用户是不公平的,这也是作者下一步将要解决的问题。
图5 两种电价下用户3 的福利Fig.5 Social welfare of the user 3 under two price mechanisms
图6 时段8 实时电价下所有用户用电量Fig.6 All users' electricity consumption under the real-time electricity pricing in eighth time period
图7 时段8 两种电价下所有用户的效用Fig.7 Utility of all users under two price mechanisms in eighth time period
5 结束语
针对智能电网系统具有不同类型效用函数的用户,建立了采用凹效用函数和Sigmoid 非凹效用函数两类用户的社会福利最大化模型,研究了实时电价问题。在已有研究对用户仅考虑单一类型效用函数或分类后不同效用函数基础上,重新考虑分类为凹效用和非凹效用函数进行研究。由于所研究的社会福利最大化模型是非凸优化问题,是NP 难的,本文根据市场出清价格原理,通过研究该模型的KKT 最优性条件,得到了实时电价影子价格的迭代方法。整个算法只需知道用户的用电量和供电商的产电量,实现了供电侧和用电侧的分离,既得到了分布式实时电价更新算法,又保护了用户的隐私。仿真结果证实了算法的有效性。结果显示,对于非凹效用函数的用户仅考虑需求比例存在不公平的现象,这也明确了下一步研究的方向。