单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录

1 主要内容

目标函数

电动汽车负荷建模

算例系统图

程序亮点

2 部分代码

3 程序结果

4 下载链接


主要内容

该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》,本章构建了单向/双向V2G环境下分布式电源与电动汽车充电站联合配置模型,以确定配电系统中分布式电源与电动汽车充电站的最佳安装位置及安装容量。单向V2G环境下,电动汽车的充电时间段被认为是可调节的对象,在充分满足电动汽车充电需求的前提下合理部署相应的充电方案可以有效提高配电系统运行的经济性和安全性。而在双向V2G环境下,电动汽车不仅可以从配电系统获取电能,还能在必要的时候向配电系统释放自身储存的电能,从而为配电系统的运行提供帮助。模型构建的联合配置模型以年化社会总成本最小为目标,采用二阶锥技术求解,最终呈现为一个在多项式时间内可解的混合整数二阶锥规划模型,并以江苏地区一个实际的电气- 地理信息耦合系统进行了测试。 

  • 目标函数

  • 电动汽车负荷建模

  • 算例系统图

  • 程序亮点

本程序不仅将31节点系统和实际地理图有机结合,而且考虑了不同情形下(无序充电/单向V2G/双向V2G)配置方案,方便对照学习!

部分代码

T = 96;%时段数为1小时
nb = 31;%节点数,根节点为31
nl = 30;%支路数
P1=1e-5.*[500 200 250 180 180 120 240 240 240 240 240 160 160 400 320 300 300 300 300 800 0 80 200 100 60 40 500 200 80 30 0]';
Q1=1e-5.*[300 90 160 90 60 60 80 80 80 120 120 90 100 75 100 125 100 100 100 320 0 40 100 40 25 15 160 120 30 10 0]';
load pc_jm_w;
load pc_jm_wd;
load px_jm_w;
load px_jm_wd;
load pq_jm_w;
load pq_jm_wd;
load pd_jm_w;
load pd_jm_wd;
load pc_sc_w;
load pc_sc_wd;
load px_sc_w;
load px_sc_wd;
load pq_sc_w;
load pq_sc_wd;
load pd_sc_w;
load pd_sc_wd;
load pc_bg_w;
load pc_bg_wd;
load px_bg_w;
load px_bg_wd;
load pq_bg_w;
load pq_bg_wd;
load pd_bg_w;
load pd_bg_wd;
%电动汽车
prl=100;%容量
pev=30*0.25;
cdz=[7 30 60;400 3250 5600;40 325 560;10 10 10];%充电桩数据
cr=106.5;%单位容量增容成本
cl=80;%单位网损费用
plmax=600*1e-4;%线路最大电流
d=0.03;%折现率
num_peak=[1 2 5 1.*ones(1,28)];%测试数据,下为正式数据,运行速度太慢
%num_peak=[30 12 15 11 11 7 14 14 14 14 14 10 10 24 19 18 18 18 18 48 0 5 12 6 4 2 30 12 5 2 0]';%峰值电动汽车停车数量
load arr_jm_w;
load arr_jm_wd;
load arr_sc_w;
load arr_sc_wd;
load arr_bg_w;
load arr_bg_wd;
load stay_jm_w;
load stay_jm_wd;
load stay_sc_w;
load stay_sc_wd;
load stay_bg_w;
load stay_bg_wd;
sty_jd=[2 2 1 3 3 2 1 1 1 1 1 1 1 2 2 2 2 1 1 2 1 3 2 2 3 3 3 1 2 3 1];%节点区域类型
%构建负荷矩阵
for i=1:nb
   if sty_jd(i)==1
       pload(i,1:T)=P1(i).*pc_jm_w;%春 工作日
       pload(i,T+1:2*T)=P1(i).*pc_jm_wd;%春 周末
       pload(i,2*T+1:3*T)=P1(i).*px_jm_w;%夏 工作日
       pload(i,3*T+1:4*T)=P1(i).*px_jm_wd;%夏 周末
       pload(i,4*T+1:5*T)=P1(i).*pq_jm_w;%秋 工作日
       pload(i,5*T+1:6*T)=P1(i).*pq_jm_wd;%秋 周末
       pload(i,6*T+1:7*T)=P1(i).*pd_jm_w;%冬 工作日
       pload(i,7*T+1:8*T)=P1(i).*pd_jm_wd;%冬 周末
   elseif sty_jd(i)==2
       pload(i,1:T)=P1(i).*pc_sc_w;%春 工作日
       pload(i,T+1:2*T)=P1(i).*pc_sc_wd;%春 周末
       pload(i,2*T+1:3*T)=P1(i).*px_sc_w;%夏 工作日
       pload(i,3*T+1:4*T)=P1(i).*px_sc_wd;%夏 周末
       pload(i,4*T+1:5*T)=P1(i).*pq_sc_w;%秋 工作日
       pload(i,5*T+1:6*T)=P1(i).*pq_sc_wd;%秋 周末
       pload(i,6*T+1:7*T)=P1(i).*pd_sc_w;%冬 工作日
       pload(i,7*T+1:8*T)=P1(i).*pd_sc_wd;%冬 周末
   else
       pload(i,1:T)=P1(i).*pc_bg_w;%春 工作日
       pload(i,T+1:2*T)=P1(i).*pc_bg_wd;%春 周末
       pload(i,2*T+1:3*T)=P1(i).*px_bg_w;%夏 工作日
       pload(i,3*T+1:4*T)=P1(i).*px_bg_wd;%夏 周末
       pload(i,4*T+1:5*T)=P1(i).*pq_bg_w;%秋 工作日
       pload(i,5*T+1:6*T)=P1(i).*pq_bg_wd;%秋 周末
       pload(i,6*T+1:7*T)=P1(i).*pd_bg_w;%冬 工作日
       pload(i,7*T+1:8*T)=P1(i).*pd_bg_wd;%冬 周末
   end
