基于非合作博弈的风-光-氢微电网容量优化配置(matlab代码)

目录

1 主要内容

模型架构图

目标函数

非合作博弈流程

2 部分代码

3 程序结果

4 下载链接


主要内容

该程序复现《基于非合作博弈的风-光-氢微电网容量优化配置》,程序包含3种场景,场景1中包含风电、光伏和制氢-储氢-发电3种分布式电源,而场景2中仅包含风电和光伏,场景3中包含风电和制氢-储氢-发电。(通过设置相应的变量为0来实现对比场景)

以风电、光伏和制氢-储氢-发电系统 3 个投资方作为博弈主体,并以各投资方收益最大化为优化目标,建立基于非合作博弈的风-光-氢微电网容量优化配置模型。考虑各博弈参与者的投资成本、运维成本、购售电成本、弃风弃光惩罚费用和负荷中断惩罚费用等经济因素,利用粒子群算法对各博弈参与者的容量配置进行单独优化,确定各博弈参与者收益最大化的 Nash 均衡点。程序采用matlab编写,无需其他软件包,注释清楚,方便学习!

模型架构图

  • 目标函数

1.投资成本
2.运维成本
3.购电成本
4.售电收益
5.弃风弃光成本
6.负荷中断补偿成本
7.补贴电价
%% 1.投资费用
f=(r*(1+r)^m)/(((1+r)^m)-1);
C_wt_inv=num_WT*P_wt*e_wt*f*(1/12); %风机的月投资费用
C_pv_inv=num_PV*P_pv*e_pv*f*(1/12); %光伏的月投资费用
C_h_inv=(num_FC*P_fc*e_fc*f+num_HST*V_hst*e_hst*f+num_EC*W_EC*e_ec*f)*(1/12); %制氢-储氢-发电系统的月投资费用
%% 2.运维成本
y_wt=0.01; %风电运维成本占总投资成本的比例
C_wt_run=y_wt*C_wt_inv; %风机的月运行维护成本
y_pv=0.001; %光伏运维成本占总投资成本的比例
C_pv_run=y_pv*C_pv_inv; %光伏的月运行维护成本
y_h=0.01;%制氢-储氢-发电系统运维成本占总投资成本的比例
C_h_run=y_h*C_h_inv;%制氢-储氢-发电系统的月运行维护成本
%% 3.购售电费用、弃风弃光费用、负荷中断补偿费用
p=Load-(num_WT*P_wind+num_PV*pv_end);
E_hst=zeros(1,721);
E_hst(1)=E_hst_init;
P_FC=zeros(1,720);
P_EC=zeros(1,720);
for i=1:720  
    if p(i)>0
        
        if p(i)<(num_FC*P_FC_max) %判断p是否小于燃料电池的总功率
            P_FC(i)=p(i);
        elseif p(i)>(num_FC*P_FC_max)
            P_FC(i)=(num_FC*P_FC_max);
        end
        E_hst(i+1)=E_hst(i)-(P_FC(i)*W_g2p)/(a*eff_g2p);
        if  E_hst(i+1)<=0 %判断储氢罐的储氢量是否被消耗完
            P_FC(i)=0;
            E_hst(i+1)=E_hst(i);%恢复到上一次的状态
        end
    elseif p(i)<0
        
        if abs(p(i))<(num_EC*P_EC_max) %判断p是否小于电解槽的总功率
            P_EC(i)=abs(p(i));
        elseif abs(p(i))>(num_EC*P_EC_max)
            P_EC(i)=(num_EC*P_EC_max);
        end
         E_hst(i+1)=E_hst(i)+P_EC(i)*a*eff_p2g*W_p2g;
        if  E_hst(i+1)>=E_hst_all %判断储氢罐的储氢量是否超过最大容量
            P_EC(i)=0;
            E_hst(i+1)=E_hst(i);%恢复到上一次的状态
        end
        
    end  
