【优化充电】粒子群算法电动汽车充电动态优化策略【含Matlab源码 2163期】

news2024/9/22 19:37:11

⛄一、粒子群算法电动汽车充电优化

1 电动汽车充电负荷估算
电动汽车的充电负荷主要与电动汽车起始充电时刻和充电时长相关,而起始充电时刻是由电动汽车用户的到家时间决定的,充电时长主要与电动汽车的行驶里程和充电倍率相关。

目前电动汽车还没有大规模运营, 只能通过统计燃油车的相关规律来代替电动汽车。对北京市某小区的私家车用户进行统计,回家时间主要分为三种: 一是正常朝九晚五的上班族,到家时间基本服从N(17.6,1.3)的正态分布, 这类用户占的比重最大;二是加班或者上半夜班的用户,到家时间基本服从N (0.7,1.6)的正态分布;三是少部分后半夜上班的人,到家时间基本服从N (7.8,1.22)的正态分布。三类用户所占的比例分别为0.68、0.24和0.08。
目前大部分私人用电动汽车的常规充电功率约为3 k W,根据以上相关信息,可以通过蒙特卡洛计算机仿真模拟方法,求出包含上述三类用户的居民小区平均每天一辆电动汽车的充电功率需求,如图1所示。
在这里插入图片描述
图1电动汽车一天平均充电功率需求
根据电动汽车平均一天的充电功率需求曲线,只要设置居民小区的电动汽车用户数量,就可以求出相应规模电动汽车的充电负荷曲线。

2 光伏出力曲线和常规用电负荷
固定铺设面积的光伏出力曲线主要与光照强度和温度相关,在实际条件下主要表现为天气变化和季节性变化。通过对某楼顶10 k W光伏发电系统功率输出数据进行统计和处理,可得不同季节该光伏发电系统满发的出力曲线,如图2所示。
在这里插入图片描述
图2四季光伏满发出力曲线

居民小区的负荷曲线主要和小区的用户规模相关,通过对北京市某小区居民楼的实际负荷数据进行统计,可得夏季和冬季每户平均家庭常规用电负荷曲线,如图3所示。
在这里插入图片描述
图3某小区每户平均家庭常规负荷曲线

2 电动汽车优化充电模型
2.1 目标函数

本文以平抑小区配电网的负荷波动和降低电动汽车用户充电电费为小区电动汽车充电优化的目标函数。以分钟为单位,将一天分为1 440 min。

1)以平抑负荷波动为目标函数
2)以用户电费最少为目标函数
针对上述两个目标,考虑两者目标函数的量纲不同,对每个目标函数进行规范化,采用线性加权和法将多目标优化问题转化为单目标优化问题,

2.2 约束条件
居民小区电动汽车充电优化调度的约束条件主要满足用户使用方面和电网运行的要求。对于用户使用方面的要求主要体现在用户开始充电时间和充电时长;对于电网运行的要求主要体现在总功率不能超过电网节点功率的限制。

1)用户需求约束
本约束条件的要求是要保证电动汽车在用户离开家的时间之前完成充电。

2)电网运行约束
本约束条件的要求是要保证小区在引入电动汽车充电负荷和光伏发电输出的情况下,电网节点的功率要维持在电网的合理安全范围之内。

2.3求解方法
居民小区电动汽车的优化充电问题是一个多维、多变量、多约束条件以及非线性的优化问题,线性规划等经典优化算法难以解决。这里采用粒子群优化算法,考虑到基本粒子群算法容易陷入局部最优的问题,本文将采用改进的自适应变异粒子群优化算法进行求解。

粒子群算法即模拟鸟群的捕食行为,通过鸟群的集体协作达到群体最优值,算法通过式(9) 和式(10)实现粒子位置和速度的更新
式中,ω为惯性权重,一般在0.1 ~0.9之间取值; d=1,2,…,D;i=1,2,…,n;k为当前迭代次数;Vid为粒子的速度;Xid为粒子的位置;c1和c2为非负的常数,称为加速度因子;r1和r2为0~1区间的随机数。