end
qload=repmat(Q1,1,8*T);

ndjzd=[42,14,0.0492131803564864,1,5;4,27,0.407730811355982,27,3;72,4,0.822394006759020,19,2;95,6,0.827209084946655,19,2;92,17,0.0302701634197687,16,5];
[num_w,~]=size(djz);
[num_wd,~]=size(djzd);
%% 1.设参
mpc = real31;
%pload = mpc.Pload(:,t)*(pload1(t)/sum(mpc.Pload(:,t)))/100;%节点有功负荷
%qload = mpc.Qload(:,1);%节点无功负荷
branch = mpc.branch;
branch(:,3) = branch(:,3)*100/(12.66^2);%求阻抗标幺值
r=real(branch(:,3));
x=imag(branch(:,3));
r=r(1:30);
x=x(1:30);
upstream=zeros(nb,nl);%代表流入节点支路
dnstream=zeros(nb,nl);%代表流出节点支路
for i=1:nl
    upstream(i,i)=1;
end
for i=[1:5,7:8,21:25]
    dnstream(i,i+1)=1;
end
dnstream(1,[7 10 12 14 15])=1;
dnstream(10,11)=1;
dnstream(12,13)=1;
dnstream(2,[16 18 20])=1;
dnstream(16,17)=1;
dnstream(18,19)=1;
dnstream(22,[27 28])=1;
dnstream(23,[29 30])=1;
dnstream(31,1)=1;
dnstream(31,21)=1;
​
Vmax=[1.05*1.05*ones(30,1);1.05*1.05*ones(1,1)];
Vmin=[0.95*0.95*ones(30,1);1.05*1.05*ones(1,1)];
Pgmax=[zeros(30,1);ones(1,1)];
Qgmax=[zeros(30,1);ones(1,1)];
%定义变量
V = sdpvar(nb,8*T);%电压的平方
I = sdpvar(nl,8*T);%电流的平方
P = sdpvar(nl,8*T);%线路有功
Q = sdpvar(nl,8*T);%线路无功
Pg = sdpvar(nb,8*T);%发电机有功
Qg = sdpvar(nb,8*T);%发电机无功
Ns = intvar(nb,1);%充电桩数量
Npv = intvar(8,1);%光伏节点安装数量
Ng = intvar(6,1);%燃气轮机安装数量
evc = binvar(num_w,T);%工作日电动汽车充电状态变量
evd = binvar(num_w,T);%工作日电动汽车放电状态变量
evdc = binvar(num_wd,T);%周末电动汽车充电状态变量
evdd = binvar(num_wd,T);%周末电动汽车放电状态变量

程序结果

4 下载链接

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

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

相关文章

PMBus > SMBus > I2C 关系解析

一、SMBUS SMBus 全称 System Management Bus,即系统管理总线。一种基于I2C而扩展出来的协议,是 I2C 协议的一个子集。但SMBus 要求更严格,规定了更多细节与规范。有一些更为复杂的操作,但是原理都还是基于I2C。 SMBus 为系统和电…

05.QT坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角,X向右增长,Y向下增长。 2.设置控件位置 设置控件位置,就相当于是需要指定控件的坐标,对于该控件来说,其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

8.可观测性

可观测性 readinessProbe 就绪探针 Pod生命周期有几个不同阶段,Pod会有不同的状态。 刚创建Pod时,Pod处于Pending状态。调度程序会尝试找出放置Pod的位置。如果调度程序找不到要放置Pod的节点,它将保持Pending状态。 运行kubectl describe po…

【DBeaver+mysql】如何在DBeaver中创建mysql服务的连接并新建数据库