end
P_H=P_FC-P_EC; %求取氢储系统的实际交换功率
P_EL=Load-(num_WT*P_wind+num_PV*pv_end+P_FC);%求取等效负荷
P_buy=zeros(1,720);
P_waste_wt=zeros(1,720);
P_waste_pv=zeros(1,720);
P_break=zeros(1,720);
P_exc=zeros(1,720);
P_wt_se=zeros(1,720);
P_pv_se=zeros(1,720);
P_max=zeros(1,720);
P_s=zeros(1,720);
for i=1:720
    P_max(i)=P_EC(i)+Load(i)+P_grid;
    P_exc(i)=num_WT*P_wind(i)+num_PV*pv_end(i)-P_max(i);
    if P_EL(i)>0  %购电
          if  P_EL(i)< P_grid
              P_buy(i)=P_EL(i);
          elseif P_EL(i)> P_grid
              P_buy(i)=P_grid;
              P_break(i)=P_EL(i)-P_grid; %需要中断的负荷
          end
    elseif P_EL(i)<0  %售电
          if P_exc(i)<=0
              P_wt_se(i)=num_WT*P_wind(i);
              P_pv_se(i)=num_PV*pv_end(i);
              if (P_wt_se(i)+P_pv_se(i))>(P_EC(i)+Load(i))
              P_s(i)=(P_wt_se(i)+P_pv_se(i))-(P_EC(i)+Load(i));
              end
          elseif P_exc(i)>0
              P_wt_se(i)= (num_WT*P_wind(i)*P_max(i))/(num_WT*P_wind(i)+num_PV*pv_end(i));
              P_pv_se(i)= (num_PV*pv_end(i)*P_max(i))/(num_WT*P_wind(i)+num_PV*pv_end(i));
              P_waste_wt(i)= num_WT*P_wind(i)-P_wt_se(i);
              P_waste_pv(i)= num_PV*pv_end(i)-P_pv_se(i);
              P_s(i)=P_grid;
          end
    end
end
p_waste=zeros(1,720);
for i=1:720
   if P_exc(i)>=0
      p_waste(i)=P_exc(i);  
   end
end
% 1)购电成本
 C_buy_wt=(c_buy*sum(P_buy)*num_WT*P_wt)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%风电博弈参与者的购电成本
 C_buy_pv=(c_buy*sum(P_buy)*num_PV*P_pv)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%光伏博弈参与者的购电成本
 C_buy_fc=(c_buy*sum(P_buy)*num_FC*P_fc)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%燃料电池博弈参与者的购电成本
% 2)售电收益
C_sell_wt=c_buy*sum(P_wt_se);%风电博弈参与者的售电收益
C_sell_pv=c_buy*sum(P_pv_se);%光伏博弈参与者的售电收益
C_sell_fc=c_buy*sum(P_FC)+0.5*sum(P_EC)*eff_p2g*W_p2g*c_se_o2;%燃料电池博弈参与者的售电收益+卖氧气
% 3)弃风弃光成本
C_waste_pv=c_waste*sum(P_waste_pv);%光伏博弈参与者的弃风弃光费用
C_waste_wt=c_waste*sum(P_waste_wt);%风电博弈参与者的弃风弃光费用
% 4)负荷中断补偿成本
C_break_wt=(c_break*sum(P_break)*num_WT*P_wt)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%风电博弈参与者的负荷中断补偿费用
C_break_pv=(c_break*sum(P_break)*num_PV*P_pv)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%光伏博弈参与者的负荷中断补偿费用
C_break_fc=(c_break*sum(P_break)*num_FC*P_fc)/(num_WT*P_wt+num_PV*P_wt+num_FC*P_fc);%燃料电池参与者的负荷中断补偿费用
% 5)补贴电价
C_subsidy_wt=c_sub_wt*num_WT*sum(P_wind);
C_subsidy_pv=c_sub_pv*num_PV*sum(pv_end);
C_subsidy_h=c_sub_h*sum(P_EC);
  • 非合作博弈流程

由此可以看出,非合作博弈模型并不复杂,寻找纳什均衡点的过程也很清晰,大家在做模型的过程中也可以通过设置策略提高深度,该文献就是一个很好的参考。

部分代码

%%
%设定均衡点初值                                                                                                                                                                                                       
PV0=0;%光伏组件的初始个数
WT0=7;%风机的初始台数
EC0=5;%电解槽的初始个数
HST0=6;%储氢罐的初始个数
FC0=9;%燃料电池的初始个数
​
%%
%各博弈参与者或联盟依次进行独立优化决策
%此处选用粒子群算法作为优化算法
%此处以多目标优化问题为例,从博弈的角度来求解收益的最大值Uwt、Upv、Uh
%参数初始化
c1=3;                %个体学习因子
c2=3;                %社会学习因子
w_max=0.9;           %设置最大惯性权重为0.9
w_min=0.4;           %设置最小惯性权重为0.4
​
max_die_dai=30;      %迭代次数设置为100
size_zhong_qun=50;   %粒子种群规模设置为100
​
PV_N=randi(2650,size_zhong_qun,1);  %初始化粒子PV的位置
WT_N=randi(22,size_zhong_qun,1);    %初始化粒子WT的位置
EC_N=randi(16,size_zhong_qun,1);    %初始化粒子EC的位置
HST_N=randi(20,size_zhong_qun,1);   %初始化粒子HST的位置
FC_N=randi(110,size_zhong_qun,1);   %初始化粒子FC的位置
​
​
v_PV=3.*rands(size_zhong_qun,1);    %初始化粒子PV的飞翔速度
v_WT=3.*rands(size_zhong_qun,1);    %初始化粒子WT的飞翔速度
v_h=3.*rands(size_zhong_qun,3);     %初始化粒子EC的飞翔速度
​
%定义适应度函数
for i=1:size_zhong_qun
  f_wt(i,:)=fitness(WT_N(i,:),PV0,EC0,HST0,FC0,1); %序号1代表fitness函数当前返回wt的收益
