MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)

举报
格图洛书 发表于 2021/11/19 00:25:59 2021/11/19
【摘要】 前言: 本文大体的思路是先对人工鱼进行编码,然后采用人工鱼群算法求解TSP问题中的觅食、聚群、追尾和随机行为对人工鱼群进行更新。   但是亟需需要解决的问题是:对于CVRP问题,如何对人工鱼进行编码。如果顾客数目为L,提供的车辆数目为K,那么编码的长度为K*L,编码的方式为对[1,K*L]之间所有整数的随机排序(用mat...

前言:

本文大体的思路是先对人工鱼进行编码,然后采用人工鱼群算法求解TSP问题中的觅食、聚群、追尾和随机行为对人工鱼群进行更新。

 

但是亟需需要解决的问题是:对于CVRP问题,如何对人工鱼进行编码。如果顾客数目为L,提供的车辆数目为K,那么编码的长度为K*L,编码的方式为对[1,K*L]之间所有整数的随机排序(用matlab语言表示为randperm(K*L)),编码表现形式为[S1,S2,...,SK*L],Sj表示第j个位置上的数字。

举个例子,如果顾客数目为3,提供的车辆数目为2,那么一条可能的人工鱼为[3 6 4 1 2 5]。

 

编码结束后,需要对人工鱼进行解码,即这条人工到底代表什么含义,或者说我们根据这条人工鱼能否解码出每个顾客由哪辆车服务,以及每辆车访问顾客的顺序是什么

下面开始对人工鱼进行解码处理:

已知:人工鱼的表现形式[S1,S2,...,SK*L],Sj表示第j个位置上的数字。

下面两个计算公式计算出第j个位置上的数字Sj所对应的顾客编号i和该顾客由车辆m进行服务。

 

文章来源: wenyusuran.blog.csdn.net,作者:文宇肃然,版权归原作者所有,如需转载,请联系作者。

原文链接:wenyusuran.blog.csdn.net/article/details/108400811

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。