MATLAB水母搜索算法求解超市物流配送选址问题实例
作者:麦哥

MATLAB水母搜索算法求解超市物流配送选址问题代码实例

水母搜索算法编程问题实例:
在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表1。要求在该矩形区域内确定6个位置建立配送中心。已知各配送中心容量不限,每个超市只由一个配送中心负责配送,使得6个配送中心到所有超市的总配送物流量(距离×需求量)最小,其中配送中心到超市的距离为直线距离。请建立该问题的模型,利用鲸鱼优化算法编程求解上述问题。

表1 各需求点坐标及需求量(仅以此为例,在代码中也可以修改成自己的坐标和需求量,配送中心的数目(这里是6个)也可以修改)

No. 坐标 需求量 No. 坐标 需求量 No. 坐标 需求量 No. 坐标 需求量
1 (1,0) 10 11 (82,95) 30 21 (56,34) 70 31 (17,80) 90
2 (33,3) 10 12 (21,42) 40 22 (86,26) 20 32 (29,33) 50
3 (35,21) 40 13 (95,83) 30 23 (17,42) 10 33 (40,24) 20
4 (53,19) 10 14 (92,81) 20 24 (69,16) 20 34 (41,5) 40
5 (70,94) 40 15 (45,60) 20 25 (53,64) 30 35 (49,98) 10
6 (27,44) 30 16 (66,59) 30 26 (62,0) 30 36 (0,40) 40
7 (10,69) 10 17 (54,72) 20 27 (78,26) 30 37 (6,7) 20
8 (56,4) 20 18 (11,40) 10 28 (46,38) 20 38 (25,97) 20
9 (16,81) 40 19 (12,67) 20 29 (37,58) 50 39 (35,40) 30
10 (68,76) 30 20 (47,49) 30 30 (60,27) 30 40 (19,19) 50

2 求解模型的水母搜索算法设计
2.1 水母搜素算法原理背景

水母生活在世界上不同深度和温度的水中。它们酷似钟状,一些水母的直径小于1cm,然有些水母直径则非常大。它们有各种各样的颜色、大小和形状。大多数水母偏好海洋环境。它们进食的方式有两种:1.利用触手把食物送进嘴里;2.以触手过滤水中的微小的浮游生物,经口腕沟靠纤毛作用送入口.然而,它们捕食方式也有两种:1.食用洋流带来的任何食物(被动);2.主动捕食猎物,利用触手刺中猎物,令其动弹不得(主动)。

水母利用触手刺中猎物,释放毒素,令其麻木。它们不会攻击人,但是触碰到它们的人可能会被蛰死。有些水母刺人很疼,但是不是致命的。表现的症状有引起疼痛、红肿、瘙痒、麻木等。然而,箱水母,又称海黄蜂,非常危险,致人死亡。这类水母多数出现在澳大利亚、菲律宾沿海水域,印度洋和太平洋中部。当它们聚集在一起形成水母潮时,才是最危险的。

水母可以自己控制移动。它们下侧像一把伞一样合拢,利用体内喷水反射前进。尽管它们拥有这种能力,但是它们大多数漂流在水中依靠洋流和潮汐运动。当条件有利时,水母会形成群,这种被称为水母潮。水母是一种脆弱的生物,维持水母潮的关键是它们相对洋流的方向,才不至于被搁浅。

水母潮形成的因素包括:洋流、可利用的营养物、氧气的可用性、捕食和温度等。在这些因素中,洋流是水母潮形成的主要因素。因为水母可以生活在高咸度和低氧区域,所以它们无须和其他生物竞争食物。咸水含有大量的碘,有利于水母息肉的产生。海水温度的上升,有利于水母潮的产生。因为在这种情况下,水母更容易存活。总而言之,水母潮的形成离不开生态系统和洋流地影响。

