(文章复现)售电市场环境下电力用户选择售电公司行为研究(附matlab代码)

简介: 售电市场放开是我国售电侧改革的发展方向,竞争性售电市场中用户选择权放开,用户选择结果直接影响售电公司的市场份额,进而影响售电公司的售电策略。分析了售电市场环境下影响用户选择售电公司的因素,考虑不同类型用户的用电特性,计及可中断负荷、用户分布式可再生能源的影响,基于层次分析法建立用户效用模型,在此基础上,采用演化博弈理论分析用户选择过程,基于 logit 修正协议构建了不同类型用户群体选择售电公司的多群体动态演化模型,给出了模型的求解算法并证明了模型稳定性。算例分析验证了所提模型和算法的有效性。

参考文献:

[1]孙云涛,宋依群,姚良忠等.售电市场环境下电力用户选择售电公司行为研究[J].电网技术,2018,42(04):1124-1131.

1.基本原理

1 .1演化博弈

       与古典博弈理论相比较,演化博弈假设参与人是有限理性的,参与人会根据自己和他人的经验选择自己的策略;另一方面,演化博弈以参与人群体为研究对象,研究群体内部个体间行为的相互影响以及不同群体的个体间行为的相互影响[13]。一般地,演化博弈假设个体有有限个纯策略。记一个特别的个体用第k个纯策略的时间比例为sk,或者说是它在给定的时间里用第k个纯策略的概率。在混合策略模型中,个体的策略为一个概率向量,为

image.gif

       在一个总体规模很大的群体中,每个个体策略集相同,从群体中随机选取两个个体进行博弈,对任意一个个体,他与从总体中随机选取的个体博弈,和与采用混策略的个体博弈是等价的,群体的总体状态在形式上等同于混策略[7]。

       售电市场环境下,电力用户无法对信息变化做出迅速的最优化反应,其选择是“有限理性”的[14]。另外,售电市场环境下,相对于某个用户的行为,更加关注区域用户群体的行为。售电市场中,同一区域存在多种类型用户,同种类型用户可看作一个用户群体,假设区域内共有J家售电公司和I种类型用户,售电市场中用户间的博弈可用多群体演化博弈来描述:

       1)参与者群体。不同类型的用户群体iI

       2)策略。从售电公司j属于J选择一家售电公司。

       3)效用。i类型用户选择售电公司j所获效用。采用演化博弈理论分析用户选择售电公司的行为,需要基于用户选择售电公司的效用建立用户行为的演化动态,从而建立用户演化博弈模型。

1.2 用户选择售电公司的效用分析

       售电公司是售电市场中购售电环节的主要承担者,为电力用户提供电力及相关增值服务[15]。在国外售电市场的发展中,有学者对用户选择行为进行了研究。2014 年,葡萄牙售电市场中的电力用户受用电成本上涨驱使开始在放开的售电市场中寻找新的售电公司作为电力供应商,其中大部分用户更偏向于选择更加著名和可靠的葡萄牙电力公司下属的售电公司[4]。通过对瑞典居民用户的问卷调查发现,用户对售电公司的选择同时受经济因素和心理因素影响,除了考虑用电成本,市场上售电公司的口碑和服务也会影响用户的选择[14]。

1.2.1 用户效用指标体系构建

       结合国际售电市场经验,从经济和心理因素出发,分析影响用户选择的因素有 3 方面:售电合同、公司品牌、供电服务。售电公司在 3 方面的竞争力决定了用户选择该售电公司的效用,为了量化用户效用,进一步分析得到影响用户效用的 5 个指标为:售电合同竞争力(平均用电价格 B1、合同结构 B2)、 公司品牌竞争力(市场占有率 B3)、供电服务竞争力(供电可靠率 B4、附加增值服务 B5)。

1.2.2 基于层次分析法的用户效用模型

       针对平均用电价格(B1)、市场占有率(B3)指标,通过定量计算得到指标值,然后对指标值进行归一化处理(本文将各指标值归一化到区间[0,10])。针对其余指标,由专业机构(如电力交易机构)根据其历史经营状况等进行评估,得到评分值。采用层次分析法(analytic hierarchy process,AHP)对用户效用进行建模,不同类型用户根据自身用电偏好,通过比较各因素之间的重要性进行打分,得到各指标权重值[3],进而得到i类型用户选择售电公司j的效用为

2 用户选择售电公司的演化博弈模型

2.1 演化博弈建模

       将用电区域内多种类型用户选择售电公司的行为建模为多群体演化博弈,售电公司向区域用户发布相关信息。用户获取不同售电公司发布的信息后,在其中选择一家,所有用户的选择结果反映为用户群体状态。用户在选择过程中能够逐渐调整自己的选择策略,即用户群体状态在演化过程中逐渐变化。

