標簽:pre 初始 一個 tps 刷新 可屹滵化 sdn 合並 color
任何一個优化问题可屹滵化为一個函数问题,因此生物智能算法广泛应用,同样生物免疫算法(AIA)也是一种模拟达尔文生物进化的一個新型智能算法,生物免疫算法(AIA)根据生物系统抗体处理抗原机制,抗体进化以及最终消灭抗原,这一过程为生物免疫算法(AIA)全局寻优解的过程。
考慮到函數優化問題的普遍性,近些年來,很多學者應用新型算法對不同函數進行測試,例如算法的穩定性、泛華能力、有效性以及全局、局部尋優能力等,因此最優化函數問題(單目標和多目標函數優化問題)一直成爲廣大科研人員的研究熱點。根據測試函數得到的可能解,智能算法得到不斷的改進,理論基礎逐漸深入,使得散發本身更加穩健,能夠快速爲工程所用。
人工免疫系統正引起人們的極大重視,基于免疫系統原理開發了各類算法,遺傳算法GA、差分進化算法DE、蜂群算法ABC、魚群算法FSA等,在工程實際問題中,應用越來越廣泛,也取得越來越多的成果。
%%%%%%%%%%%%%%%%%%%%%%%免疫算法求解决TSP问题%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; %清除所有变量
close all; %清图
clc; %清屏
C=[1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;...
3238 1229;4196 1044;4312 790;4386 570;3007 1970;2562 1756;...
2788 1491;2381 1676;1332 695;3715 1678;3918 2179;4061 2370;...
3780 2212;3676 2578;4029 2838;4263 2931;3429 1908;3507 2376;...
3394 2643;3439 3201;2935 3240;3140 3550;2545 2357;2778 2826;...
2370 2975]; %31个省会城市坐标
N=size(C,1); %TSP问题的规模,即城市数目
D=zeros(N); %任意两个城市距离间隔矩阵
%%%%%%%%%%%%%%%%%%%%%求任意两个城市距离间隔矩阵%%%%%%%%%%%%%%%%%%%%%
for i=1:N
for j=1:N
D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
end
end
NP=200; %免疫个体数目
G=1000; %最大免疫代数
f=zeros(N,NP); %用于存储种群
for i=1:NP
f(:,i)=randperm(N); %随机生成初始种群
end
len=zeros(NP,1); %存储路径长度
for i=1:NP
len(i)=func3(D,f(:,i),N); %计算路径长度
end
[Sortlen,Index]=sort(len);
Sortf=f(:,Index); %种群个体排序
gen=0; %免疫代数
Ncl=10; %克隆个数
%%%%%%%%%%%%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while gen<G
for i=1:NP/2
%%%%%%%%%%%%选激励度前NP/2个体进行免疫操作%%%%%%%%%%%%%%%
a=Sortf(:,i);
Ca=repmat(a,1,Ncl);
for j=1:Ncl
p1=floor(1+N*rand());
p2=floor(1+N*rand());
while p1==p2
p1=floor(1+N*rand());
p2=floor(1+N*rand());
end
tmp=Ca(p1,j);
Ca(p1,j)=Ca(p2,j);
Ca(p2,j)=tmp;
end
Ca(:,1)=Sortf(:,i); %保留克隆源个体
%%%%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%%%%%%%
for j=1:Ncl
Calen(j)=func3(D,Ca(:,j),N);
end
[SortCalen,Index]=sort(Calen);
af(:,i)=SortCa(:,1);
alen(i)=SortCalen(1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:NP/2
blen(i)=func3(D,bf(:,i),N); %计算路径长度
end
%%%%%%%%%%%%%%%%%%%%免疫种群与新种群合並%%%%%%%%%%%%%%%%%%%%%
f=[af,bf];
len=[alen,blen];
[Sortlen,Index]=sort(len);
Sortf=f(:,Index);
gen=gen+1;
trace(gen)=Sortlen(1);
end
版本:2014a
【TSP】基于matlab免疫算法求解31城市旅行商问题【含Matlab源码 1149期】
標簽:pre 初始 一個 tps 刷新 可屹滵化 sdn 合並 color
原文地址:https://www.cnblogs.com/tanmenmatlab/p/15048465.html