粒子群优化算法存在早熟收敛现象,需要对惯性权重和学习因子进行改进。对于惯性权重ω, 若ω在0.5~1之间随机取值,则实验表明该算法比线性递减策略准确度更高,收敛速度更快
对于学习因子c1和c2采用非线性反余弦加速, c1先大后小,而c2先小后大,能解决陷入局部最优的问题。基本思想是搜索初期粒子飞行主要参考本身的历史信息c1,到了后期则更加注重群体信息c2,即
根据上述分析,得到相应的优化算法的求解过程如下:

1)初始化粒子群中粒子的位置与速度,并根据约束条件对粒子位置进行修正。

2)计算粒子的适应度值(目标函数值)。

3)将个体最优值设置为当前位置,群体最优值gbest设置为初始群体中最佳粒子的位置。

4)再根据式(9)和式(10)更新粒子速度和相应位置。

5)计算粒子群粒子的适应度,更新并记录粒子最优位置和群体最优位置。

6)根据式(14)式(16)计算群体适应度方差σ2。

7)根据式(17)计算变异概率pm。

8)产生在0~1的随机数,如果该数小于变异概率pm,则执行式(18)的变异操作,并进行相应修正。

9)判断是否达到结束条件,如果为真,则停止计算,并输出优化的解;如果为假,返回步骤4)。

⛄二、部分源代码

function[info,fv] = PSO2(N,c1,c2,w,M,knownEV_info,k,n,timeInterval,load_grid)
% info EVs with the start times which give the smallest fitness value
% fv the smallest fitness value

% c1,c2 learning factor
% w inertia weight
% M maximum number of iterations
% D number of vehicles needed to be arranged %need to be changed to vinfo
% N number of particles
% k kth interval to be arranged

