(文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
参考文献:
[1]潘虹锦,高红均,杨艳红,等.基于主从博弈的售电商多元零售套餐设计与多级市场购电策略[J].中国电机工程学报,2022,42(13):4785-4800.
1.摘要
随着电力市场改革的发展,如何制定吸引用户选择的多类型零售套餐成为提升售电商利润的研究重点。为此该文结合激励手段和价格信号为售电商设计了多类提升市场竞争力的零售套餐,并基于多时间尺度、多交易类型的市场背景为其提出购电策略。首先,搭建售电商与多元用户之间的主从博弈架构,分析售电商参与日前、月度、年度多级市场下与发电商、电力交易中心等主体之间的多种购电交易类型,设计峰谷分时电价、昼夜用电捆绑、峰谷惩罚补偿、阶梯递增电价、固定单一电价 5 种月度零售套餐。其次,分别以考虑风险因素的售电商效益最大化、多元用户自身综合满意度最大化为目标,构建主方购售电组合决策模型和从方零售套餐选择模型,并阐述主从博弈互动过程。接着,采用粒子群优化算法和 CPLEX 优化软件求解模型的纳什均衡解。最后,利用算例仿真验证主从博弈模型的迭代求解具有较好的收敛性,多级市场购电策略和多元零售套餐的提出有利于售电商提升自身利润的同时提高用户满意度,从而扩大市场份额。
2.原理介绍
2.1 多级市场购电与多元零售套餐设计
售电商在参与电力市场竞争的过程中既要参与多级时间尺度市场进行购电,同时需要设计适应不同类型用户的多元零售套餐,以提升市场份额。在购电侧,本文重点考虑售电商参与日前、月度、年度多级市场,其中月度和年度市场往往签订双边合约,而期权、期货合同等双边交易类型可以有效控制市场风险,因此考虑售电商与发电商签订月度期权合同和年度期货合同。同时售电商还可以与其他售电商签订月度电力转让交易合同,以减轻双方的营业风险。在日前市场,售电商通过集中竞价交易的方式购电,主要用于填补中长期交易以外的电量差额,规避高额偏差考核费用的风险。在售电侧,本文主要设计多元零售套餐以适应具有不同用电特性的电力用户,提升用户满意度。售电商参与购售电交易的过程中,与代表需求侧利益的多个终端用户间存在主从博弈关系,构成一主多从的博弈格局。含售电商参与的主从博弈架构如图 1 所示。
2.2 主从博弈模型
2.2.1 主方(售电商)购售电组合决策模型
(1) 目标函数
售电商通过参与年度、月度和日前多级时间尺度市场组合购电,以及基于价格和激励的需求响应设计多元零售套餐组合售电,提升自身利润,实现自身效益最大化。同时,由于日前市场电价的不确定性,售电商可能面临一定的风险损失,因此本文利用条件风险价值法对售电商进行风险评估,并以考虑风险因素的售电商效益最大化为目标,构建了基于需求响应的售电商购售电组合决策模型,数学表达如下:
(2)约束条件
售电商在参与市场竞争制定购售电策略的过程中需要考虑购售电量平衡约束、期货与转让交易约束、日前市场交易约束、套餐价格约束和风险水平约束。
1)购售电量平衡约束
2)各交易机制的购电量约束。
3)套餐价格约束。
4)风险约束。
2.2.2 从方(用户)零售套餐选择模型
(1) 目标函数
针对于需求侧终端用户,本文以不同套餐下的自身综合用电满意度最大为目标进行套餐选择和用电方式的决策,数学表达如下:
(2) 约束条件
用户在选择零售套餐以提升用电综合满意度的同时,需考虑用电量上下限约束:
2.2.3 主从博弈数学模型
主从博弈结构可由以下数学模型表达:
含售电商参与的主从博弈互动过程可描述为:售电商结合供给侧各主体制定的多级市场出清电价和用户初始负荷需求曲线,根据考虑风险因素的自身效益最大化原则,确定各级市场的购电量,并制定多元零售套餐的价格参数下发给用户;各用户结合自身用电特性,基于自身综合用电满意度最大化原则,确定所选套餐类型与各时段的用电量上报给售电商;售电商根据各用户上报数据,结合自身利润、风险重新制定各级市场购电量和多元零售套餐价格参数与用户进行二次博弈互动,如此进行迭代求解直到售电商、用户二者均达到自身目标的最值,且任何一方交易主体策略的改变不会导致另一方交易主体改变自身策略时,才能得到博弈互动的最优决策方案,即纳什均衡解。
2.3 主从博弈模型求解方法
粒子群优化算法具有原理简单容易实现、收敛速度较快、需要调整的参数较少等特点,且有一定的记忆性和进化性,能完整保存迭代过程中所有粒子的局部最优解和全局最优解,对分析具体的博弈互动过程有一定的帮助。
粒子群优化算法还可以根据算子更新个体历史最优和群体全局最优,对于本文而言能较好的模拟售电商与用户间博弈互动的过程,同时个体和群体的协同优化有助于快速寻找博弈的均衡解。因此本文考虑采用粒子群优化算法和 Matlab2016a平台下YALMIP工具箱中CPLEX12.6优化软件相结合的方法求解模型的纳什均衡解。对于主方售电商,既采用粒子群优化算法,以售电商利润为纳什适应度函数,求解迭代过程中的最优多元零售套餐参数,又采用CPLEX求解售电商最优多级市场购电策略;对于从方用户,则直接采用CPLEX求解用电策略,保证解的计算效率。模型求解步骤如图 4 所示。
3.编程思路
3.1参数和变量定义
3.2编程思路
根据对文献内容的解读,可以设计下面的编程思路:
步骤1:输入所需数据
这一步比较简单,所需数据文中基本都已给出,按照表1的格式输入matlab中即可,没有给定的参数可以自己假设一个合理的数值。
步骤2:定义上层套餐价格的决策变量
这一步需要按照表2,初始化粒子群算法的决策变量,可以写成下面的形式:
决策变量共有11个,可知粒子群算法的空间维度为11。此外,套餐价格还需满足一定约束条件,主要包括:
- 平时段电价和固定单一电价相等。
- 峰时段电价应高于谷时段电价。
- 白天电价应高于夜间电价。
- 峰谷惩罚补偿套餐的基准电价和固定单一电价相同。
- 阶梯递增电价套餐中第1档电价<第2档电价<第3档电价
相等的电价,可以通过减少决策变量来实现,其他的约束可以通过修复粒子的位置进行实现。减少后的决策变量如下:
其中决策变量共有9个,粒子群算法的空间维度为9。
步骤3:编写用户套餐优选子程序
用户套餐优选子程序,就是需要根据售电商设定的套餐价格,确定使用户满意度最高的套餐选择方案。原文中提到,用户的决策变量只有Qit。但实际上计算用户用电成本时涉及到一些判断项目,需要引入中间变量,因此实际优化中决策变量的数目更多。
步骤4:编写售电商优化子程序
售电商优化子程序就是通过参与年度、月度和日前多级时间尺度市场组合购电,以及基于价格和激励的需求响应设计多元零售套餐组合售电,提升自身利润,实现自身效益最大化。
步骤5:迭代求主从博弈最优解
通过编写粒子群算法主程序,迭代求主从博弈的最优解。文献中并未解释粒子群算法的适应度函数是如何选取的,代码中使用了归一化的用户满意度和售电商利润作为粒子群算法适应度函数。同时设定了连续5次博弈结果误差不超过0.0001时,认为博弈结束,可以输出结果。
4.matlab代码
文件中共有6个m文件和2个mat文件,功能分别如下:
4.1 main_PSO.m
代码的主程序,运行即可得到优化结果。初始设定种群数为50,最大迭代次数为70,大约需要5小时得到结果。种群数和迭代次数可以调整。
4.2 fitnessfun.m
计算适应度函数。
4.3 main_price.m
使用蒙特卡洛模拟法得到典型电价场景。
4.4 repair_pop.m
对于不满足约束的粒子进行修复。
4.5 sub_retailer.m
售电商优化子程序。
4.6 sub_user.m
用户优化子程序。
5.代码运行结果
6.代码获取方式
(文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略matlab代码资源-CSDN文库
相关文章:

(文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
参考文献: [1]潘虹锦,高红均,杨艳红,等.基于主从博弈的售电商多元零售套餐设计与多级市场购电策略[J].中国电机工程学报,2022,42(13):4785-4800. 1.摘要 随着电力市场改革的发展,如何制定吸引用户选择的多类型零售套餐成为提升售电商利润的研究重点。为…...
深度评价GPT-4o:探索人工智能的新里程碑
在人工智能领域,OpenAI的GPT系列自推出以来就备受瞩目。GPT-4o作为该系列的最新版本,无疑是迄今为止最为强大的一代。它不仅在技术性能上有了质的飞跃,而且在应用的广泛性和深度上都展现出了惊人的潜力。本文将从版本对比、技术能力、使用体验…...

Linux命令篇(六):vi/vim专项
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝您生活愉快! 文章目录 一、什么是vim二…...

Java 还能不能继续搞了?
金三银四招聘季已落幕,虽说行情不是很乐观,但真正的强者从不抱怨。 在此期间,我收到众多小伙伴的宝贵反馈,整理出132道面试题,从基础到高级,有八股文,也有对某个知识点的深度解析。包括以下几部…...

【日记】遇到了一个很奇怪的大爷(845 字)
正文 花了昨天和今天两天时间,把数据转移完了。这块 2T 的硬盘可以光荣退休了。目前是没什么存储焦虑了。 农发行净开发一些垃圾系统。今天没什么业务,但跟 ActiveX 斗智斗勇了一整天,最后实在搞不过 IE 浏览器。我也懒得管了,又不…...

Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明
Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明 目录 Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明 一、简单介绍 二、处理文本数据 三、用…...

GAT1399协议分析(10)--视频定义及解析
一、官方定义 二、字段解析 VideoID 类型BasicObjectID 解析参考GAT1399协议分析(8)--ImageInfo字段详解-CSDN博客 InfoKind 采集类型...

【C语言】学生管理系统:完整模拟与实现
🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 🔥引言 本篇文章为修改了在校期间实训报告,使用C…...

pypi 发布自己的包
注册pypi个人用户 网址:https://pypi.org 目录结构dingtalk_utils 必须-pkgs- __init__.py .gitignore LICENSE 必须 README.md 必须 requirements.txt setup.py 必须安装依赖 pip install setuptools wheel安装上传工具 pip install twinesetup.py i…...

关闭windows11磁盘地址栏上的历史记录
关闭windows11的磁盘地址栏上的历史记录 windows11打开磁盘后访问某一个磁盘路径后会记录这个磁盘路径,而且有时候会卡住这个地址栏(关都关不掉),非常麻烦。 如下图所示: 关闭地址栏历史记录 按下windows键打开开…...

DDS自动化测试落地方案 | 怿星科技携最新技术亮相是德科技年度盛会
5月28日,怿星科技作为是德科技的重要合作伙伴亮相Keysight World Tech Day 2024。在此次科技盛会上,怿星科技不仅展示了领先的DDS自动化测试解决方案等前沿技术,还分享了在“周期短、任务重”的情况下,如何做好软件开发和测试验证…...

新品!和芯星通全系统全频高精度板卡UB9A0首发
6月6日,和芯星通发布了UB9A0全系统全频高精度GNSS板卡,主要应用于CORS站、便携基站、GNSS全球监测跟踪站等。延续了上一代产品高质量原始观测量的特点,UB9A0在性能和稳定性方面均表现出众。 UB9A0基于射频基带及高精度算法一体化的GNSS SoC芯…...

Cognita RAG:模块化、易用与可扩展的开源框架
Cognita RAG是一个开源框架,它通过模块化设计、用户友好的界面和可扩展性,简化了将领域特定知识整合到通用预训练语言模型中的过程。本文介绍了Cognita的特点、优势、应用场景以及如何帮助开发者构建适合生产环境的RAG应用程序。 文章目录 Cognita RAG介…...

linux虚拟机免密登录配置
1、假设A服务器要免密登录B服务器 2、在A服务器上执行命令: cd /root/.ssh/ ssh-keygen -t rsa #这里会生成两个文件 一个是id_rsa私钥和公钥rsa.pub2、我们把公钥的内容复制粘贴到B服务器的/root/.ssh/authorized_keys文件下 #在A服务器上执行命令记录内容 cat …...

Qt_C++ RFID网络读卡器Socket Udp通讯示例源码
本示例使用的设备: WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QHostInfo> #include <QNetworkInterface> #include <…...
C++ 实现Python 列表list 的两种方法
1、vector里面放多种参数。在C中,如果你想要在std::vector中存储不同类型的参数,你可以使用std::any(C17及以上)或std::variant(C17以前的版本需要使用Boost库或者C17及以上标准)。以下是使用std::vector&l…...

vue3+ elementPlus PC端开发 遇到页面已进入就form校验了的问题
form表单一进页面就校验了 rules里配置的 require 提示语 如图所示代码是这样的 最后发现是form表单下面的一个按钮的展示规则 会导致规则校验 canAddInsured 这个字段的变化会导致form表单校验 这个字段是computed maxInsureds 也是个computed监听 maxInsured.value >1 就…...
transformers DataCollator介绍
本博客主要介绍 transformers DataCollator的使用 from transformers import AutoTokenizer, AutoModel, \DataCollatorForSeq2Seq, DataCollatorWithPadding, \DataCollatorForTokenClassification, DefaultDataCollator, DataCollatorForLanguageModelingPRETRAIN_MODEL &qu…...

rust学习(字节数组转string)
最新在写数据传输相关的操作,发现string一个有趣的现象,代码如下: fn main() {let mut data:[u8;32] [0;32];data[0] a as u8;let my_str1 String::from_utf8_lossy(&data);let my_str my_str1.trim();println!("my_str len is…...

Docker:技术架构演进
文章目录 基本概念架构演进单机架构应用数据分离架构应用服务集群架构读写分离/主从分离架构冷热分离架构垂直分库微服务容器编排架构 本篇开始进行对于Docker的学习,Docker是一个陌生的词汇,那么本篇开始就先从技术架构的角度出发,先对于技术…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...