【优化调度】非支配排序遗传算法求解车辆充电调度优化问题【含Matlab源码 2000期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、遗传算法简介

由于国内外人民的生活方式和电动汽车主要购买人群的不同,国内外关于车辆充电调度问题研究的侧重点也不尽相同。
我国地大物博,人口众多,交通复杂。主要从以下方面研究:
1、通过经济手段或技术手段控制电动汽车的充电时间和充电功率,减小电网峰谷差;
2、考虑全天各时段电价的不同,建立分时电价充电调度系统,减少充电费用;
3、考虑充电桩数量较少且分步不均匀的现状,研究充电设施选址问题;
4、建立虚拟充电站控制中心;
国外地广人稀,主要居住方式与中国也不相同,研究内容如下:
1、设计有多个充电端口的电动汽车充电器,可同时为N辆电动汽车充电;
2、研究混合动力汽车的网络化和供需规划问题;

1 问题描述
本文研究多辆电动汽车的充电调度问题,考虑某时段区域范围内有M 辆电动汽车发出充电请求时,周围有N 个充电桩可以提供充电位的调度情况。把当前调度时段电动汽车和充电桩的基本数据加载到调度中心,调度中心根据电动汽车的当前位置、电量剩余情况和周围充电桩的充电情况进行调度,电动汽车按照最优调度方案到充电桩充电。

充电调度模型考虑优化4个性能指标,分别为:
电动汽车充电时长:包括驾驶时间、充电时间和等待时间;
电动汽车充电费用:包括停车费用和充电费用。
充电桩利用率偏差:避免多辆电动汽车挤占某些充电桩,使其余充电站空闲。造成资源浪费和过渡损耗。
电网平均负载: 避免加重电网负载,维护电网安全

2 充电调度模型
在这里插入图片描述
在这里插入图片描述

3 群智能优化算法
群智能优化算法是指建立在生物智能或物理现象基础上的随机搜索算法,虽然在理论上不如传统优化算法完善,不能确保解的最优性。但是实际应用过程中,因为对计算中数据的不确定性有很强的适应能力,可以用来求解一些非线性问题,甚至没有确切解析表达式的问题。
本文的车辆充电调度问题是一个多目标优化非线性问题,可以用群智能优化算法来解决。因为每种调度方案都是一个M 行N 列的矩阵,为了解决智能体的构造问题,本文采用基于精英选择的遗传算法和非支配排序遗传算法求解问题,相比其他群智能优化算法,可以更方便的结合问题。

4 非支配排序算法
1)设置种群参数:
2)加载基础数据:加载电动汽车和充电桩的基础数据;
3)初始化种群:生成初始种群个体;
4)交叉、变异:进行交叉和变异操作,生成新的种群;
5)种群合并:进行越界处理,把进行变异操作之后生成的种群和初始种群合并生成新的种群;
6)计算目标函数适应值:计算4个优化目标的适应值;
7)非支配排序:根据种群个体各个优化目标的适应值进行非支配排序;
8)计算拥挤度、选出下一代个体:计算种群个体的拥挤距离,按照拥挤度排序生成下一代种群个体;
9)程序输出:生成Perato解集散点图
在这里插入图片描述

Pareto非支配解的概念:
在进行多目标优化时,一个解在某个优化目标最好,而在其他优化目标上比较差即为非支配解。改进一个非支配解的任何目标函数,必然会削弱至少一项其他目标函数。

该算法在选择算子执行之前根据个体之间的支配关系进行了分层。其选择算子、交叉算子和变异算子与带精英选择的遗传算法没有区别。
非支配排序过程如下:
首先求出种群个体的Pareto解集,标记Pareto解集个体前沿编号为1。然后依次求剩余个体的Pareto解集,分别标记个体前沿编号为2、3、…i…直到种群个体全部分层。

下图是一个二维Pareto前沿面,对种群个体进行分层之后,rank1是前沿编号为1的个体,rank2是前沿编号为2的个体,rank3是前沿编号为3的个体,
在这里插入图片描述
选出下一代个体:
同层个体按照拥挤度由小到大的顺序放入新的种群N 中,首先将种群中前沿面为1所有个体全部放入新的种群N中,若N 没满,继续放入前沿面为2,3…i…中的个体,直到种群N 满为止。

画出Pareto解集前沿图:
在三维坐标系中用坐标轴来表示充电时间、充电费用和充电桩利用率偏差,用颜色表示电网平均负载。画出4个优化目标的Pareto前沿图。

⛄二、部分源代码

function Copy_of_NSGAII()
clc;format compact;tic;hold on
global fitvalue;
global fitvalue2;
global fitvalue3;
global fitvalue4;
global newpop;
global pop;
global newpop_mut;
global Best_individual;
%—初始化/参数设定clear all

