PSO应用TSP中Basic Swap Sequence(交换子)构造

在pso应用于离散优化例如tsp时,由于其算法本身是针对连续区间的,因此需要对其进行改造。本文针对pso中更新粒子所用到的基本交换子的构造进行简单记录。

在连续区间的pso中在更新位置时,会有一个向此时最优位置靠拢的操作。但需要注意的是针对连续区间的靠拢操作对于离散的tsp并不适用,故采取BBS来代替。基本定义可参考本文

基本流程如下:
PSO应用TSP中Basic Swap Sequence(交换子)构造_第1张图片

matlab实现(求解x_>pbest的BBS)

function [ bbs ] = bbs_solve(pbest,x)
len = length(pbest);    %获取长度
bbs = ones((len-1)*2,1);
for i =1:len-1          
    index = find(x == pbest(i));
    if i~=index         %i与x对应下标相同与否
      bbs(2*i-1) = i;
      bbs(2*i) = index;
    end
    % 交换
    tmp = x(index);      
    x(index) =x(i);
    x(i) = tmp;
end
end

你可能感兴趣的:(智能算法与机器学习,数学建模,matlab,算法,pso)