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

本文详细介绍了使用MATLAB实现的帝国竞争算法,解决实际物流配送问题。通过40个连锁超市的需求和位置,目标是确定6个配送中心的位置,以最小化配送总成本。算法涉及国家划分、同化、革命和帝国竞争,最终找到最优配送中心组合。
摘要由CSDN通过智能技术生成

帝国竞争算法编程问题实例:

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 帝国主义竞争算法原理背景
在这里插入图片描述

帝国竞争算法(imperialist competitive algorithm,ICA)是Atashpaz-Gargari和Lucas提出的一种基于帝国主义殖民竞争机制的进化算法,属于社会启发的随机优化搜索方法。目前,ICA已被成功应用于多种优化问题中,如调度问题、分类问题和机械设计问题等。
帝国主义竞争算法,借鉴了人类历史上政治社会殖民阶段帝国主义国家之间的竞争、占领、吞并殖民殖民地国家从而成为帝国国家的演化,是一种全局性的优化算法。该算法把所有初始化的个体都称作国家,按照国家势力分成帝国主义国家及殖民地两种,前者优势大于后者。

2.2帝国竞争算法原理介绍:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

解释一下,一个国家其实可以看成一个解的表示。国家的势力通常由该国家所表示的解的好坏决定的。一般可以采用随机或者贪心的方式生成初始国家,然后计算目标函数,计算势力,再划分帝国主义国家和殖民地国即可。
在这里插入图片描述

2.2.2. 殖民地同化
帝国主义国家为了更好地控制其殖民地国家,将自己的思想模式及文化风俗推广到殖民地国家的过程,称为同化。ICA中通过所有殖民地向其所属帝国主义国家移动来模拟同化过程。当然这个移动可以看出解在解空间上的移动,与邻域搜索那个移动也有点类似,本质还是解的变换。
一个同化的例子如下,其实跟GA中的交叉很相似:
在这里插入图片描述

2.2.3. 殖民地革命
殖民地革命是对殖民地进行一定的移动,希望其能更靠近最优解的位置。但通常而言,对于一个社会来讲,不是说有的革命都是成功的有益的。革命也可能导致资源内耗,无法进行有效的社会变革从而降低殖民地的力量。一个殖民地革命的例子如下:
在这里插入图片描述

当一个殖民地国家通过同化和革命移动到一个新的位置后,殖民地的代价函数值可能比帝国主义国家小,也就是说殖民地的势力更大。此时,交换殖民地和帝国主义国家的位置,即殖民地成为该帝国的帝国主义国家,而原来的帝国主义国家则沦为殖民地。
在这里插入图片描述

完成上述步骤后,需要对帝国的权力进行重新计算。常见的计算方式是对帝国的权力和该帝国下的所有殖民地国家的权力进行加权。当然你直接加总也应该是可以的,具体还是取决于算法如何进行设计。

2.2.4. 帝国竞争
帝国竞争机制模拟的是现实社会中势力较强的帝国占有并控制势力较弱帝国的殖民地的过程。首先,需要计算帝国的总代价函数值,即势力大小。帝国主义国家对整个帝国的势力影响较大,而殖民地国家的影响非常小,因此ICA采用如下公式计算一个帝国的总代价:
在这里插入图片描述
地国家对整个帝国势力的影响程度。选择最弱的帝国中最弱的殖民地作为帝国竞争的对象,势力越大的帝国越有可能占有该殖民地。一般的做法是将势力最弱的那个帝国中最弱的殖民地重新分配给势力最强的帝国。
在这里插入图片描述

2.2.5. 帝国消亡
帝国之间的竞争,使势力大的帝国通过占有其他帝国的殖民地变得越来越强大,而势力弱的帝国殖民地个数不断减少,当一个帝国丢失所有的殖民地时,帝国覆灭。随着帝国的灭亡,最终剩下一个帝国,此时算法终止。
3.帝国竞争算法流程:

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

初始解(也就是优化之前的随机解):
所选配送中心编号为 21 18 14 4 16 25
配送中心21负责的超市点有 22 27 28 30 39
配送中心18负责的超市点有 1 6 9 12 19 23 32 36 37 40
配送中心14负责的超市点有 5 11 13
配送中心4负责的超市点有 2 3 8 24 26 33 34
配送中心16负责的超市点有 10
配送中心25负责的超市点有 7 15 17 20 29 31 35 38
总配送物流成本:21392.5472

用上述方法进行优化,先看下优化求解结果!
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值