generations=100;                                %迭代次数
popnum=100;                                    %种群大小(须为偶数)
M=8;                                            %个体长度
N=5;
cross_rate=0.95;
mutate_rate=0.03;

% minvalue=repmat(zeros(1,poplength),popnum,1); %个体最小值
% maxvalue=repmat(ones(1,poplength),popnum,1); %个体最大值
initpop(popnum,M,N); % 初始化,产生新的初始种群

%—开始迭代进化

for gene=1:generations  %开始 迭代 

%-------交叉
crossover(popnum,M,N, cross_rate);% 交叉操作
% newpopulation=zeros(popnum,poplength); %子代种群
% for i=1:popnum/2 %交叉产生子代
% k=randperm(popnum); %从种群中随机选出两个父母,不采用二进制联赛方法
% beta=(-1).^round(rand(1,poplength)).abs(randn(1,poplength))1.481; %采用正态分布交叉产生两个子代
% newpopulation(i
2-1,:)=(population(k(1),:)+population(k(2)😅)/2+beta.
(population(k(1)😅-population(k(2)😅)./2; %产生第一个子代
% newpopulation(i2,:)=(population(k(1),:)+population(k(2)😅)/2-beta.(population(k(1)😅-population(k(2)😅)./2; %产生第二个子代
% end
%-------变异
mutation(popnum,M,N, mutate_rate);% 变异操作
% k=rand(size(newpopulation)); %随机选定要变异的基因位
% miu=rand(size(newpopulation)); %采用多项式变异
% temp=k<1/poplength & miu<0.5; %要变异的基因位
% newpopulation(temp)=newpopulation(temp)+(maxvalue(temp)-minvalue(temp)).((2.miu(temp)+(1-2.miu(temp)).(1-(newpopulation(temp)-minvalue(temp))./(maxvalue(temp)-minvalue(temp))).21).(1/21)-1); %变异情况一
% newpopulation(temp)=newpopulation(temp)+(maxvalue(temp)-minvalue(temp)).
(1-(2.
(1-miu(temp))+2.(miu(temp)-0.5).(1-(maxvalue(temp)-newpopulation(temp))./(maxvalue(temp)-minvalue(temp))).21).(1/21)); %变异情况二

%-------越界处理/种群合并

   newpop=[pop newpop_mut];
   % newpopulation(newpopulation>maxvalue)=maxvalue(newpopulation>maxvalue); %子代越上界处理
   % newpopulation(newpopulation<minvalue)=minvalue(newpopulation<minvalue); %子代越下界处理
   % newpopulation=[population;newpopulation];                               %合并父子种群

%-------计算目标函数值
index_1(newpop,M,N);%对个体的行驶时间和充电时间排序
wait(newpop,M,N);
fitness(newpop, M,N);
fitness2(newpop, M,N);
fitness3(newpop, M,N);
fitness4(newpop, M,N);
functionvalue=zeros(size(newpop,2),4); %合并后种群的各目标函数值,这里的问题是ZDT1
functionvalue(:,1)=fitvalue(1:size(newpop,2));
functionvalue(:,2)=fitvalue2(1:size(newpop,2));
functionvalue(:,3)=fitvalue3(1:size(newpop,2));
functionvalue(:,4)=fitvalue4(1:size(newpop,2));

   % functionvalue=zeros(size(newpopulation,1),2);           %合并后种群的各目标函数值,这里的问题是ZDT1
   % functionvalue(:,1)=newpopulation(:,1);                  %计算第一维目标函数值
   % g=1+9*sum(newpopulation(:,2:poplength),2)./(poplength-1);
   % functionvalue(:,2)=g.*(1-(newpopulation(:,1)./g).^0.5); %计算第二维目标函数值

%-------非支配排序

    fnum=0;                                             %当前分配的前沿面编号
    cz=false(1,size(functionvalue,1));                  %记录个体是否已被分配编号
    frontvalue=zeros(size(cz));                         %每个个体的前沿面编号
    [functionvalue_sorted,newsite]=sortrows(functionvalue);    %对种群按第一维目标值大小进行排序
    while ~all(cz)                                      %开始迭代判断每个个体的前沿面,采用改进的deductive sort
        fnum=fnum+1;
        d=cz;
        for i=1:size(functionvalue,1)
            if ~d(i)
                for j=i+1:size(functionvalue,1)
                    if ~d(j)
                        k=1;                            
                        for m=2:size(functionvalue,2)
                            if functionvalue_sorted(i,m)>functionvalue_sorted(j,m)
                                k=0;
                                break
                            end
                        end
                        if k
                            d(j)=true;
                        end
                    end
                end
                frontvalue(newsite(i))=fnum;
                cz(i)=true;
            end
        end
    end 

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]李翠玉,胡雅梦,康亚伟,张德良.应用自适应遗传算法的电动汽车充放电协同调度[J].吉林大学学报(工学版)

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

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值