% EVs with manageable start time
aEV = knownEV_info(find(knownEV_info(:,5) >= (k-1)*timeInterval)😅;
%
bEV = knownEV_info(find(knownEV_info(:,5) < (k-1)*timeInterval)😅;

% initalize particles

for i = 1:N
for j=1:length(aEV(:,5))
x(i,j) = aEV(j,2) + (aEV(j,4) - aEV(j,3)- aEV(j,2))rand;
% x(i,j) = 0;
% while (x(i,j) < (k-1)15) || (x(i,j) > (aEV(j,4) - aEV(j,3)))
% x(i,j) = randn
12
60; % initialize the start time of vehicles
% end
v(i,j) = randn; % initialize the speed
end
end

% calculate the fitness and initialize particle optimal and global optimal
for i=1:N
aEV(:,5) = x(i,:)';
vehicle_info = sortrows([aEV;bEV],1);
p(i) = fitness(vehicle_info,n,load_grid);
y(i,:) = x(i,:);
end
% find the global optimal
pg = x(N,:);
vg = p(N);
for i=1:(N-1)
if(p(i)<vg)
pg = x(i,:);
vg = p(i);
end
end

% main iteration
for t=1:M
for i=1:N % update the speed and the start time
v(i,:)=wv(i,:)+c1rand*(y(i,:)-x(i,:))+c2rand(pg-x(i,:));

    for j=1:length(aEV(:,5))
        if ((x(i,j)+v(i,j)) >= aEV(j,2)) &&  ((x(i,j)+v(i,j)) <= (aEV(j,4) - aEV(j,3)))
            x(i,j) = x(i,j)+v(i,j);
        end
    end
    
    aEV(:,5) = x(i,:)';
    vehicle_info = sortrows([aEV;bEV],1);
    if fitness(vehicle_info,n,load_grid) < p(i)
        p(i)=fitness(vehicle_info,n,load_grid);
        y(i,:) = x(i,:);
    end
    if p(i) < vg
        pg = y(i,:);
        vg = p(i);
    end
end
Pbest(t) = vg;

end

% result
aEV(:,5) = pg’;
info = sortrows([aEV;bEV],1);
fv = vg;

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]庞松岭,张超,张帝,刘汉炜,严乙桉.基于自适应变异粒子群算法的居民小区电动汽车优化充电策略[J].电气应用. 2015,34(20)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

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

相关文章

笔试强训day1

一、选择题 第一题&#xff1a; 题解&#xff1a;y123返回值为123&#xff0c;是非零数&#xff0c;所以y123总是正确&#xff0c;因此循环条件由x<4控制&#xff0c;答案 为C 第二题&#xff1a; %5表示输出总共占据了五列&#xff0c;%.3表示只取字符串左边三个字符并且…

傻白入门芯片设计,wafer/die/chip/cell(一)

1.wafer&#xff1a; 晶圆&#xff0c;指一整个圆形的晶圆硅片。如果问及CPU的原料是什么&#xff0c;大家都会轻而易举的给出答案—是硅。这是不假&#xff0c;但硅又来自哪里呢&#xff1f;其实就是那些最不起眼的沙子。不过不是随便抓一把沙子就可以做原料的&#xff0c;一定…

HTTP 协议

1 HTTP 协议的介绍 HTTP&#xff08;Hyper Transfer Protocol&#xff09;&#xff1a;超文本传输协议HTTP 协议是基于 TCP/IP 协议的超文本&#xff1a;比普通文本更加强大传输协议&#xff1a;客户端和服务器的通信规则&#xff08;握手规则&#xff09; 注意&#xff1a; J…

【计算机毕业设计】21.二手拍卖系统maven源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 引言 近年来&#xff0c;电子商务发展的愈趋成熟使得人们的消费方式以及消费观念发生巨大改变&#xff0c;网上竞拍的拍卖模式随之发展起来。大学拍卖网旨在为湘大学生提供一个线上拍卖的交易平台。平台展示的商品大…

STM32CubeMX时钟树(72MHZ主频配置)

目录 一些基础概念 时钟树配置图 第一步 第二步 这里我只是配置常用的72MHZ主频&#xff0c;很多时候新手都在时钟树这里被劝退了。其实不知道没关系&#xff0c;我用STM32这么久了&#xff0c;也只知道大概。我们绝大多数时候不需要配置这个时钟&#xff0c;记住72MHZ主频…

LeetCode-795-区间子数组个数

1、双指针 根据题意&#xff0c;我们可以将数组中的数分为这三类&#xff1a;1、小于leftleftleft的数&#xff1b;2、大于等于leftleftleft且小于等于rightrightright的数&#xff1b;3、大于rightrightright的数。因此若我们使用双指针来维护区间[last2,last1][last2,last1]…

Nacos与Eureka中的高性能读写并发架构设计

Nacos、Eureka都是微服务领域内熟知、常用的注册中心组件。只不过呢&#xff0c;Nacos还多了个功能身份就是配置中心。从目前流行与随着Spring Cloud Alibaba发展来看&#xff0c;Nacos使用得更加多&#xff0c;也是趋势所在。 注册中心原理 注册中心原理其实很简单&#xff…

【18】Java常见的面试题汇总(Spring/Spring MVC)

目录 1. 为什么要使用 spring&#xff1f; 2. 解释一下什么是 aop&#xff1f; 3. 解释一下什么是 ioc&#xff1f; 4. spring 有哪些主要模块&#xff1f; 5. spring 常用的注入方式有哪些&#xff1f; 6. spring 中的 bean 是线程安全的吗&#xff1f; 7. spring 支持…

【Java八股文总结】之外卖平台项目整理

文章目录一、项目介绍1.1 项目整体介绍1.2 主要模块介绍二、项目开发2.1 后台管理系统开发2.1.1 员工管理employee1、员工后台登录2、员工退出3、过滤器4、新增员工5、员工信息分页查询↑&#xff08;参加上面&#xff09;6、修改员工信息7、根据id查询员工信息&#xff0c;回显…

后台开发的学习日记

后台开发的学习日记 Java后台开发的日记&#xff1a;Push一下自己每天都要学习后台 后台开发学习日志-Day1后台开发的学习日记Day1: 路线及资料的汇总一、应该选择什么语言&#xff1f;二、学习路线的规划及资料的汇总整理Day1: 路线及资料的汇总 第一天主要是路线的准备及资料…

Pytorch学习笔记(二)官方60min入门教程之自动微分

目录 一.相关包及函数介绍 二.雅各比向量积 三.练习代码 一.相关包及函数介绍 autograd 包是 PyTorch 中所有神经网络的核心。首先让我们简要地介绍它&#xff0c;然后我们将会去训练我们的第一个神经网络。该 autograd 软件包为 Tensors 上的所有操作提供自动微分。它是一…

显卡天梯图2022年11月新版 显卡性能排行榜天梯图

1 RTX 3090Ti 2 RTX 3090 3 RX 6900 XT水冷版 我用的显卡就是活动时8折抢购的太划算了 http://www.adiannao.cn/dq 4 RTX 3080 Ti 5 RX 6900 XT 6 Titan RTX 7 RTX 3080 8 RX 6800 XT 9 RX 6800 10 RTX 3070 Ti

C++数据结构X篇_01_数据结构的基本概念

从本篇开始学习数据结构相关概念。 数据结构的基本概念1 数据结构的相关概念1.1 为什么要学习数据结构1.2 数据结构中的基本概念2 算法2.1 算法的概念2.2 算法和数据结构的区别2.3 算法特性2.4 算法效率的度量2.4.1 事后统计法2.4.2 事前分析估算2.4.3 大O表示法2.4.3.1采用大O…

从事先进计算的工程师对此都有什么感想?

电子计算机最初诞生于二十世纪&#xff0c;体积庞大的初代机型运算能力有限&#xff0c;随着计算技术的升级完善&#xff0c;现在多样小巧的计算机及手机的计算能力呈指数级增长&#xff0c;更是成为人们生活密不可分的综合性助手。 先进计算是在计算的基础上诞生的全新概念&a…

Python3安装及基础语法

Python 官网&#xff1a;Welcome to Python.org Python安装&#xff1a;进入官网Download找到对应版本安装包&#xff0c;下载后双击安装&#xff0c;一直下一步即可&#xff1b;注意&#xff1a;安装最后一步勾选&#xff08;Add Python to PATH&#xff09;&#xff0c;默认…

用nginx作反向代理时,请求头中含波浪线无法转发请求的解决方法

请求头如下 POST /CDGServer3/s/rs/uni HTTP/1.1 Content-Type: text/html; charsetUTF-8 method~name: upgradePatchService user~userId: admin.local user~clientId: 343834353230344334424431 user~SessionID: 0 data~packageNo: 618 data~packageState: 1 User-Agent: Ra…

Android -- 每日一问:怎么理解 Activity 的生命周期?

典型回答 如果一个 Activity 在用户可见时才处理某个广播&#xff0c;不可见时注销掉&#xff0c;那么应该在哪两个生命周期的回调方法去注册和注销 BroadcastReceiver 呢&#xff1f; Activity 的可见生命周期发生在 onStart调用与 onStop调用之间。在这段时间&#xff0c;用户…

nginx(六十四)proxy模块(五)接收上游响应

一 接收上游的响应 前提&#xff1a; nginx与上游建立连接,把nginx生成的请求(line、header、body)信息发送给上游补充&#xff1a; 上游解析处理完之后,会发送响应​核心&#xff1a; nginx如何接收、解析、处理上游响应行、响应头、响应体 下载大文件失败 &#xff08;…

一文了解 Go 的复合数据类型(数组、Slice 切片、Map)

一文了解 Go 的复合数据类型[数组、切片 Slice、Map]前言数组数组的创建方式数组的遍历Slice 切片切片的创建方式切片的遍历向切片追加元素MapMap 的创建方式Map 的基本操作插入和修改删除查找操作遍历操作删除操作小结耐心和持久胜过激烈和狂热。 前言 上一篇文章一文熟悉 Go…

CMake Cookbook by Eric

I. Basics 关键字&#xff1a;CMake中的构建指令 指令的书写是大小写无关的&#xff1b; II. Project&#xff1a;指定项目名称和语言类型 命令格式&#xff1a;project(<PROJECT-NAME> [<language-name>...]) Note 项目名称<PROJECT-NAME>不需要与项目根…