洋流(Ocean Current),即海流,也称洋面流,是指海水沿着一定方向有规律的具有相对稳定速度的水平流动,是从一个海区水平或垂直地向另一个海区大规模的非周期性的运动,是海水的主要运动形式。洋流的尺度非常大。例如,在开阔的海洋中,洋流移动大约是次中等尺度;它们的大小可能只有几百米左右的中尺度特征,或者少数可能在几十公里左右。它们可能横穿或环绕整个海洋盆地,就像墨西哥湾流(北大西洋)、黑潮流(太平洋)和阿古拉斯洋流(印度洋)。形成洋流地主要因素是太阳辐射和海平面地风。

水母自身的运动和洋流的运动促成了水母潮的形成,这种现象在海洋中随处可见。水母去的地方,食物数量各不相同。因此,通过食物比例的比较,确定最佳位置。

2.2 水母搜索算法数学模型
2.2.1 模型假设
2020年Chou等人提出水母搜索算法.该算法基于三个理想化规则:
1.水母要么跟随洋流,要么在群内自身移动,这两者运动由时间控制机制切换;
2.在海洋中,水母寻找食物。它们更多被食物数量多的位置吸引;
3.找到的食物数量由该位置和对应的目标函数决定。

2.2.2 洋流
因为洋流中含有大量水母所需的营养物,所以水母才会被吸引过来。洋流的方向由水母种群位置的平均值和当前水母最好位置决定。洋流方向的定义如下:

2.2.3 水母种群
在水母种群中,有两种运动方式:主动运动和被动运动。水母群刚刚形成,多数水母进行被动运动,经过一段时间后,它们逐渐进行主动移动。
被动运动:水母围绕自身位置移动,位置更新公式如下:

2.2.4 时间控制机制
洋流中含有大量的营养物,所以引来水母。随着时间的流逝,越来越多的水母聚集在一起形成水母群。随着洋流中温度或风力的变化,种群中的水母朝另外洋流移动,并导致另外的水母群形成。在水母群中有被动运动和主动运动。刚开始水母侧重被动运动,随着时间的流逝,主动运动越来越受水母的欢迎。
介于这种状况,作者引入时间控制机制。时间控制机制利用时间控制函数c(t)和c0
控制洋流和种群内部运动之间的转换。时间控制函数是随时间从0-1波动的随机值。公式如下:

2.3 初始化种群
水母种群通常都是随机初始化的。这种方法的缺陷是收敛速度慢,易陷入局部最优且种群多样性低。为了提高初始化种群多样性,许多混沌映射被开发。比如,logistic map、tent map、Liebovitch map. 其中,logistic是最简单的一种混沌映射。这种初始化的种群比随机初始化种群更具有多样性。映射公式如下:

2.4 边界处理
海洋遍布世界。地球近似球形,所以当水母移动超出搜索边界,将会超边界相反的方向移动。公式如下:


3.水母搜索算法流程:
步骤1:初始化算法水母种群。
步骤2:评估适应度值确定初始最优位置。
步骤3:更新时间控制参数 c ( t ) 。
步骤4:根据洋流更新水母位置.
步骤5:更加运动类型分别更新类型A和B的水母位置。
步骤6:重新评估适应度值及更新水母最优位置。
步骤7:判断是否满足最大迭代次数,若满足,则输出最优位置和全局最优解,否则,返回步骤3重新迭代计算。


已知信息:40个超市的坐标位置图

如何确定6个位置建立配送中心,使得6个配送中心到所有超市的总配送物流量(距离×需求量)最小呢?当然是通过算法优化求解啦!
注:仅以此为例,在代码中也可以修改成自己的坐标和需求量,配送中心的数目(这里是6个)也可以修改

先看下求解结果!
4.运行结果:


最优解:
所选配送中心编号为 3 31 12 11 15 30
配送中心3负责的超市点有 1 2 33 34 37 40
配送中心31负责的超市点有 7 9 19 38
配送中心12负责的超市点有 6 18 23 32 36 39
配送中心11负责的超市点有 5 10 13 14 35
配送中心15负责的超市点有 16 17 20 25 29
配送中心30负责的超市点有 4 8 21 22 24 26 27 28
总配送物流量:13904.5804

