LS-SDMTSP:基于鲸鱼迁徙算法(Whale Migration Algorithm,WMA)的大规模单仓库多旅行商问题(LS-SDMTSP)求解研究,MATLAB代码

一、鲸鱼迁徙算法

鲸鱼迁徙算法(Whale Migration Algorithm,WMA)是2025年提出的一种新颖生物启发式元启发式优化方法,其灵感来源于座头鲸的协作迁徙行为。该算法通过模拟座头鲸的迁徙和捕食行为,实现了在优化过程中的高效搜索和优化能力。WMA通过整合领导者-追随者动态和自适应迁徙策略,平衡了探索和开发之间的关系,从而提高了算法避免局部最优和有效收敛的能力。WMA通过模拟座头鲸的迁徙行为,实现了在搜索空间中的有效探索和开发。这种平衡使得算法能够在避免陷入局部最优的同时,快速收敛到全局最优解。WMA的自适应迁徙策略使其能够根据问题的复杂性和搜索空间的特性动态调整搜索策略,从而在不同的优化问题中表现出良好的适应性。
在这里插入图片描述

参考文献:
[1]Ghasemi, M., Deriche, M., Trojovský, P., Mansor, Z., Zare, M., Trojovská, E., Abualigah, L.M., Ezugwu, A.E., & Mohammadi, S.K. (2025). An efficient bio-inspired algorithm based on humpback whale migration for constrained engineering optimization. Results in Engineering.

二、大规模单仓库多旅行商问题原理

大规模单仓库多旅行商问题(Large-Scale Single-Depot Multi-Traveling Salesman Problem,LS-SDMTSP)是组合优化领域中一个极具挑战性的经典问题。其基本原理如下:
问题设定:假设存在一个单一仓库,所有旅行商均从该仓库出发,并最终返回仓库。地理空间中散布着大量客户节点,有多名旅行商组成团队。每名旅行商需要从仓库出发,依次访问一定数量的客户节点,再返回仓库。
目标:需要达成两个关键目标,一是确保所有客户节点至少被一名旅行商访问;二是以最小化所有旅行商的总行程距离为主要优化目标。当然,在实际应用中,根据具体需求,优化目标也可能转变为最小化总时间、总成本等其他指标。

三、部分MATLAB代码及结果

figure
bar(path_length)
ylabel('路径长度')
set(gca,'xtick',1:1:m);
set(gca,'XTickLabel',salemans)
title(Name)
saveas(gca,[Name '-length.jpg']);



figure
semilogy(CurveLine,'LineWidth',2);
xlabel('迭代次数')
ylabel('总路径长度')
legend('')
title(Name)
saveas(gca,[Name '-curve.jpg']);




%% 显示结果
fprintf('数据集:%s\n',Name)
for j=1:length(saleman_path)
    Kd=saleman_path{j};
    fprintf('算法得到的路径%d:\n',j)
    fprintf('具体路径信息:%d',Kd(1))
    for i=2:length(Kd)
        fprintf(' > %d',Kd(i));
    end
     fprintf(' 路径长度%f\n',path_length(j))
   
end
fprintf('算法求解得到的总路径长度:%f\n',sum(path_length));



数据集可以选择:
在这里插入图片描述

以数据集:tsp225为例

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

算法得到的路径1:
具体路径信息:69 > 58 > 59 > 2 > 47 > 225 > 190 > 189 > 205 > 191 > 199 > 133 > 49 > 207 > 51 > 57 > 69 路径长度299.000000
算法得到的路径2:
具体路径信息:69 > 52 > 44 > 46 > 195 > 194 > 218 > 193 > 45 > 48 > 196 > 192 > 224 > 50 > 55 > 56 > 69 路径长度425.000000
算法得到的路径3:
具体路径信息:69 > 54 > 53 > 42 > 43 > 6 > 4 > 197 > 198 > 200 > 1 > 3 > 5 > 7 > 8 > 41 > 69 路径长度605.000000
算法得到的路径4:
具体路径信息:69 > 70 > 40 > 9 > 10 > 18 > 19 > 203 > 20 > 17 > 16 > 12 > 11 > 38 > 39 > 74 > 69 路径长度605.000000
算法得到的路径5:
具体路径信息:69 > 75 > 31 > 36 > 24 > 23 > 22 > 21 > 15 > 14 > 13 > 37 > 32 > 76 > 72 > 71 > 69 路径长度555.000000
算法得到的路径6:
具体路径信息:69 > 219 > 217 > 29 > 204 > 26 > 25 > 208 > 34 > 33 > 35 > 30 > 202 > 206 > 216 > 73 > 69 路径长度402.000000
算法得到的路径7:
具体路径信息:69 > 100 > 98 > 97 > 78 > 77 > 28 > 79 > 80 > 81 > 221 > 95 > 209 > 96 > 99 > 69 路径长度368.000000
算法得到的路径8:
具体路径信息:69 > 102 > 101 > 93 > 94 > 83 > 82 > 84 > 85 > 86 > 131 > 210 > 87 > 90 > 92 > 91 > 69 路径长度354.000000
算法得到的路径9:
具体路径信息:69 > 103 > 89 > 130 > 211 > 222 > 132 > 215 > 134 > 135 > 164 > 129 > 128 > 88 > 220 > 104 > 69 路径长度449.000000
算法得到的路径10:
具体路径信息:69 > 105 > 127 > 166 > 162 > 161 > 140 > 139 > 138 > 137 > 136 > 183 > 163 > 158 > 213 > 165 > 69 路径长度516.000000
算法得到的路径11:
具体路径信息:69 > 126 > 167 > 160 > 159 > 141 > 142 > 201 > 143 > 144 > 157 > 156 > 155 > 154 > 151 > 106 > 69 路径长度532.000000
算法得到的路径12:
具体路径信息:69 > 107 > 214 > 152 > 153 > 146 > 145 > 147 > 148 > 149 > 150 > 212 > 168 > 125 > 109 > 108 > 69 路径长度453.000000
算法得到的路径13:
具体路径信息:69 > 67 > 110 > 123 > 171 > 174 > 176 > 177 > 178 > 179 > 180 > 172 > 170 > 169 > 124 > 65 > 69 路径长度550.000000
算法得到的路径14:
具体路径信息:69 > 64 > 114 > 113 > 175 > 120 > 185 > 184 > 182 > 181 > 173 > 122 > 121 > 111 > 112 > 66 > 69 路径长度433.000000
算法得到的路径15:
具体路径信息:69 > 68 > 61 > 60 > 27 > 188 > 117 > 187 > 186 > 119 > 118 > 115 > 223 > 116 > 62 > 63 > 69 路径长度336.000000
算法求解得到的总路径长度:6882.000000

四、完整MATLAB代码见下方名片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值