end
for i=1:size_zhong_qun
  f_pv(i,:)=fitness(WT0,PV_N(i,:),EC0,HST0,FC0,2); %序号1代表fitness函数当前返回pv的收益
end
for i=1:size_zhong_qun
  f_h(i,:)=fitness(WT0,PV0,EC_N(i,:),HST_N(i,:),FC_N(i,:),3); %序号1代表fitness函数当前返回h的收益
end
​
%最大速度值过大,容易导致越过最优区域,值过小,容易陷入局部最优
v_PV_max=3;                                        %速度最大值为3
v_PV_min=-3;                                       %速度最小值为-3
v_WT_max=3;                                        %速度最大值为3
v_WT_min=-3;                                       %速度最小值为-3
v_H_max=3;                                        %速度最大值为3
v_H_min=-3;                                       %速度最小值为-3
​
PV_N_max=5000;                                     %种群PV中个体位置的最大值
PV_N_min=10;                                        %种群PV中个体位置的最小值
WT_N_max=50;                                       %种群WT中个体位置的最大值
WT_N_min=1;                                        %种群WT中个体位置的最小值
EC_N_max=30;                                       %种群EC中个体位置的最大值
EC_N_min=2;                                        %种群EC中个体位置的最小值
HST_N_max=40;                                      %种群HST中个体位置的最大值
HST_N_min=1;                                       %种群HST中个体位置的最小值
FC_N_max=200;                                      %种群FC中个体位置的最大值
FC_N_min=4;                                        %种群FC中个体位置的最小值
​
%群体中个体的最佳位置随着迭代的进行而不断发生变化
personal_best_local_x=WT_N;                               %种群wt中每个个体的最佳位置,随着迭代的进行,数值将会发生改变
personal_best_value_x=f_wt;                               %种群wt中每个个体的最佳适应度值
[global_best_value_x,i]=max(personal_best_value_x);       %计算出当前的全局最佳值和最佳值所对应的位置
global_best_local_x=personal_best_local_x(i,:);           %当前的全局最佳位置
​

程序结果

4 下载链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx 模块 高级配置

目录 一、高级配置 1.1. 网页的状态页 1.2.Nginx 第三方模块 ehco 模块 打印 1.3.变量 1.3.1 内置变量 1.3.2自定义变量 1.4.Nginx压缩功能 1.5.https 功能 1.6.自定义图标 一、高级配置 1.1. 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&…

探索 SPA 与 MPA:前端架构的选择与权衡

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

面试必问但日常不愿意看的题

1&#xff0c;做道 this 相关的题&#xff0c;看你对 js 的 this 掌握的如何2&#xff0c;BFC 这样答才完美 1&#xff0c;什么是 BFC&#xff1f;其规则是什么&#xff1f;2&#xff0c;如何触发 BFC3&#xff0c;BFC 到底可以解决什么问题呢3&#xff0c;作用域4&#xff0c;…

便携式森林消防灭火泵:森林安全的守护者

在自然环境中&#xff0c;森林是地球生态系统的重要组成部分&#xff0c;它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而&#xff0c;当森林发生火灾时&#xff0c;它们也会成为我们的噩梦。火势蔓延迅速&#xff0c;难以控制&#xff0c;对森林和生态环境造成严…

星际争霸之小霸王之小蜜蜂(一)--窗口界面设计

目录 前言 一、安装pygame库 1、pygame库简介 2、在windows系统安装pygame库 二 、搭建游戏框架 1、创建游戏窗口 2、改变窗口颜色 总结 前言 大家应该都看过或者都听说过python神书“大蟒蛇”&#xff0c;上面有一个案例是《外星人入侵》&#xff0c;游戏介绍让我想起了上…

深度学习 精选笔记(5)多层感知机

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

【漏洞复现】鸿运(通天星CMSV6车载)主动安全监控云平台存在敏感信息泄露漏

漏洞描述 鸿运(通天星CMSV6车载)主动安全监控云平台实现对计算资源、存储资源、网络资源、云应用服务进行7*24小时全时区、多地域、全方位、立体式、智能化的IT运维监控,保障IT系统安全、稳定、可靠运行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法…

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装介绍watchdog使用python--dotenv使用&#xff08;操作环境变量&#xff09; 七、虚拟环境介绍Mac/linux创建虚拟环境…

