改进遗传算法

改进遗传算法

相较于传统的遗传算法,主要的改进为添加了自适应灾变,使得不会局限于局部最优解。另外,该算法中包括了添加改进的自适应灾变+锦标赛选择方法+最大保留交叉算法+逆转变异+异质车辆。可适用于异质车辆配送路径规划,考虑了碳排放和满意度(包含时间窗)。代码中考虑的目标包括了时间、顾客满意度、运输成本和收益、碳排放量等。自适应度公式可参考代码中的计算方式,也可以后续修改。

算法流程图

目前解决多目标路径规划问题最常用的求解方法包括2种:精确算法和启发式算法。精确算法适用于解决规模较小的线性规划问题,但当遇到计算规模较大的问题时,精确解难以获得且代价太高,而启发式算法能够在较短时间内获得大规模非线性问题的较优解,对于本文研究的问题具有较强的适应性,因此本文设计改进遗传算法对模型进行求解。
在传统遗传算法的结构中,变异操作在交叉操作基础上进行,强调的是交叉作用,认为变异只是一个生物学背景机制。同时,外卖员配送的时效性具有严格要求,路径规划算法需要在短时间内提供最优的结果,而该情形下骑手接受订单数量是有限的,算法中的种群数目较少,容易出现局部最优的情况。为有效解决以上问题,本文首先将变异操作从交叉操作中分离出来,使其成为并列于交叉的独立寻优操作。而后,本文创新性地引入“灾变操作”,模拟自然界中灾难发生的情况,保留最优个体,在其他个体随机化的条件下不断迭代更新。
改进遗传算法流程图

编码与解码匹配

本文采用随机编码算法,保证了遗传算法搜索空间的广度和深度。将 个目的地转化为从1至 的自然数,然后通过排列组合形成染色体。在解码匹配的过程中,本文解码匹配车辆过程遵循“避闲优载”的方法,即在初始染色体的基础上,计算在同一配送路径上两种车型的实际运载量,选择闲置载量最低的车辆优先进行配送。

自适应

通过采用自动变化的交叉概率和变异概率控制遗传操作,当寻优结果出现停滞状态并且持续时间超过一定阈值时,算法会自动增大交叉概率和变异概率,增加算法对新的搜索空间的开辟能力,帮助算法跳出局部解。
根据自适应函数策略得到的交叉概率和变异概率

交叉

本文采用最大保留交叉方法。

变异

本文使用逆转变异操作。

灾变

本文首先设置初始值R和初始的计数器C=0,每迭代一次,计数器C的值就增加1,若出现了新的最优解,则计数器的值归零。当计数器 的值超过了 时,本文认为产生了局部最优解,此时进行灾变操作,即生成新的个体。通过灾变操作,可以使得当前远离极值的个体充分得到进化,防止陷入局部最优解。

代码

后续补充代码及相关注释

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值