一、创建步骤 1、下载安装mysql 8.0(注意,安装过程会启动mysql服务,这才是能用命令行执行node处理sql语句的关键) 下载地址:https://dev.mysql.com/downloads/file/?id526407 2、下载安装DBeaver数据库管理IDE 3、在…

循环队列|超详细|数据结构学习讲解与笔记

队列元素先进先出队列只允许在线性表的一端进行操作,是一种操作受限的线性表 队列的基本操作 InItQueue(&Q)初始化队列,构造一个空队列 QEmptyQueue(Q)队列判空FullQueue(Q)队列判满EnQueue(&Q , x)入队操作DeQueue(&Q , &x)出队操作G…

铌酸锂芯片与精密划片机:科技突破引领半导体制造新潮流

在当今快速发展的半导体行业中,一种结合了铌酸锂芯片与精密划片机的创新技术正在崭露头角。这种技术不仅引领着半导体制造领域的进步,更为其他产业带来了前所未有的变革。 铌酸锂芯片是一种新型的微电子芯片,它使用铌酸锂作为基底材料&#x…

HTTP/1.1 如何优化?

问你一句:「你知道 HTTP/1.1 该如何优化吗?」 我们可以从下面这三种优化思路来优化 HTTP/1.1 协议: 尽量避免发送 HTTP 请求在需要发送 HTTP 请求时,考虑如何减少请求次数减少服务器的 HTTP 响应的数据大小 下面,就针对这三种思路具体看看有哪些优化…

【代码移植】UNIX/Linux/POSIX代码程序移植到Windows系统平台技术汇总与经验分享

​ 图片来源 UNIX (Linux) to Windows代码移植技术路线 MinGW MinGW/MinGW-W64是用Windows原生系统API实现的,在Windows上运行的GCC编译工具链,可以编译出Windows原生应用程序。 MinGW编译工具链的生态位和微软官方的MSVC类似。 优点 MinGW编译出…

(每日持续更新)jdk api之ObjectInputValidation基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…

fish终端下conda activate失败

【问题】fish终端下激活conda环境报错: >> conda activate base CondaError: Run conda init before conda activate ## 然而运行 conda init fish 仍旧无法解决【解决】 参考:https://github.com/conda/conda/issues/11079 方法一&#xf…

SQL-Labs靶场“1-5”关通关教程

君衍. 一、准备工作二、第一关 基于GET单引号字符型注入1、源码分析2、联合查询注入过程 三、第二关 基于GET整型注入1、源码分析2、联合查询注入过程 四、第三关 基于GET单引号变形注入1、源码分析2、联合查询注入过程 五、第四关 基于GET双引号字符型注入1、源码分析2、联合查…

JDBC核心技术

第1章 JDBC概述 第2章 获取数据库连接 第3章 使用PreparedStatement实现CRUD操作 第4章 操作BLOB类型字段 第5章 批量插入 第6章 数据库事务 第7章 DAO及相关实现类 第8章 数据库连接池 第9章 Apache-DBUtils实现CRUD操作图像 小部件

提高供应商收发文件效率的同时,如何保障数据的安全流转?

数据文件是制造业企业的核心竞争力,一旦发生数据外泄,就会给企业造成经济损失。之前就出现过像小米二级供应商因对其下游供应商管理不善,泄露了小米汽车前后保险杠的早期设计稿事件。制造业企业与供应商之间业务联系紧密,文件流转…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(二)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

AWK语言

一. awk awk:报告生成器,格式化输出。 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

预检请求:为跨域请求保驾护航(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Python面向对象:什么是面向对象程序设计

编程范式 编程即写程序or代码,具体是指程序猿用特定的语法数据结构算法编写代码,目的是用来告诉计算机如何执行任务。 如果把编程的过程比喻为练习武功,那么编程范式指的就是武林中的各种流派,而在编程的世界里最常见的两大流派就…

numpy模块:从基础到高级的完整指南【第88篇—NumPy数组操作】

numpy模块:从基础到高级的完整指南 在Python的科学计算领域,NumPy模块是一个不可或缺的利器。它提供了丰富的数学函数和矩阵操作,使得数据处理、分析和科学计算变得更加高效。本文将带你初步了解NumPy模块,并通过实例代码深入解析…

JUC并发编程

JUC并发编程 JUC概述 JUC是java.util.concurrent包的简称,即Java并发编程工具包,目的是为了更好地支持高并发任务,让开发者进行多线程编程时有效减少竞争条件和死锁线程。 并发编程 一些基本概念: 进程与线程: 进…

C#,二叉搜索树(Binary Search Tree)的迭代方法与源代码

1 二叉搜索树 二叉搜索树(BST,Binary Search Tree)又称二叉查找树或二叉排序树。 一棵二叉搜索树是以二叉树来组织的,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象。 一般地,除了key和位置…