1.遗传算法的原理

遗传算法(GA)是一种启发式搜索算法。遗传算法基于自然选择和遗传学的思想. 遗传算法模拟自然选择的过程,即那些能够适应环境变化的物种能够生存和繁殖并进入下一代。简单地说,遗传算法模拟连续一代个体之间的“适者生存”来解决问题。每一代由一群个体组成,每个个体代表搜索空间中的一个点和可能的解决方案。每个个体可表示为字符串/整数/浮点数等,类似于染色体.

2.遗传算法基本概念

遗传算法是基于种群染色体的遗传结构和行为。以下是遗传算法的基础概念.

1.每条染色体(Chromosome)表示一个可能的解决方案;每条染色体由基因组成(Gene);种群(Population)是染色体的集合.

2.适应度函数用于衡量每条染色体的优劣.适应度更高的个体表明该方案更优秀,有更大的概率"遗传"给下一代.

3.选择.利用适应度函数计算出种群中每个个体的适应度后,优胜劣汰,从中挑选出优良个体组成新的种群.常见选择策略有轮盘赌(Roulette Wheel Selection),锦标赛选择(Tournament Selection)等.

3.1轮盘赌

个体被选择的概率与其适应度正相关,适应度越高的个体,被选择的概率更高.公式为

​​​​                          

个体的选择概率累加,即为为累加概率,直观理解,相当于上图轮盘各个个体对应的刻度(区域).公式为

​​​​​​​        ​​​​​​​                        

看到这里,有些读者可能会有疑问(没有的话聪明的你可以跳过进入下一节),如上图公式,累积概率还与个体的顺序有关,例如有四个个体,其对应的选择概率Pselect为[0.4,0.3,0.2,0.1],那么其累积概率则为[0.4,0.7,0.9,1],可知第四个个体的累积概率为1,那么每次选择难道不会都选择该个体吗?其实不会的,可以将其理解成分段函数,分别为[0,0.4],[0.4,0.7],[07,0.9],[0.9,1].对于一个随机概率,其落在这四段上的概率只与各段的长度相关,与其顺序无关.

3.2锦标赛选择

锦标赛选择是遗传算法中流行的选择策略,简单高效.所谓的锦标赛选择,就是从种群中随机选择若干个个体,在这些个体中比较其适应度,选择出适应度大的个体.

​​​​​​​

以3元锦标赛选择为例,如上图所示,从种群中随机选择3个个体,A,E,T.比较其适应度得分,最后选择出最优个体A.

4.交叉(Crossover)

交叉类似于生物的繁殖,利用"父母"的遗传特征,产生一个或多个后代。通常设置一个较大的交叉概率,在每轮"繁衍"的过程中,同时生成一个随机概率,若该概率小于交叉概率,则进行交叉操作,反之则直接接受父母的基因,不进行交叉.

常见的交叉操作有单点交叉,多点交叉等.

单点交叉,随机选择一个交叉点,交换交叉点后父母的基因以获得新的后代。

多点交叉,是单点交叉的推广,交叉点之间的基因段被交换以获得新的子代。

5.变异(Mutation)

在自然界中,少数新生的后代中,它们的一些基因可能会发生小概率的突变,导致出现与"父母"不同的性状。突变恰好照顾了种群之间的多样性并阻止了过早的收敛。

在实际的操作中,通常会设置一个较小的变异概率,如果变异概率很大,整个搜索过程就退化为一个随机搜索过程。所以,比较稳妥的做法是,进化过程刚刚开始的时候,取p为一个比较大的概率,随着搜索过程的进行,p逐渐缩小到0附近.

3. 遗传算法的基本流程

上面介绍了遗传算法的基本概念,下面以流程图的形式串起整个流程.

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                ​​​​​​​

在解决实际问题时,首先需要将问题抽象映射成可以以数字表示的形式.所谓的初始化,类似于编码,

算法程序是不能处理非数字形式的类型.例如笔者在进行车辆路径优化(Vehicle Routing Problems with Time Windows)算法开发时,首先需要将客户实际地址映射成这样[1,2,...] 由数字组成的address列表.其中每一个数字代表一个地址.在自然界中,动物种群的规模是一定的,所以在遗传算法中,种群的规模也是受限的.种群规模太小缺乏多样性,可行解的搜索空间小,生成的解的质量不高,种群规模过大会导致求解速度慢.

在实际操作中,随机打乱address列表,重复n次,这样就完成了初始化,生成了包含n个个体的种群.

对于遗传算法而言,每个个体代表一个解决方案.在初始化种群后,需要计算每个解决方案的适应度得分.

接上面的例子,在车辆调度任务,一般的优化目标为车辆行驶的总距离为

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                        ​​​​​​​

其中,i表示某条线路,n表示线路条数.distance_i 代表某条线路的距离.在一些例子中,这个距离是欧式距离.在实际生产中,通过一些地图api接口返回实际的行驶距离更具有可用性.

对于需要同时优化距离和运输车辆数量,可以设置一个固定的车辆成本系数C1,距离的惩罚系数C0,此时适应度函数优化目标为

​​​​​​​        ​​​​​​​                        

