一、遗传算法简介

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期】相关推荐

  1. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  2. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  3. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  4. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  5. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  6. 【微电网优化】基于matlab遗传算法求解微电网经济优化问题【含Matlab源码 2062期】

    ⛄一.遗传算法求解微电网经济优化问题简介 1 引言 微电网为分布式电源(尤其是可再生能源)接入大电网提供了一个有效的接入途径.同时,微电网在提高能源利用率方面有显著效果.在其内部,储能电池一方面可以调 ...

  7. 【优化调度】基于matlab遗传算法求解农业水资源调度优化问题【含Matlab源码 1776期】

    ⛄一.农业水资源调度简介 水是生命之源,水是生产之要,水是生态之基. 目前,全球约有14亿人口缺乏安全清洁饮用水,据估测到2025年全球约有23亿人口将会面临水资源短缺问题.因此,水即将成为制约社会以 ...

  8. 【路径规划】基于遗传算法求解带时间窗车辆路径规划问题(VRPTW)matlab源码

    1 简介 有时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows,VRPTW)因为其有重要的现实意义而备受关注.其时间窗即为客户接受服务的时间范围, ...

  9. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

最新文章

  1. OCX和DLL的区别
  2. 程序员获取编程灵感的10 种方式
  3. 计算机操作系统(1):OS的作用和目标
  4. 编译原理——实验叁——基于YACC的TINY语法分析器的构建
  5. 高德地图安卓 拖拽选点_行车记录仪当“眼睛” 高德地图手机AR导航再次升级...
  6. 信息学奥赛一本通(1023:Hello,World!的大小)
  7. 银行科技管理工作优化提升之我见
  8. python min函数时间复杂度_作为Python程序员,你真的会用max()和min()函数吗?
  9. maya多边形建模怎样做曲面_maya中的曲面模型怎么转换成多边形?
  10. C#实时判断串口连接状态
  11. 安装linux播放器mplayer,smplayer
  12. Linux下PCB的task_struck结构体
  13. java 求反正切函数 角度,弧度 。 arctanx
  14. 教你如何利用canvas画布绘制哆啦A梦
  15. 数据库系统---分布式数据库系统
  16. 微信小程序绘图canvas,绘制网络图片
  17. stm32开发板(特别是mini最小系统板)USB不能识别导致无法下载程序的原因
  18. 通信大史记:互联网的起源故事
  19. mysql数据库二级好考吗_计算机二级考试选考哪个科目最好?
  20. 天猫精灵 python_利用天猫精灵控制ESP8266(NodeMCU开发板)arduino ide开发

热门文章

  1. 提取excel表数据成json格式的以及对图片重命名
  2. 如何判断对象是否存活/死去
  3. 解决ImmediateDeprecationError 用Python获取Yahoo数据
  4. [knowledge][lisp] lisp与AI
  5. ReentrantLock深入学习
  6. sun end seven game losing streak
  7. AdaBoost(1)
  8. matlab双目标定
  9. 20190718每日一句
  10. 写论文的一点经验小记