多种群遗传算法处理基于电动汽车的带时间窗的路径优化问题(VRPTW)

1.基于电动汽车的VRPTW描述

某物流配送中心采用电动汽车为各个客户点进行配送服务,每个客户点都有配送时间的限制。如果配送中心不能在时间窗内到达客户点将接受一定的惩罚。电动汽车有一定的容量限制。电动汽车的续驶里程有限,配送过程中可能需要进入充电站进行充电,其中电动汽车的充电时间比传统汽车加油时间长很多。物流配送中心如何规划配送中心的车辆行驶路径,惩罚成本和车辆行驶费用构成的总成本可以达到最小。基于电动汽车的带时间窗的车辆路径优化的目标和约束条件如下:
在这里插入图片描述
数学模型:
在这里插入图片描述

2.多种群遗传算法设计

多种群遗传算法突破传统遗传算法仅靠单个群体进行遗传进化的框架,引入多个种群同时进行优化搜索,不同的种群赋以不同的控制参数,实现不同的搜索目的。各个种群之间通过移民算子进行联系,实现多种群的协同进化的综合结果。通过人工选择算子保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。代码实现如下:

%% 模型求解
D = GA_Distance(X);%各个点之间的距离
for i=1:MP
    Chrom{i}=GA_chushihua(NIND,m,ch,k,q,Qk);%初始化种群
end
for i=1:MP
ObjV{i} = GA_fitness(Chrom{i},m,Ck,C1,C2,LT,ET,Qk,q,k,Dis,speed,ch,TT,D);%计算各初始种群个体的目标函数值
end
MaxObjV=zeros(MP,1);           %记录精华种群
MaxChrom=zeros(MP,m+ch+k+1); %记录精华种群的编码
while gen0<=MAXGEN
    gen=gen+1;       %遗传代数加1
    for i=1:MP
    scro{i} = GA_cro(Chrom{i},m,pc(i),Ck,C1,C2,LT,ET,Qk,q,k,Dis,speed,ch,TT,D);%交叉操作
    smut{i} = GA_mut(scro{i},m,k,Ck,C1,C2,LT,ET,Qk,q,Dis,speed,ch,TT,pm(i),D);%变异操作
    [Chrom{i},s_gen{i},ObjV{i}] = GA_reins(Chrom{i},smut{i},m,Ck,C1,C2,LT,ET,Qk,q,k,Dis,speed,ch,TT,D,NIND);%记录并更新全局最优解
    end
    [Chrom,ObjV]=immigrant(Chrom,ObjV);     % 移民操作
    [MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom);     % 人工选择精华种群
    best_fit(gen) = max(MaxObjV);
  
    if best_fit(gen)>maxFit   %判断当前优化值是否与前一次优化值相同
        maxFit = best_fit(gen); %更新最优值
        gen0=0;
    else
        gen0=gen0+1; %最优值保持次数加1
    end
end

自适应交叉算子和变异算子:

%% 参数设置
k=3; % 3辆车
m=25; % 25个客户点
ch=2; % 2个充电站
% 各客户点需求量,其中配送中心/充电站需求量为0,其中q(1)为配送中心,q(27)、q(28)为充电站,以此类推
q = [0 0.2 0.3 0.3 0.3 0.3 0.5 0.8 0.4 0.5 0.7 0.7 0.6 0.2 0.2 0.4 0.1 0.1 0.2 0.5 0.2 0.7 0.2 0.7 0.1 0.5 0 0];
% 配送中心、充电站和客户点的坐标位置,配送中心在第1位,充电站点在最后
X=[ 56 56
66 78
56 27
88 72
88 32
24 48
40 48
32 80
16 69
88 96
48 96
32 104
80 56
48 40
24 16
48 8
16 32
8 48
32 64
24 96
72 104
72 32
72 16
88 8
104 56
104 32
83 45
32 40];
% 时间参数
% 客户要求到货的时间始点(最早点),充电站0
ET=[0 1 2 7 5 3 0 7 1 4 1 3 0 2 2 7 6 7 1 1 8 6 7 6 4 0 0];
% 客户要求到货的时间终点(最晚点),充电站最晚100
LT=[1 2 4 8 6 5 2 8 3 5 2 4 1 4 3 8 8 9 3 3 10 10 8 7 6 1000 1000];
% 客户点的停留时间,充电站停留时间为0.4
TT=[0.2 0.3 0.3 0.3 0.3 0.5 0.8 0.4 0.5 0.7 0.7 0.6 0.2 0.2 0.4 0.1 0.1 0.2 0.5 0.2 0.7 0.2 0.7 0.1 0.5 0.4 0.4];
% 成本参数
Ck=10; % 第k辆车运行单位距离的费用(运输成本)
C1=20; % 车辆在任务点处等待单位时间的机会成本(早到惩罚)
C2=30; % 车辆在要求时间之后到达单位时间所处的惩罚值(晚到惩罚)
% 汽车参数
Dis = 160; % 续驶里程
Qk = 5; % 车辆额定载重量
speed = 40; % 汽车的行驶速度
% 遗传算法参数
NIND = 200; % 种群大小,一般种群大小在100到200之间比较好
MP=50;      %种群数目
gen=0;  %初始遗传代数
gen0=0; %初始保持代数
MAXGEN=10;  %最优个体最少保持代数
maxFit=0; %最优值
pc=0.85+(0.95-0.85)*rand(MP,1);    %在【0.85,0.95】范围i内随机产生交叉概率
pm=0.08+(0.15-0.08)*rand(MP,1);  %在【0.08,0.15】范围内随机产生变异概率

优化结果:
下图是配送中心、客户点及充电站的位置分布,其中圆圈表示配送中心,圆点表示客户点,三角表示充电站。
在这里插入图片描述
在这里插入图片描述
最优解:
1 至 26 列

 0    13     2    15    14    27     6     5    16    17     8    18     0     1    20     9     3    12    26    24    25     4    23    22    21     0

27 至 31 列

 7    19    11    10     0

目标函数值:6362.046
*详细完整MATLAB代码见下载多种群遗传算法处理基于电动汽车的带时间窗的路径优化问题(VRPTW)

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

songrpdky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值