MATLAB水母搜索算法求解超市物流配送选址问题代码实例相关推荐

  1. MATLAB人工蜂群算法求解超市物流配送选址问题代码实例

    MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 人工蜂群算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内,散布 ...

  2. MATLAB模拟退火算法求解超市物流配送选址问题实例

    模拟退火算法编程问题实例: MATLAB模拟退火算法求解超市物流配送选址问题实例 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表1.要求在该矩 ...

  3. MATLAB灰狼优化算法求解超市物流配送中心选址问题代码实例

    MATLAB灰狼算法求解超市物流配送选址问题实例 作者:麦哥 MATLAB灰狼优化算法求解超市物流配送中心选址问题代码实例 灰狼算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内, ...

  4. MATLAB帝国(主义)竞争算法求解超市物流配送选址问题实例

    帝国竞争算法编程问题实例: MATLAB帝国竞争算法求解超市物流配送选址问题代码实例 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表1.要求在 ...

  5. MATLAB遗传算法求解超市物流配送选址问题实例

    遗传算法编程问题实例: MATLAB遗传算法求解超市物流配送中心选址问题代码实例 添加链接描述 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表 ...

  6. MATLAB差分进化算法求解超市物流配送选址问题实例

    差分进化算法编程问题实例: MATLAB差分进化算法求解超市物流配送中心选址问题代码实例 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表1.要 ...

  7. MATLAB粒子群算法求解超市物流配送选址问题实例

    粒子群算法编程问题实例: MATLAB粒子群算法求解超市物流配送选址问题实例 粒子群算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需 ...

  8. MATLAB麻雀搜索算法求解物流配送中心选址问题实例代码

    实例视频: MATLAB麻雀搜索算法求解物流配送中心选址问题优化实例 1.问题描述 根据目前已知所需客户点位置.备选中心位置和客户需求货物的前提下,指定选址位置,合理设计配送路线,使运输成本趋于最小化 ...

  9. 【背包问题】基于matlab禁忌搜索算法求解背包问题【含Matlab源码 373期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[背包问题]基于matlab禁忌搜索算法求解背包问题[含Matlab源码 373期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付 ...

最新文章

  1. 「创式纪」人工智能应用创新大赛启动,首次结合商业计划和机器学习
  2. 人工智能将会如何影响和服务医疗行业?未来十年会有哪些值得期待的应用?
  3. 马库斯开喷GPT-3:演员而已,它根本不知道自己在说什么
  4. 利用python爬虫(part10)--Xpath节点集与函数
  5. 源码都没调试过,怎么能说熟悉 redis 呢?
  6. centos7 安装mysql php_Centos7 安装mysql与php
  7. 中国大学MOOC-数据结构基础习题集、06-3、公路村村通
  8. TCP UDP的区别
  9. ASP.NET架构分析
  10. SpringBoot - 资源国际化
  11. ndarray是什么_python数据分析用什么软件?
  12. ASP中FSO的神奇功能(1)
  13. Spark-TaskSchedule和TaskScheduleImpl解释和过程
  14. DataGrid与SQL Server 2000数据绑定
  15. linux客户端掉线重连,SSH自动断开后重连的解决方案
  16. 计算机知识技能大赛总结,计算机技能大赛总结.doc
  17. helm模板开发-流程控制、作用域、循环
  18. java中怎么使用json数据_java中使用Json数据
  19. SpringCloud-Seata分布式事务服务案例之订单Order服务搭建(Day16)
  20. ipv4转ipv6的算法

热门文章

  1. Mscomm32使用记录
  2. 魔兽争霸三加密地图修改工具
  3. Makefile 零基础学习笔记:if 的用法
  4. 谭浩强C++习题答案
  5. 《本草纲目拾遗》清代医学家赵学敏编著
  6. SCI期刊的检索及其影响因子
  7. OkHttp实现多线程断点续传下载,单例模式下多任务下载管理器,一起抛掉sp,sqlite的辅助吧
  8. 在KVM虚拟机中使用spice
  9. linux不识别指纹仪,Ubuntu t43指纹仪安装
  10. Web图片在线压缩优化工具