参考文献:
[1]孙云涛,宋依群,姚良忠等.售电市场环境下电力用户选择售电公司行为研究[J].电网技术,2018,42(04):1124-1131.
1 .基本原理
演化博弈理论是一门研究动态系统中不同个体之间相互作用和适应性变化的数学模型。在这个理论中,个体之间的相互作用被看作是博弈,而适应性变化则涉及个体的策略选择。演化博弈理论的目标是解决在群体中个体之间如何互动的问题。首先,我们来了解一下重要的概念,即个体、策略和支付。个体是指参与博弈的实体,可以是生物个体、人类个体或者其他群体中的个体。每个个体都有一个策略集,策略是个体在博弈中可能采取的行动或决策。最后,支付是用来衡量个体之间互动效果的一种方式,可以是个体获得的奖励、效用或者其他形式的反馈。在演化博弈中,个体的策略选择是根据其适应性的表现来进行的。适应性是个体在特定环境中的生存和繁衍能力,可以通过支付来衡量。个体的适应性将决定哪些个体在繁衍过程中生存下来。适应性较强的个体将有更大的机会繁衍后代,从而传递自己的策略。在演化博弈中,个体之间的相互作用通常采用博弈模型来描述。常见的博弈模型包括囚徒困境、鹰-鸽博弈和合作博弈等。在这些模型中,个体可以选择不同的策略来应对他人的策略选择。不同的策略组合将导致不同的支付结果,从而影响个体在演化过程中的命运。利用演化博弈理论,我们可以通过模拟和计算来预测在特定群体中不同策略的分布情况,以及在长期演化中这些分布的变化趋势。这些预测可以为我们提供深入理解群体行为,并帮助我们研究如何在群体中促进合作、解决冲突等问题提供指导。总而言之,演化博弈理论提供了一个分析和解释个体之间互动行为的框架。通过理解个体的适应性、策略选择和相互作用,可以揭示出一些群体中博弈行为的规律,并为博弈参与者提供策略建议。
该文献采用了演化博弈的方法来描述用户选择售电公司的行为,用户的效用函数包括了售电合同竞争力(平均用电价格 B1、合同结构 B2)、 公司品牌竞争力(市场占有率 B3)、供电服务竞争力(供电可靠率 B4、附加增值服务 B5)等五项,采用层次分析法构建综合效用,具体内容这里不再赘述,可以自行下载文献查看。
2 用户选择售电公司的演化博弈模型
该文献演化博弈模型的修正协议采用logit模型,并将动态方程写成离散形式,采用分散迭代算法求解演化博弈均衡解,考虑到用户的忠诚度,对动态行为进行修正,具体内容这里不再赘述,可以自行下载文献查看。
3.编程思路分析
3. 1 演化博弈
电力系统领域最常见的论文就是解优化问题,定义决策变量,目标函数,约束条件,三板斧一用,调用求解器就能得到优化方案。但演化博弈的编程不太一样,整体框架上来看并不是求解优化问题的三板斧,而是求出博弈群体的状态。具体的概念和定义我这里不再赘述,感兴趣的小伙伴可以学习一下乔根·W·威布尔所著的《演化博弈论》。和往常一样,写出参数列表,方便对照编程:
表1 相关参数
3. 2 编程思路
根据对文献内容的解读,可以设计下面的编程思路:
步骤1:输入所需数据
算例分析用到的部分数据可以从原文中找到,部分没有给定的参数是自行设置 。然后将所有需要的数据,按照表1的定义格式输入即可。需要说明的是,文中已经给出了AHP法计算得到的指标权重,因此可以省略采用AHP法计算权重这一步骤。
步骤2: 实现计算用户效用的子函数
在所有的五个指标中,指标B2-B4计算比较简单,比较麻烦的就是指标B1平均用电价格,需要按照文献中给的公式完成计算。另外,文献中场景比较多,可以在计算用户效用的子函数中加入更多的输入参数,这样处理的话,场景变化时只需要修改参数就行,不需要更改子函数的内容。
另外,指标B1和B3需要标准化到[0,10]的区间,但文中没有具体给出区间转换的方式,我在代码中是这样处理的:
指标B1为用电平均价格,对用户来说用电平均价格越小越好,也就是一个负向指标,采用下面的方式进行标准化:
最小的用电平均价格取最大值为10,其他用电价格按大小不同折算到[0,10]的区间。
指标B3为市场占有率,是一个[0,1]的指标,所以只需要把初始的B3×10就可以折算到[0,10]的区间内。
这样处理,就可以把所有的指标都折算到[0,10]的区间内,同时都为正向指标,即对用户来说越大越好。
步骤3:通过迭代求博弈均衡解集
这一步就是按照第三节的内容,迭代求博弈均衡解。这一步比较简单,编程时注意公式不要出错即可。
步骤4:输出结果,绘制图像
文中算例分析中的结果有两类,一类是迭代收敛曲线,如原文中的图3所示,只需要迭代一次,并展示迭代收敛曲线即可;另一类是用户选择结果随参数变化的曲线,需要进行多次迭代,展示的是不同参数下用户选择的结果。所以为了处理更方便,代码中可以使用不同的主函数。
另外,由于原文中没有提供售电公司利润的计算公式,所以没办法求出售电公司的利润,因此图6的结果只有其中一部分。
4. 完整 M atlab代码
完整的matlab代码可以下面的链接获取:
https://download.csdn.net/download/weixin_44209907/88052219
5. 运行结果分析
由于原文中部分数据没有提供,因此仿真结果并不会完全相同,但原理是一样的,也可以自己修改数据得到不一样的结果。