结合邻域连接法的蚁群优化(NACO)求解TSP问题附Matlab代码

简介: 结合邻域连接法的蚁群优化(NACO)求解TSP问题附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

旅行商问题(TSP)是运筹学、数学优化和理论计算领域的经典算法问题。推销员必须绕过最短路线,绕过一定数量的地方,返回起点。精确算法和启发式算法都用于解决 TSP。

设计用于获得具有阶乘复杂性的精确解的精确算法被归类为 NP-Complete。启发式方法的解决方案都基于优化问题。这些算法的复杂性低于精确算法。因此,它可以在更少的时间和空间内给出解决方案,并用于近似解足以解决问题的情况,特别是在很难获得精确解的情况下。

本论文的首要目的是强调每种 TSP 方法的要求、局限性和能力,以指导科学家和研究人员根据他们的特定需求选择最合适的方法。它对最有效和广泛使用的 TSP 方法进行了全面调查,通过研究它们的方法来阐明它们的主要区别,以发现它们的优缺点。

蚁群优化 (ACO) 考虑了一种启发式方法,它具有很强的达到最优 TSP 解决方案的能力。它源于蚂蚁在自然界中的自然行为——基于分析真实的蚂蚁在群体中寻找和储存食物的思考。本论文的第二个目的是提出一种新的混合算法来解决TSP。它将由 ACO 和 Neighbor Joining (NJ) 组成的结构称为 (NACO)。新算法集中关注所有可能影响解的准则并将其应用到TSP中,与原蚁群算法相比,解得到很多改进,特别是在减少计算量和时间上.

此外,本文还介绍了并行NACO作为高性能TSP的高效并行程序。建议在单独的执行线程中并行运行蚂蚁,以受益于每个蚂蚁的独立操作,并通过使用多核系统实现并行算法。拟议的程序由 MATLAB® R2017a(版本 9.2)编写,并在配备 8GB RAM 和英特尔酷睿 i7-8565U CPU、64 位 Windows 操作系统的惠普计算机上实施。获得的结果表明,相对于 NACO,复杂度降低到 O(n^2 (n-ω))。至于 PNACO,复杂度从 O(n(n⁄p)(n-ω)) 降低,此外加速度高达 10。

⛄ 部分代码

%%PNACO

%%New hybrid methods to solve the model of traveling salesman problem based-on meta-heuristic method

%% A thesis Submitted to the College of Education for Pure Sciences,

%% Tikrit University as a Partial Fulfillment of Requirements for the Degree

%% of Master of Sciences in Mathematics

%% By (Warif B.B. Yahia)&(Dr Mohammed W. Al-Neama)&(Dr. Ghassan E. Arif)

%% 2020 A.D = 1441 A.H

%% The main idea of the NACO method is to reduce the distance matrix generated

%by the cities which the salesman must to visits. Where the NACO try to merge the

%cities by building a phylogenetic tree and then generating a new matrix called

%LEAF1 which represent the first stage of the joined leaves.When the salesman

%reach any city within this matrix,he will move directly to the next

%corresponding city without doing any computations.


%% Start with ACO

clc;

clear;

close all;

profile on

for s=2:2

%% Read the Dataset


D_Set=CreateD_Set('5.txt');

% D_Set=D_Set1;

% % load('D_Set.mat');

% D_Set1=D_Set;

CostFunction=@(tour) L_Tour(tour,D_Set);

no_Var=D_Set.n;



%% The Parameters


Iteration=1;                          % No. of Iterations

no_ant=1;                             % Population Size (No. of Ants)

Q=100;

%t0=1;

t0=10*Q/(no_Var*mean(D_Set.D(:)));      % Initial Phromone

alpha=1;                                % Phromone Exponential Weight

beta=5;                                 % Heuristic Exponential Weight

rate=0.7;                              % Evaporation Rate


%% Initialization


eta=1./D_Set.D;                         % Heuristic Information Matrix

t=t0*ones(no_Var,no_Var);               % Phromone Matrix

BC=zeros(Iteration,1);                  % Array to Hold Best Cost Values


% Empty Ant

empty_ant.Tour=[];

empty_ant.Cost=[];


% Ant Colony Matrix

ant=repmat(empty_ant,no_ant,1);


% Best Ant

BS.Cost=inf;


% the Level_one of NJ

Leaf=Leaf_1(D_Set.D);


% Runtime

T_1 = cputime;


%% NEW_ACO Main Program


for it=1:Iteration    

   for k=1:no_ant                      % Move Ants

       Leaf1=Leaf;

       ant(k).Tour=randi([1 no_Var]);  %% {choose a random non visited city}

       city=ant(k).Tour;

       for l =2:no_Var

           ant_tour=ant(k).Tour(end);          

profile viewer


% filename = 'resuls.xlsx';

% A = {Time,num2str(BC(it)),no_Var,Iteration};

% sheet = 1;

% xlRange = 'A22';

% xlswrite(filename,A,sheet,xlRange)

%filename = 'resuls.xlsx';

%A = {Time,num2str(BC(it)),no_Var,Iteration};

%sheet = 1;

%cell_num = sprintf('A%s',num2str(s));

%xlRange = cell_num;

%xlswrite(filename,A,sheet,xlRange)

end

%%% Results4

figure;

plot(BC,'LineWidth',2);

xlabel('Iteration');

ylabel('Best Cost');

grid on;

% saveas(gcf,'It_BC_48_N_1.png');



% filename = 'resuls.xlsx';

% A = {'Time(s)','Best Cost','no Cities','no it'};

% sheet = 2;

% xlRange = 'A1';

% xlswrite(filename,A,sheet,xlRange)

⛄ 运行结果

⛄ 参考文献

"A HYBRID OPTIMIZATION ALGORITHM OF ANT COLONY SEARCH AND NEIGHBOUR-JOINING METHOD TO SOLVE THE TRAVELLING SALESMAN PROBLEM"‏, Advanced Mathematical Models & Applications Vol.5, No.1, 2020, pp.95-110

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
7天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
86 14
|
7天前
|
存储 算法 安全
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
7天前
|
算法 数据可视化 异构计算
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 运维 算法
【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)
【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 负载均衡 算法
【柔性作业车间调度】基于四种多目标优化算法(NSOOA、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度】基于四种多目标优化算法(NSOOA、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
|
9天前
|
算法 计算机视觉
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
|
9天前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
|
9天前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)

热门文章

最新文章