其中,Vehicles 表示实际使用的车辆数量,与线路条数的含义相同.

在计算完每个个体的适应度得分后.进行个体的选择.二元锦标赛选择(Binary Tournament Selection)是最常用的方法.

锦标赛选择的原理上文已经解释过,这里就一笔带过,每次随机选择两个个体(以二元锦标赛为例),比较其适应度得分,选择适应度高的个体,重复N次.选择出N个个体.

在选择出合适的个体后,下一步开始进行交叉操作.随机从种群中选择两个个体作为父本和母本,随机选择多个位置点进行基因的交换.原理不再赘述.在车辆路径优化中,个体或者说染色体是由运输点编码构成的,所以需要注意交叉后的染色体不可出现重复的数字,即同一个地点不可出现两次.

对于变异操作,在车辆调度中,由于每个基因代表一个实际的运输点,所以变异后的基因不可凭空或者重复出现,一个简单的方法是随机交换个体中某几个点的基因.

至此,遗传算法的整个流程就结束了,重复多次,直到达到算法停止条件,完成算法的求解.

4.总结

与传统方法相比,遗传算法速度更快,效率更高,能够优化连续和离散及多目标问题,并且总能得到问题的解.

不过GA并不适合所有问题,适应度值是重复计算的,所以对于某些问题,计算成本可能很高。 遗传算法在求解中过程中有很大的随机性,不能保证解决方案的最优性或质量,可能无法收敛到最佳解决方案.

从笔者的实际经验而言,在车辆路径规划问题中,遗传算法求解出的可行解质量相比于一些领域搜索算法而言,相对较差.

遗传算法原理及其在车辆路径规划中的应用相关推荐

  1. 【VRP】基于matlab遗传算法求解多中心车辆路径规划问题【含Matlab源码 1965期】

    ⛄一.VRP简介 1 遗传算法基本原理 遗传算法 (Genetic Algorithm, GA) 是由美国密歇根大学的John Holland教授首先提出的, 它基于达尔文的进化论和孟德尔的遗传学说, ...

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

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

  3. 【TWVRP】基于matlab遗传算法求解多车场开放式多商品带时间窗的车辆路径规划问题【含Matlab源码 1849期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  4. 【TWVRP】基于matlab遗传算法求解带时间窗且车辆速度车辆路径规划问题【含Matlab源码 2094期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  5. 【TWVRP】遗传算法求解带时间窗的含充电站车辆路径规划问题【含Matlab源码 1177期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  6. 【TWVRP】基于matlab模拟退火算法结合狼群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1075期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  7. 【TWVRP】基于matlab蚁群算法求解带时间窗车辆路径规划问题【含Matlab源码 1930期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  8. 【TWVRP】基于matlab模拟退火算法求解带时间窗的车辆路径规划问题【含Matlab源码 160期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  9. 【TWVRP】基于matlab蚁群算法求解带时间窗的车辆路径规划(成本最低)【含Matlab源码 2514期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  10. 【配送路径规划】基于matlab蚁群优化节约算法单中心多城市配送车辆路径规划【含Matlab源码 017期】

    一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述 ...

最新文章

  1. 从零开始写一个武侠冒险游戏-3-地图生成
  2. 2018牛客网暑期ACM多校训练营第二场 D - money(贪心)
  3. python爬虫程序-Python网络爬虫实战(一)快速入门
  4. Objective-C设计模式——生成器Builder(对象创建)
  5. 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
  6. 放弃Venn-Upset-花瓣图,在线拥抱二分网络
  7. 论文英文参考文献[10]的时候后面多空格_英文学术论文标点符号使用规范
  8. 最强编程大法,太强了!
  9. 我是如何旅游 5 个月拿到 3 份 Offer 并收入翻倍的
  10. JavaScript - 初识
  11. 机器学习中的Bias,Error,Variance的区别
  12. 北京大学Cousera学习笔记--7-计算导论与C语言基础--基本数据类型变量常量
  13. FaceBoundingBoxInInfraredSpace 得到的深度空间的数值为空
  14. python源码打包成exe、exe反编译、pyd加密防止反编译
  15. 淘宝客升级助手V1.0 等级升级获取高级账户,淘客适用高佣金破解版
  16. 内网集群 无法通信_IPSEC连接成功,内网之间却无法互相通信。
  17. 前端技术教学第一周 10.15
  18. 动态规划——Weighted Interval Scheduling
  19. python编写五子棋小游戏 (电脑自走棋)
  20. 把ubuntu安装在U盘的教程之一:制作U盘启动盘

热门文章

  1. git学习笔记——廖雪峰git教程
  2. Unity Shader 屏幕后效果——颜色校正
  3. c#明华rf读卡器_明华URF-R330读卡器C#代码示例
  4. 曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
  5. 企业架构TOGAF认证培训
  6. sql查询、删除重复相同数据的语句或只保留一条数据
  7. fortran语言能用matlab,fortran语言与matlab
  8. oracle11g数据库登录01017,【数据库管理】ORA-01017错误及部分的常见典型案例-Go语言中文社区...
  9. Git可视化下载及团队协作及diff工具
  10. 北京1954坐标转为经纬度坐标