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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值