欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

基于 SA 模拟退火算法的多车辆 TSP 问题 Matlab 仿真,实现多车辆单独搜索最优路径

最编程 2024-04-16 10:03:49
...
武汉源创会回归,4月20聊聊大模型”

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

2.算法涉及理论知识概要

 

 

 

      在求解TSP这种整数规划问题的时候, PSO显然与ACO不同, PSO需要对算法本身进行一定的修改, 毕竟PSO刚开始是应用在求解连续优化问题上的.

 

    在路径规划中,我们将每一条路径规划为一个粒子,每个粒子群群有 n 个粒 子,即有 n 条路径,同时,每个粒子又有 m 个染色体,即中间过渡点的个数,每 个点(染色体)又有两个维度(x,y),在代码中用 posx 和 posy 表示一个种群。 通过每一代的演化,对粒子群进行演化操作,选择合适个体(最优路径)。

 

 

 

3.MATLAB核心程序

T0 = 500 ; % initial temperature
r = 0.997 ; % temperature damping rate
Ts = 1 ; % stop temperature
iter = 300;
 
model = initModel();
set(gcf,'unit','normalized','position',[0,0.35,1,0.7]);
 
flag = 0;
 
% initialization
while(1)
route = randomSol(model);
if(isFeasible(route,model)) 
    break; 
end
end
 
cost = calculateCost(route,model);
T = T0;
 
cnt = 1;
minCost = cost;
minRoute = route;
    
maxIterate = 2100;
costArray = zeros(maxIterate,1);
 
% SA
while(T > Ts)
    for k = 1:iter
    mode = randi([1 3]);
    newRoute = createNeibor(route,model,mode);
    newCost = calculateCost(newRoute,model);
    delta = newCost - cost;
    
    if(delta < 0)
        cost = newCost;
        route = newRoute;
    else
        p=exp(-delta/T);
        if rand() <= p 
             cost = newCost;
             route = newRoute;
             
        end
    end
    end