2.2 用户选择行为的演化动态过程

       通过用户群体的演化动态系统来刻画用户群体在状态空间 X 上的演化过程,在某一时刻,售电公司根据用户的选择状态,确定当前时刻自身的市场占有率并发布给用户,用户根据售电公司的各指标评分以及当前时刻接收到的售电公司电价和市场占有率信息修正自己的策略。

       上式等式右端第1项和第2项分别表示i类型用户中从其他策略转为选择策略j和从策略j转为选择其他策略的用户比例。本文演化博弈模型的修正协议采用logit模型[19],即

       随着用户群体演化的进行,用户效用随着用户群体状态的改变而不断变化。本文采用分布式迭代算法求解演化均衡。式(14)给出的时间连续的动态演化方程可以写成离散形式:

       算法的计算流程如下:

       1)初始化各类型用户群体状态。

       2)计算 i 类型用户选择售电公司 j 的效用。

       3)利用式(13)计算修正协议,利用式(15)更新用户群体状态并更新售电公司市场占有率。

       4)判断是否达到演化均衡。若达到演化均衡,求解结束;若没有达到演化均衡,利用用户群体状态计算售电公司市场占有率,回到第 2)步。

2.3 考虑用户忠诚度的模型修正

       在售电市场实际运营中,售电公司可通过采取各类营销手段增加用户黏性[20],在用户自由选择的过程中,售电公司客户中存在忠诚用户不更改自身策略。用选择售电公司 j 的用户中不愿意更改策略的用户比例rj表征售电公司 j 的用户忠诚度,则在演化过程中,选择售电公司 j 的用户中有(1- rj )比例的用户会“反思”自身策略,进而依据修正协议调整自身策略。考虑用户忠诚度后,基于 logit 修正协议的演化动态变为

2.4 用户选择行为模型稳定性证明

3.编程思路分析

3.1演化博弈

       电力系统领域最常见的论文就是解优化问题,定义决策变量,目标函数,约束条件,三板斧一用,调用求解器就能得到优化方案。但演化博弈的编程不太一样,整体框架上来看并不是求解优化问题的三板斧,而是求出博弈群体的状态。具体的概念和定义我这里不再赘述,感兴趣的小伙伴可以学习一下乔根·W·威布尔所著的《演化博弈论》。和往常一样,写出参数列表,方便对照编程:

表1 相关参数

3.2编程思路

       根据对文献内容的解读,可以设计下面的编程思路:

       步骤1:输入所需数据

       算例分析用到的部分数据可以从原文中找到,部分没有给定的参数是自行设置。然后将所有需要的数据,按照表1的定义格式输入即可。需要说明的是,文中已经给出了AHP法计算得到的指标权重,因此可以省略采用AHP法计算权重这一步骤。

       步骤2:实现计算用户效用的子函数

       在所有的五个指标中,指标B2-B4计算比较简单,比较麻烦的就是指标B1平均用电价格,需要按照文献中给的公式完成计算。另外,文献中场景比较多,可以在计算用户效用的子函数中加入更多的输入参数,这样处理的话,场景变化时只需要修改参数就行,不需要更改子函数的内容。

       另外,指标B1和B3需要标准化到[0,10]的区间,但文中没有具体给出区间转换的方式,我在代码中是这样处理的:

       指标B1为用电平均价格,对用户来说用电平均价格越小越好,也就是一个负向指标,采用下面的方式进行标准化:

image.gif

       最小的用电平均价格取最大值为10,其他用电价格按大小不同折算到[0,10]的区间。

       指标B3为市场占有率,是一个[0,1]的指标,所以只需要把初始的B3×10就可以折算到[0,10]的区间内。

       这样处理,就可以把所有的指标都折算到[0,10]的区间内,同时都为正向指标,即对用户来说越大越好。

       步骤3:通过迭代求博弈均衡解集

       这一步就是按照第三节的内容,迭代求博弈均衡解。这一步比较简单,编程时注意公式不要出错即可。

       步骤4:输出结果,绘制图像

       文中算例分析中的结果有两类,一类是迭代收敛曲线,如原文中的图3所示,只需要迭代一次,并展示迭代收敛曲线即可;另一类是用户选择结果随参数变化的曲线,需要进行多次迭代,展示的是不同参数下用户选择的结果。所以为了处理更方便,代码中可以使用不同的主函数。

       另外,由于原文中没有提供售电公司利润的计算公式,所以没办法求出售电公司的利润,因此图6的结果只有其中一部分。

4.完整Matlab代码

       完整的matlab代码付费后可以获取

5.运行结果分析

       由于原文中部分数据没有提供,因此仿真结果并不会完全相同,但原理是一样的,也可以自己修改数据得到不一样的结果。

5.1图1

5.2图2

5.3 图3

5.4图4

5.5 图5

5.6 图6

5.7 图7

相关文章
|
23天前
|
存储 人工智能 机器人
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
|
28天前
|
存储
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
|
3月前
|
机器学习/深度学习 算法 计算机视觉
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
30 2
|
4月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
4月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)
|
4月前
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
|
4月前
【数值分析】二分法求方程的根(附matlab代码)
【数值分析】二分法求方程的根(附matlab代码)
|
3月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
40 0
|
3月前
|
算法
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
91 0
|
3月前
|
算法
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维griddata插值法 | 附数据和出图代码 | 直接上手
44 0

热门文章

最新文章