【路径规划】基于matlab遗传算法求解同时取送货车辆路径问题【含Matlab源码 1072期】
一、遗传算法简介
1 引言
2 遗传算法理论
2.1 遗传算法的生物学基础
2.2 遗传算法的理论基础
2.3 遗传算法的基本概念
2.4 标准的遗传算法
2.5 遗传算法的特点
2.6 遗传算法的改进方向
3 遗传算法流程
4 关键参数说明
二、部分源代码
%主函数
%基于遗传算法求解同时取送货的车辆路径问题
function VRPSDPtic;clc;close all;global CARLOAD;global Popsize Num;global Delivery Pickup Dis_MATRIX;global Pc Pm;global genmax;Pc=0.85; %交叉概率Pm=0.01; %变异概率CARLOAD=100; %车辆最大载重Popsize=100; %种群规模Num=100; %调配点个数genmax=200; %最大迭代代数data=xlsread('data.xlsx');data=data(1:Num+1,:);%计算各节点间的直线距离Dis_MATRIX=ones(Num+1);for i=1:Num+1for j=1:Num+1Dis_MATRIX(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);endendDelivery=data(2:end,4);Pickup=data(2:end,5);chrom=[];for i=1:Popsizechrom(i,:)=randperm(Num); %初始化种群endcounter=1;while counter<=genmax%计算适应值矩阵Fitness=MatrixFitness(chrom);%找出最优个体适应值[bestfitness,bestindex]=max(Fitness);bestindex=bestindex(1);bestfit(counter)=bestfitness; %最大适应值fit的集bestpop(counter,:)=chrom(bestindex,:);%最优个体集%选择chrom=ga_select(chrom,Fitness);%交叉[aa,bb]=size(chrom);for i=1:2:aaif Pc>rand %交叉概率PcA=chrom(i,:);B=chrom(i+1,:);[A,B]=ga_intercross(A,B);chrom(i,:)=A;chrom(i+1,:)=B;end end%变异[aa,bb]=size(chrom);for i=1:aaif Pm>rand %变异概率chrom(i,:)=ga_mutate(chrom(i,:));endendchrom(1,:)=bestpop(counter,:);%精英策略counter=counter+1; endy=bestfit;%找出最优的适应值、个体[maxbestfit,maxindex]=max(bestfit);%取最优适应值的位置、最优适应值maxindex=maxindex(1);%输出解的序列中插入代表配送中心的0,分隔子路径
function [R,Rlength,carNum]=OUTPUT(chrom)global Delivery Pickup;chrom_new=[];vecOUTtmp=Delivery(chrom);vecINtmp=Pickup(chrom);vecAnstmp=chrom;num=0;carNum=0; %所需车辆数totalDis=0;num_total=length(chrom);chrom_new(1)=0;len=2;old_len=1;while(1)vecOUTtmp=vecOUTtmp(num+1:end);vecINtmp=vecINtmp(num+1:end);vecAnstmp=vecAnstmp(num+1:end);num1=rule1_2(vecOUTtmp); %判断满足送货总量小于车的载重量的配送点个数num2=rule1_2(vecINtmp); %判断满足取货量小于车的载重量的配送点个数num3=rule3(vecINtmp,vecOUTtmp); %判断满足每个客户点的载重量小于载重负荷的配送点个数num=min(num1,min(num2,num3)); %满足全部约束条件的配送点个数carNum=carNum+1;vecAnsOUT=vecAnstmp(1:num);totalDis=totalDis+myDist(vecAnsOUT); %计算一辆车的总运输距离num_total=num_total-num;chrom_new(len:len+num-1)=chrom(old_len:old_len+num-1);len=len+num;old_len=old_len+num;chrom_new(len)=0;len=len+1;if num_total<=0break;endendR=chrom_new;Rlength=totalDis;carNum=carNum;%交叉算法采用部分匹配交叉
function [a,b]=ga_intercross(a,b)
L=length(a);
if L<=10 %确定交叉宽度W=9;
elseif ((L/10)-floor(L/10))>=rand&&L>10W=ceil(L/10)+8;
elseW=floor(L/10)+8;
end
p=unidrnd(L-W+1);%随机选择交叉范围,从p到p+W
for i=1:W%交叉x=find(a==b(1,p+i-1));y=find(b==a(1,p+i-1));[a(1,p+i-1),b(1,p+i-1)]=exchange(a(1,p+i-1),b(1,p+i-1));[a(1,x),b(1,y)]=exchange(a(1,x),b(1,y));
end
function chrom=select(chrom,fitx)
totalfitx=sum(fitx); %求适应值之和
fitx1=fitx/totalfitx; %单个个体被选择的概率
[px,py]=size(chrom);
chrom1=zeros(px,py);
newin=1;
fitin=1;for newin=1:pxwhile chrom1(newin,1)==0 r=ceil(rand*px);if rand<fitx1(r)chrom1(newin,:)=chrom(r,:);endend
end
chrom=chrom1;
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社
【路径规划】基于matlab遗传算法求解同时取送货车辆路径问题【含Matlab源码 1072期】相关推荐
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】
一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...
- 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】
一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】
一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【微电网优化】基于matlab遗传算法求解微电网经济优化问题【含Matlab源码 2062期】
⛄一.遗传算法求解微电网经济优化问题简介 1 引言 微电网为分布式电源(尤其是可再生能源)接入大电网提供了一个有效的接入途径.同时,微电网在提高能源利用率方面有显著效果.在其内部,储能电池一方面可以调 ...
- 【优化调度】基于matlab遗传算法求解农业水资源调度优化问题【含Matlab源码 1776期】
⛄一.农业水资源调度简介 水是生命之源,水是生产之要,水是生态之基. 目前,全球约有14亿人口缺乏安全清洁饮用水,据估测到2025年全球约有23亿人口将会面临水资源短缺问题.因此,水即将成为制约社会以 ...
- 【路径规划】基于遗传算法求解带时间窗车辆路径规划问题(VRPTW)matlab源码
1 简介 有时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows,VRPTW)因为其有重要的现实意义而备受关注.其时间窗即为客户接受服务的时间范围, ...
- 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】
一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
最新文章
- OCX和DLL的区别
- 程序员获取编程灵感的10 种方式
- 计算机操作系统(1):OS的作用和目标
- 编译原理——实验叁——基于YACC的TINY语法分析器的构建
- 高德地图安卓 拖拽选点_行车记录仪当“眼睛” 高德地图手机AR导航再次升级...
- 信息学奥赛一本通(1023:Hello,World!的大小)
- 银行科技管理工作优化提升之我见
- python min函数时间复杂度_作为Python程序员,你真的会用max()和min()函数吗?
- maya多边形建模怎样做曲面_maya中的曲面模型怎么转换成多边形?
- C#实时判断串口连接状态
- 安装linux播放器mplayer,smplayer
- Linux下PCB的task_struck结构体
- java 求反正切函数 角度,弧度 。 arctanx
- 教你如何利用canvas画布绘制哆啦A梦
- 数据库系统---分布式数据库系统
- 微信小程序绘图canvas,绘制网络图片
- stm32开发板(特别是mini最小系统板)USB不能识别导致无法下载程序的原因
- 通信大史记:互联网的起源故事
- mysql数据库二级好考吗_计算机二级考试选考哪个科目最好?
- 天猫精灵 python_利用天猫精灵控制ESP8266(NodeMCU开发板)arduino ide开发