基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab代码)

news/2024/10/30 9:32:35/

目录

1 主要内容

峰谷电价优化

电动汽车充电负荷变化

2 部分代码

3 程序结果


主要内容

该程序基本复现《基于峰谷分时电价引导下的电动汽车充电负荷优化》,代码主要做的是基于NSGA-II的电动汽车充电负荷优化,首先,在研究电动汽车用户充电需求的前提下,利用蒙特卡洛方法对2种不同充电方式进行模拟并对其进行分析;分析用户响应度对电动汽车有序充电的影响,建立峰谷分时电价对电动汽车负荷影响的模型,在模拟出电动汽车无序充电负荷的基础上,用实际案例对模型进行验证,利用多目标遗传优化算法进行求解,验证峰谷分时电价对电网负荷优化的有效性。

该程序主要分成两部分,第一部分是峰谷电价优化部分,第二部分通过确定的峰谷平电价观测电动汽车充电负荷变化情况。

  • 峰谷电价优化

  1. 程序采用NSGA-II算法,该算法是非常成熟、常用的多目标求解算法,是遗传算法的一种,作为智能优化算法,最关键的点是找到程序的输入和输出,剩下的即是采用算法进行连接即可,在该程序中,输入是分时电价作为变量,输出是两个目标,分别是负荷均方差最小和电动汽车用户充电费用最小。
目标1:

目标2:

优化结果:

对于帕累托多目标而言,会存在多组运行结果,即多个自变量+目标函数的组合,求解此类问题的帕累托最优解有以下常用的几种方法:权重系数变换法,给每个子目标函数赋予权重系数后转变为单目标优化问题;并列选择法,将群体所有个体按照子目标函数划分子群体,各自选出适应度高的个体以得到新的子群体,再将其合并,不断进行 至 最 大 次 数,最 终 得 到 多 目 标 优 化 的帕累托最优解。
  • 电动汽车充电负荷变化

该部分利用确定好的峰谷平电价,抽取1000辆电动汽车进行分析,考虑电动汽车的充电开始时刻、充电时长、行驶路程和价格弹性矩阵,得到电动汽车充电与原始负荷对比。

部分代码

M=2;%目标函数个数
p=1;
pop_size=200;           % 种群规模
no_runs=1;              % 计数器
gen_max=100;            % 最大遗传代数
fname='test_case';      % 目标函数    
V=3;                    %优化变量的数量
txl=[-5*ones(1,V);zeros(1,V);-5*ones(1,V);-1000*ones(1,V);zeros(1,V);-1/sqrt(V)*ones(1,V);zeros(1,V); 0 -5*ones(1,V-1);zeros(1,V)];
txu=[10*ones(1,V); ones(1,V);5*ones(1,V);1000*ones(1,V);ones(1,V);1/sqrt(V) *ones(1,V);ones(1,V);1 5*ones(1,V-1);ones(1,V)];
xl=[0.2  0.25  0.25] ;      % 变量的下限,最低电价0.25元每千瓦时
xu=[2  2  2] ;              % 变量的上限,最高电价2元每千瓦时
etac = 20;                  % 交叉分布指数
etam = 20;                  % 突变分布指数/突变常数
pm=1/V;                     % 变异概率
pcars=caculateload(1000);   %无序时负荷%原电网24小时负荷p0=[  455.39405.948333.086275.836205.576145.725130.112130.112137.918150.929163.941182.156208.178195.167156.134150.929161.338169.145169.145176.952195.167210.781296.654497.026];
%价格弹性矩阵,初始电价1元
priceq=[-0.623   0.3241    0.2305;       %峰时弹性16-240.3553   -0.6166   0.2216;      %平时弹性8-160.3215   0.3038   -0.6065];     %谷时弹性0-8 
Q=[]; 
for run = 1:no_runs    %% 原始种群xl_temp=repmat(xl, pop_size,1);xu_temp=repmat(xu, pop_size,1);x = xl_temp+((xu_temp-xl_temp).*rand(pop_size,V));​

程序结果

第一部分已经展示了运行结果,该部分展示一下原文结果图,以便对比​。

通过对比可见,程序复现效果很好​!


http://www.ppmy.cn/news/991464.html

相关文章

无涯教程-jQuery - animate()方法函数

animate()方法执行一组CSS属性的自定义动画。 animate( params, [duration, easing, callback] ) - 语法 selector.animate( params, [duration, easing, callback] ); 这是此方法使用的所有参数的说明 params - 动画将朝其移动的CSS属性图。duration - 这是可选…

LeetCode 刷题 数据结构 数组 27 移除元素

难度:简单 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑…

Unity UGUI的LayoutRebuilder的介绍及使用

Unity UGUI的LayoutRebuilder的介绍及使用 1. 什么是LayoutRebuilder? LayoutRebuilder是Unity UGUI中的一个组件,用于自动重建布局。它可以根据UI元素的变化,自动调整其子元素的位置和大小,以保持布局的一致性。 2. LayoutReb…

前缀和差分

前缀和 前缀和:一段序列里的前n项和 给出n个数,在给出q次问询,每次问询给出L、R,快速求出每组数组中一段L至R区间的和 给出一段数组,每次问询为求出l到r区间的和 普通方法:L到R进行遍历,那么…

【Vscode | R | Win】R Markdown转html记录-Win

Rmd文件转html R语言环境Vscode扩展安装及配置配置radian R依赖包pandoc安装配置pandoc环境变量验证是否有效转rmd为html 注意本文代码块均为R语言代码,在R语言环境下执行即可 R语言环境 官网中去下载R语言安装包以及R-tool 可自行搜寻教程 无需下载Rstudio Vscod…

linux---文件操作

1.文件路径定位 # /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下 /bin –> /usr/bin /sbin –> /usr/sbin lib -> usr/lib lib64 -> usr/lib64# 路径非常重要,名字一样,单不一定是一个文件# 相对路径: 相对于当前文件&#…

Unity UGUI的Outline(描边)组件的介绍及使用

Unity UGUI的Outline(描边)组件的介绍及使用 1. 什么是Outline(描边)组件? Outline(描边)组件是Unity UGUI中的一种特效组件,用于给UI元素添加描边效果。通过设置描边的颜色、宽度和模糊程度,可以使UI元素在视觉上更加突出。 2. Outline(描…

【leetcode】977. 有序数组的平方(easy)

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 […