个人建站前端篇(七)vite + vue3企业级项目模板

一、vite命令行创建项目 npm create vitelatest根据提示选择模板&#xff0c;选择vite vue3 ts即可。 二、项目连接远程仓库 git init git remote add origin https://gitee.com/niech_project/vite-vue3-template.git git pull origin master git checkout -b dev三、项目…

《大模型时代-ChatGPT开启通用人工智能浪潮》精华摘抄

原书很长&#xff0c;有19.3w字&#xff0c;本文尝试浓缩一下其中的精华。 知识点 GPT相关 谷歌发布LaMDA、BERT和PaLM-E&#xff0c;PaLM 2 Facebook的母公司Meta推出LLaMA&#xff0c;并在博客上免费公开LLM&#xff1a;OPT-175B。 在GPT中&#xff0c;P代表经过预训练(…

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集 一、算法原理二、代码三、结果1.sor统计滤波2.Ransac内点分割平面3.Ransac外点分割平面 四、相关数据 一、算法原理 1、Ransac介绍 RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outlier…

4核8G服务器选阿里云还是腾讯云?价格性能对比

4核8G云服务器多少钱一年&#xff1f;阿里云ECS服务器u1价格955.58元一年&#xff0c;腾讯云轻量4核8G12M带宽价格是646元15个月&#xff0c;阿腾云atengyun.com整理4核8G云服务器价格表&#xff0c;包括一年费用和1个月收费明细&#xff1a; 云服务器4核8G配置收费价格 阿里…

7.整数反转

题目&#xff1a;给一个32位的有符号整数x&#xff0c;返回将x中的数字部分反转后的结果。 如果反转后整数超过32位的有符号整数的范围[−2^31, 2^31 − 1]&#xff0c;就返回0. 解题思路&#xff1a;在没有辅助栈或数组的帮助下弹出和推入数字&#xff0c;可以使用如下数学方…

数据结构-关键路径

介绍 在AOV网的基础上&#xff0c;如果用对应边来表示活动持续时间&#xff0c;这种有向图被称为AOE网在AOE网中&#xff0c;入度为0的为源点&#xff0c;出度为0的为汇点&#xff0c;整张网看做是一件事情完成的过程&#xff0c;那么这两个点就是事情的开始和结束。每个活动持…

LVS负载均衡服务器

简介: LVS (Linux Virtual Server):四层路由设备&#xff0c;是由中国人章文松研发的(阿里巴巴的副总裁)根据用户请求的IP与端口号实现将用户的请求分发至不同的主机。 工作原理: LVS工作在一台server上提供Directory(负载均衡器)的功能&#xff0c;本身并不提供服务&#xff…

安卓平板主板_安卓平板电脑主板MTK联发科|高通|紫光展锐方案

安卓平板电脑主板选择了MTK联发科方案&#xff0c;并且可以选配高通或者紫光展锐平台方案&#xff0c;为用户提供更强劲的性能和定制化的服务。主板搭载了联发科MT6771处理器&#xff0c;采用12nm制程工艺&#xff0c;拥有八核Cortex-A73Coretex-A53架构&#xff0c;主频为2.0G…

全景分屏对比模式,差异化展示更直观!

在生活中&#xff0c;对比现象无处不在&#xff0c;人们通过对比可以做出更好的判断甚至是选择。 而在家装设计行业&#xff0c;伴随着商业服务的升级&#xff0c;一些企业也在通过一些方式&#xff0c;满足客户的对比需求&#xff0c;从而提高服务质量。 全景分屏对比模式&a…

vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!

vue axios mock.js 以下是封装的过程&#xff0c;记录一下 1、首先先了解什么是mock.js的用途及特点 官网地址&#xff1a;Mock.js (mockjs.com) 作用&#xff1a;生成随机数据&#xff0c;拦截 Ajax 请求 优势&#xff1a; 2、了解axios的原理及使用 官网地址&#xff1a…

智能手表的革命性突破:TRIZ理论引领未来穿戴技术!

在科技日新月异的今天&#xff0c;智能手表已经从单纯的计时工具转变为集健康监测、信息通讯、娱乐休闲等多功能于一体的智能穿戴设备。而基于TRIZ理论的智能手表更是在这一变革中扮演着引领者的角色。TRIZ&#xff0c;即发明问题解决理论&#xff0c;是一套系统的创新方法学&a…

opencv图像腐蚀

腐蚀&#xff08;Erosion&#xff09;是一种形态学图像处理操作&#xff0c;用于移除图像中的小白点、细小物体或者边缘。它通过将结构元素应用于图像上的像素来实现。 以下是opencv实现图像腐蚀的代码 #include <opencv2/highgui/highgui.hpp> #include <opencv2/im…