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

news2024/11/15 8:24:09

参考文献:

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

1.基本原理

1 .1演化博弈

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

        在一个总体规模很大的群体中,每个个体策略集相同,从群体中随机选取两个个体进行博弈,对任意一个个体,他与从总体中随机选取的个体博弈,和与采用混策略的个体博弈是等价的,群体的总体状态在形式上等同于混策略[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为用电平均价格,对用户来说用电平均价格越小越好,也就是一个负向指标,采用下面的方式进行标准化:

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

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

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

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

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

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

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

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

4.完整Matlab代码

        完整的matlab代码可以下面的链接获取:

https://download.csdn.net/download/weixin_44209907/88052219

5.运行结果分析

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

5.1图1

5.2图2

 5.3 图3

5.4图4  

5.5 图5 

 

5.6 图6 

5.7 图7 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端】网页开发精讲与实战 CSS Day 4

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:前端 💬总结:希望你看完之后,能对你有…

Vue+Ts+Echart使用以及后台接口对接逻辑【实战】

官网传送门 一.echarts介绍 是一个js插件 性能好可流畅远行PC和移动设备 兼容主流浏览器 提供很多图标,用户且可自行修改。 2.使用npm安装 npm install echarts二.echarts基本使用、自定义图例、选择7天日期查询图表数据内容 获取本地时间以及当前时间前几天后几天 /*** 获…

安装Visual Studio Installer Projects 2022插件

VS主界面--扩展--管理扩展--搜索VS插件“Visual Studio Installer Projects 2022”并安装。

JavaWeb(5)——HTML、CSS、JS 快速入门

一、JavaScript 对象 二、JavaScript BOM对象 和 DOM对象 关于BOM主要对 Window 和 location 进行说明&#xff1a; 三、JavaScript 事件监听 事件绑定 常见事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">…

ORA-01122 ORA-01208 故障处理---惜分飞

数据库突然故障ORA-01122 ORA-01208,导致实例crash Tue Jul 11 09:06:43 2023 Thread 1 cannot allocate new log, sequence 254989 Private strand flush not complete Current log# 3 seq# 254988 mem# 0: E:\APP\ADMINISTRATOR\ORADATA\xff\REDO03.LOG Thread 1 advanced …

23款奔驰E300加装原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶&#xff0c;可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出&#xff0c;并且在关闭后能够立刻散去。车内气味不会永久改变&#xff0c;香氛…

javascript(js)组成及使用

组成&#xff1a; js是由核心ECMAScript、文档对象模型DOM、浏览器对象模型BOM三部分组成。 ECMAScript&#xff1a;定义了语言的语法、类型、语句、关键字、保留字、操作符、对象。有普通模式和严格模式的区分。文档对象模型(DOM)&#xff1a;由XML经过扩展用于HTML的应用程序…

代码随想录算法学习心得 45 | 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组...

一、最长递增子序列 链接&#xff1a;力扣 描述&#xff1a;给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c…

Android 开发规范(基础版)

背景 项目的代码时间时间很长,经过太多人手,代码的规范性堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高。 分析现有项目的代码的情况,输出的『定制化规范』文档,用于提高代码的可读性和可维护性。 收益 对于个人:帮助团队写「…

最长递增子序列(力扣)动态规划 JAVA

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1&#xf…

路径规划算法:基于袋獾优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于袋獾优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于袋獾优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法袋獾…

【vueJs源码】阅读之vm.$watch函数

我们经常使用watch肯定知道它&#xff0c;他和computer一样都是数据发生变化都会触发它。今天我们就来了解一下它的原理。 他的用法 Vue.prototype.$watch function (expOrFn: string | (() > any),cb: any,options?: Record<string, any> ): Function这是vuejs源…

Redis数据类型 — String

目录 String类型的内部编码 存储字符串采用两种编码方式的优缺点 选择SDS的原因 存储整数型采用OBJ_ENCODING_INT的原因 String 类型的底层的数据结构实现主要是 long 和 SDS&#xff08;简单动态字符串&#xff09; 数据结构&#xff1a;SDShttps://blog.csdn.net/weixin…

六种最新智能优化算法(LSO、SWO、ZOA、EVO、KOA、GRO)求解23个基准测试函数(含参考文献及MATLAB代码)

一、六种算法简介 &#xff08;1&#xff09;光谱优化算法LSO 光谱优化算法&#xff08;Light Spectrum Optimizer&#xff0c;LSO&#xff09;由Mohamed Abdel-Basset等人于2022年提出。 参考文献&#xff1a;Abdel-Basset M, Mohamed R, Sallam KM, Chakrabortty RK. Light…

单链表基本操作(java)

单链表 一.自定义链表类二.自定义节点类三.链表中的基本方法1.头插法2.尾插法3.在任意位置插入4.删除第一次的关键字为key的节点5.删除所有关键字为key的元素6.是否包含关键字key7.获取链表长度8.遍历节点并输出9.清空链表 一.自定义链表类 public class MySingleList {Node h…

vue+element Cascader 级联选择器 > 实现省市区三级联动

vueelement Cascader 级联选择器 > 实现省市区三级联动 先看下实现效果吧&#xff08;嘻嘻&#xff09; 看完我们就开始啦 安装element-china-area-data1 npm install element-china-area-data5.0.2 -S上代码 <el-cascadersize"large":options"options…

我的创作纪念日-静下来走一段路

静下来走一段路 机缘 前段时间收到了公司发的入职周年庆典的邮件&#xff0c;发觉已经在程序员的工作上走了这么多年了。 原本想写些东西只是为了生成一些可供自己反复查看的笔记&#xff0c;后来为了督促自己学习&#xff0c;博客越学越多。 回忆起我写的第一篇博客《芯片、模…

移动端开发框架mui之上拉刷新、下拉加载数据(选项卡左右移动自动和刷新指定选项卡内容)

移动端开发框架mui之上拉刷新、下拉加载数据&#xff08;加载多选项卡数据&#xff09; 之前的代码&#xff1a; <!doctype html> <html><head><meta charset"utf-8"><title></title><meta name"viewport" cont…

JVM内存结构—— 程序计数器,虚拟机栈 解析

JVM的内存结构 1. 程序计数器(PC Register )寄存器 1.1 全称:Program Counter Register 1.2 作用 首先,java源代码 被 编译成 二进制的 字节码 (jvm指令) jvm跨平台就是这一套指令,linux 下,windows下指令都是一致的 指令 经过 解释器 把每一条指令 解释成 机器码…

在Vue中如何根据下拉框选中的值 展示不同的输入框

大纲&#xff1a; &#x1f333; 1、怎么根据下拉框中选中的值展示不同的输入框呢&#xff1f; 我们可以使用change事件来进行处理。当我们选中收费类型的其中一个就触发change事件&#xff0c;然后根据选中的value值&#xff0c;对数据进行展示与隐藏 即可。 &#x1f951; …