【旅行商问题】免疫算法之求解旅行商问题【Matlab 160期】

一、简介

免疫算法是在克服遗传算法不足的基础上,提出的一种具有更强鲁棒性和更快收敛法速度的搜索算法。它可以很好地解决遗传算法中出现的退化现象,所以在解决复杂的最其及优问题时具有广泛的应用。
例如,旅行商问题:一个商人从某一城市出发,要遍历所有目标城市,其中每个城市必须而且只须访问一次。其具体过程如下
1 个体编码和适应度函数
(1)算法实现中,将TSP问题的目标函数对应于抗原,问题的解对应于抗体。
(2)抗体采用以遍历城市的次序排列进行编码,每一抗体码串形如:V1,V2,…,Vn,其中V表示遍历城市的序号。适应度函数取路径长度Td倒数:

2 交又与变异算子
采用单点交叉,其中交又点的位置随机确定。算法中加入了对遗传个体基因型特征的继承性和对进一步优化所需个体特征的多样性进行评测的环节,在此基础上设计了种部分路径变异法。
该方法每次选取全长路径的一段,路径子段的起点与终点由评测的结果估算确定具体操作为采用连续n次的调换方式,其中n的大小由遗传代数K决定。
3 免疫算子
免疫算子有两种类型全免疫(非特异性免疫)和目标免疫(特异性免疫),其中全免疫即群体中的每个个体在进化算子作用后,对其每一环节都进行一次兔疫操作的免疫类型;目标免疫即在进行了进化操作后,经过一定的判断,个体仅在作用点处发生免疫反应的一种类型。
对于旅行商问题,要找到适用于整个抗原(即全局问题求解)的疫苗极为困难,所以我们采用目标免疫。
在求解问题之前先从每个城市点的周围各点中选取一个路径最近的点,以此作为算法执行过程中对该城市点进行目标免疫操作时所注人的疫苗母次遗传操作后,随机抽取一些个体注射疫苗,然后进行免疫检测,即对接种了疫苗
的个体进行检测:若适应度提高,则继续;反之,若其适应度不如父代,说明在交叉、变异的过程中出现了严重的退化现象,这时该个体将被父代中所对应的个体所取代。
在选择阶段,先计算其被选中的概率,后进行相应的条件判断。
4 案例
下面选取8个城市的规模,随机生成城市的坐标。

二、源代码

clear all
clc
N=8;               
%城市的个数
M=N-1;               
%种群的个数
pos=randn(N,2);
%%生成城市的坐标
global D;
%城市距离数据
D=zeros(N,N);
for i=1:N
    for j=i+1:N
        dis=(pos(i,1)-pos(j,1)).^2+(pos(i,2)-pos(j,2)).^2;
        D(i,j)=dis^(0.5);
        D(j,i)=D(i,j);
    end
end
unction result = CharRecompose(A)
global D;
index = A(1,2:end);
tmp = A(1,1);
result = [tmp];
[m,n] = size(index);
while n>=2
    len = D(tmp,index(1));
    tmpID = 1;
    for s = 2:n
        if len > D(tmp,index(s))
            tmpID = s;
            len = D(tmp,index(s));
        end
        function result = DisplaceInit(A)
[m,n] = size(A);
tmpCol = 0;
for col = 1:n
    if A(1,col) == 1
        tmpCol = col;
        break;
    end
end

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ912100926。
往期回顾>>>>>>
【路径规划】粒子群优化算法之三维无人机路径规划【Matlab 012期】
【路径规划】遗传算法之多物流中心的开放式车辆路径规划【Matlab 013期】
【路径规划】粒子群算法之机器人栅格路径规划【Matlab 014期】
【路径规划】蚁群算法之求解最短路径【Matlab 015期】
【路径规划】免疫算法之物流中心选址【Matlab 016期】
【路径规划】人工蜂群之无人机三维路径规划【Matlab 017期】
【路径规划】遗传算法之基于栅格地图机器人路径规划【Matlab 018期】
【路径规划】蚁群算法之多无人机攻击调度【Matlab 019期】
【路径规划】遗传算法之基于栅格地图的机器人最优路径规划【Matlab 020期】
【路径规划】遗传算法之考虑分配次序的多无人机协同目标分配建模【Matlab 021期】
【路径规划】蚁群算法之多中心vrp问题【Matlab 022期】
【路径规划】蚁群算法之求解带时间窗的多中心VRP【Matlab 023期】
【路径规划】遗传算法之多中心VRP求解【Matlab 024期】
【路径规划】模拟退火之求解VRP问题【Matlab 025期】
【路径规划】A星之栅格路径规划【Matlab 026期】
【路径规划】基于一种带交叉因子的双向寻优粒子群栅格地图路径规划【Matlab 027期】
【路径规划】【TSP】蚁群算法之求解TSP问题含GUI【Matlab 028期】
【路径规划】蚁群算法之栅格地图路径规划【Matlab 029期】
【路径规划】遗传算法之旅行商 TSP 【Matlab 030期】
【路径规划】模拟退火算法之旅行商 TSP 问题【Matlab 031期】
【路径规划】蚁群算法之智能车路径规划【Matlab 032期】
【路径规划】华为杯:基于matlab 无人机优化运用于抢险救灾【Matlab 033期】
【路径规划】matlab之最小费用最大流算问题【Matlab 034期】
【路径规划】A*算法之解决三维路径规划问题【Matlab 035期】
【路径规划】人工蜂群算法之路径规划【Matlab036期】
【路径规划】人工蜂群算法之路径规划【Matlab 037期】
【路径规划】蚁群算法之求解多旅行商MTSP问题【Matlab 038期】
【路径规划】蚁群算法之无人机路径规划【Matlab 039期】

【路径规划】遗传算法之求解多VRP问题【Matlab 040期】
【VRP】遗传算法之带时间窗的车辆路径问题【Matlab 041期】
【路径规划】蚁群算法之三维路径规划【Matlab 042期】
【路径规划】粒子群优化蚁群之求解最短路径【Matlab 043期】
【TSP问题】差分进化之求解TSP问题【Matlab 044期】
【路径规划】RRT之三维路径规划【Matlab 144期】
【路径规划】人工势场算法之无人机编队路径规划【 Matlab 145期】
【VRP问题】节约算法之求解TWVRP问题【Matlab 146期】
【VRP问题】节约算法之求解CVRP问题【Matalb 147期】
【VRP问题】禁忌搜索算法之求解VRP问题【Matalb 148期】
【VRP问题】模拟退火算法之求解CVRP问题【Matlab 149期】
【VRP问题】模拟退火求解带时间窗之TWVRP问题【Matlab 150期】
【VRP问题】人工鱼群算法之求解带时间窗VRP问题【Matlab 151期】
【VRP问题】遗传算法之求解带容量VRP问题【Matlab 152期】
【路径规划】狼群算法算法之三维路径规划【Matlab 153期】
【路径规划】人工势场算法之无人机三维路径规划【Matlab 154期】
【路径规划】改进差分算法之三维多无人机协同航迹规划【Matlab 155期】
【路径规划】人工蜂群算法之多无人机三维路径规划【Matlab 156期】
【路径规划】麻雀搜索算法之无人机三维路径规划【Matlab 157期】
【路径规划】蚁群算法之三维路径规划【Matlab 158期】
【路径规划】免疫算法之最短路径规划【Matlab 159期】

猜你喜欢

转载自blog.csdn.net/m0_54742769/article/details/113725477