免疫算法小结及算法实例(附Matlab代码)

article/2025/9/24 13:46:41

文章目录

    • 1、免疫算法流程
    • 2、关键参数说明
    • 3、MATLAB仿真实例
        • 3.1 免疫算法求一元函数的极值
        • 3.2 免疫算法求二元函数的极值
        • 3.3 免疫算法求解旅行商问题
    • 4、免疫算法的特点

1、免疫算法流程

与遗传算法等其他智能优化算法类似,免疫算法的进化寻优过程也是通过算子来实现的。免疫算法的算子包括:亲和度评价算子、抗体浓度评价算子、激励度计算算子、免疫选择算子、克隆算子、变异算子、克隆抑制算子和种群刷新算子等。由于算法的编码方式可能为实数编码、离散编码等,不同编码方式下的算法算子也会有所不同。

目前还没有统一的免疫算法及框图,下面介绍一种含有以上免疫算子的算法流程,分为以下几个步骤:

(1)首先进行抗原识别,即理解待优化的问题,对问题进行可行性分析,提取先验知识,构造出合适的亲和度函数,并制定各种约束条件。

(2)然后产生初始抗体群,通过编码把问题的可行解表示成解空间中的抗体,在解的空间内随机产生一个初始种群。

(3)对种群中的每一个可行解进行亲和度评价。

(4)判断是否满足算法终止条件:如果满足条件则终止算法寻优过程,输出计算结果;否则继续寻优运算。

(5)计算抗体浓度和激励度。

(6)进行免疫处理,包括免疫选择、克隆、变异和克隆抑制

免疫选择: 根据种群中抗体的亲和度和浓度计算结果选择优质抗体,使其活化;

克隆: 对活化的抗体进行克隆复制,得到若干副本;

变异: 对克隆得到的副本进行变异操作,使其发生亲和度突变;

克隆抑制: 对变异结果进行再选择,抑制亲和度低的抗体,保留亲和度高的 变异结果。

(7)种群刷新,以随机生成的新抗体替代种群中激励度较低的抗体,形成新一代抗体,转步骤(3)

免疫算法运算流程如下图所示:
在这里插入图片描述

免疫算法中的进化操作是采用了基于免疫原理的进化算子实现的,如免疫选择、克隆、变异等。而且算法中增加了抗体浓度和激励度的计算,并将抗体浓度作为评价个体质量的一个标准,有利于保持个体多样性,实现全局寻优。

2、关键参数说明

下面介绍一下免疫算法的主要参数,它在程序设计与调试中起着至关重要的作用。免疫算法主要包括以下关键参数:

(1)抗体种群大小 NP
抗体种群保留了免疫细胞的多样性,从直观上看,种群越大,免疫算法的全局搜索能力越好,但是算法每代的计算量也相应增大。在大多数问题中,NP 取 10~100 较为合适,一般不超过 200。

(2)免疫选择比例
免疫选择的抗体的数量越多,将产生更多的克隆,其搜索能力越强,但是将增加每代的计算量。一般可以取抗体种群大小 NP 的 10%~50%。

(3)抗体克隆扩增的倍数
克隆的倍数决定了克隆扩增的细胞的数量,从而决定了算法的搜索能力,主要是局部搜索能力。克隆倍数数值越大,局部搜索能力越好,全局搜索能力也有一定提高,但是计算量也随之增大,一般取 5~10 倍。

(4)种群刷新比例
细胞的淘汰和更新是产生抗体多样性的重要机制,因而对免疫算法的全局搜索能力产生重要影响。每代更新的抗体一般不超过抗体种群的 50%。

(5)最大进化代数 G
最大进化代数 G 是表示免疫算法运行结束条件的一个参数,表示免疫算法运行到指定的进化代数之后就停止运行,并将当前群体中的最佳个体作为所求问题的最优解输出。一般 G 取 100~500。

3、MATLAB仿真实例

3.1 免疫算法求一元函数的极值

例1 计算函数 f ( x ) = ∑ i = 1 n x i 2 ( − 20 ≤ x i ≤ 20 ) f(x) = \sum_{i=1}^n x_i^2 (-20\leq x_i\leq20) f(x)=i=1nxi2(20xi20)的最小值,其中个体 x x x 的维数 为 n = 10 n = 10 n=10。这是一个简单的平方和函数,只有一个极小点 x = ( 0 , 0 , … , 0 ) x = (0,0,…,0) x=(000),理论最小值 f ( 0 , 0 , … , 0 ) = 0 f(0,0,…,0) = 0 f(000)=0

解: 仿真过程如下:
(1)初始化免疫个体维数为 D = 10 D = 10 D=10,免疫种群个体数为 N P = 100 NP = 100 NP=100,最大免疫代数为 G = 500 G = 500 G=500,变异概率为 P m = 0.7 P_m = 0.7 Pm=0.7,激励度系数为 α = 1 , β = 1 \alpha = 1,\beta = 1 α=1β=1,相似度阈值为 δ = 0.2 \delta = 0.2 δ=0.2,克隆个数为 N c l = 10 N_{cl} = 10 Ncl=10
(2)随机产生初始种群,计算个体亲和度、抗体浓度和激励度,并按激励度排序。
(3)取激励度前 N P / 2 NP/2 NP/2 个个体进行克隆、变异、克隆抑制的免疫操作,免疫后的种群进行激励度计算。
(4)随机生成 N P / 2 NP/2 NP/2 个个体的新种群,并计算个体亲和度、抗体浓度和激励度;免疫种群和随机种群合并,按激励度排序,进行免疫迭代。
(5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。

优化结束后,亲和度进化曲线如图所示,优化后的结果为: [ 0.0002 − 0.0035 − 0.0036 0.0007 0.0000 − 0.0009 − 0.0004 − 0.0005 − 0.0010 0.0070 ] \begin{bmatrix} 0.0002 & -0.0035 & -0.0036 & 0.0007 & 0.0000 & -0.0009 & -0.0004 & -0.0005 & -0.0010 & 0.0070 \end{bmatrix} [0.00020.00350.00360.00070.00000.00090.00040.00050.00100.0070],函数 f ( x ) f(x) f(x) 的最小值为 8.745 × 1 0 − 5 8.745×10^{-5} 8.745×105
在这里插入图片描述
MATLAB 源程序如下:

%%%%%%%%%%%%%%免疫算法求函数最值%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%
clear all; %清除所有变量
close all; %清图
clc; %清屏
D = 10; %免疫个体维数
NP = 100; %免疫个体数目
Xs = 20; %取值上限
Xx = -20; %取值下限
G = 500; %最大免疫代数
pm = 0.7; %变异概率
alfa = 1; %激励度系数
belta = 1; %激励度系数
detas = 0.2; %相似度阈值
gen = 0; %免疫代数
Ncl = 10; %克隆个数
deta0 = 1*Xs; %邻域范围初值
%%%%%%%%%%%%%%%%初始种群%%%%%%%%%%%%%%%%%%
f = rand(D,NP)*(Xs-Xx)+Xx;
for np = 1:NPMSLL(np) = func1(f(:,np));
end
%%%%%%%%%%%%%%计算个体浓度和激励度%%%%%%%%%%%%%%
for np = 1:NPfor j = 1:NPnd(j) = sum(sqrt((f(:,np)-f(:,j)).^2));if nd(j) < detasnd(j) = 1;elsend(j) = 0;endendND(np) = sum(nd)/NP;
end
MSLL = alfa*MSLL - belta*ND;
%%%%%%%%%%%%%%%激励度按升序排列%%%%%%%%%%%%%%%%
[SortMSLL,Index] = sort(MSLL);
Sortf = f(:,Index);
%%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%%
while gen < Gfor i = 1:NP/2%%%%%%%%选激励度前 NP/2 个个体进行免疫操作%%%%%%%%%a = Sortf(:,i);Na = repmat(a,1,Ncl);deta = deta0/gen;for j = 1:Nclfor ii = 1:D%%%%%%%%%%%%%%变异%%%%%%%%%%%%%%if rand < pmNa(ii,j) = Na(ii,j)+(rand-0.5)*deta;end%%%%%%%%%%%%边界条件处理%%%%%%%%%%%%if (Na(ii,j) > Xs) | (Na(ii,j) < Xx)Na(ii,j) = rand * (Xs-Xx)+Xx;endendendNa(:,1) = Sortf(:,i); %保留克隆源个体%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%%for j = 1:NclNaMSLL(j) = func1(Na(:,j));end[NaSortMSLL,Index] = sort(NaMSLL);aMSLL(i) = NaSortMSLL(1);NaSortf = Na(:,Index);af(:,i) = NaSortf(:,1);end%%%%%%%%%%%%%%%免疫种群激励度%%%%%%%%%%%%%%%for np = 1:NP/2for j = 1:NP/2nda(j) = sum(sqrt((af(:,np)-af(:,j)).^2));if nda(j) < detasnda(j) = 1;elsenda(j) = 0;endendaND(np) = sum(nda)/NP/2;endaMSLL = alfa*aMSLL - belta*aND;%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%%%bf = rand(D,NP/2)*(Xs-Xx)+Xx;for np = 1:NP/2bMSLL(np) = func1(bf(:,np));end%%%%%%%%%%%%%新生成种群激励度%%%%%%%%%%%%%%for np = 1:NP/2for j = 1:NP/2ndc(j) = sum(sqrt((bf(:,np)-bf(:,j)).^2));if ndc(j) < detasndc(j) = 1;elsendc(j) = 0;endendbND(np) = sum(ndc)/NP/2;endbMSLL = alfa*bMSLL - belta*bND;%%%%%%%%%%免疫种群与新生种群合并%%%%%%%%%%%%%f1 = [af,bf];MSLL1 = [aMSLL,bMSLL];[SortMSLL,Index] = sort(MSLL1);Sortf = f1(:,Index);gen = gen+1;trace(gen) = func1(Sortf(:,1));
end
%%%%%%%%%%%%%%%输出优化结果%%%%%%%%%%%%%%%%%%
Bestf = Sortf(:,1); %最优变量
trace(end); %最优值
figure,plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('亲和度进化曲线')
%%%%%%%%%%%%%%%%亲和度函数%%%%%%%%%%%%%%%%%
function result = func1(x)
summ = sum(x.^2);
result = summ;
end

3.2 免疫算法求二元函数的极值

例2 求函数 f ( x , y ) = 5 sin ⁡ ( x y ) + x 2 + y 2 f(x,y)=5\sin(xy)+x^2+y^2 f(x,y)=5sin(xy)+x2+y2最小值,其中 x x x 的取值范围为 [ − 4 , 4 ] [-4,4] [44] y y y的取值范围为 [ − 4 , 4 ] [-4,4] [44]。这是一个有多个局部极值的函数,其函数值图形如下图所示。
在这里插入图片描述

解: 仿真过程如下:
(1)初始化免疫个体维数为 D = 2 D = 2 D=2,免疫种群个体数为 N P = 50 NP = 50 NP=50,最大免疫代数为 G = 200 G = 200 G=200,变异概率为 P m = 0.7 P_m = 0.7 Pm=0.7,激励度系数为 α = 2 , β = 1 \alpha = 2,\beta = 1 α=2β=1,相似度阈值为 δ = 0.2 \delta = 0.2 δ=0.2,克隆个数为 N c l = 5 N_{cl} = 5 Ncl=5
(2)随机产生初始种群,计算个体亲和度、抗体浓度和激励度,并按激励度
排序。
(3)取激励度前 N P / 2 NP/2 NP/2 个个体进行克隆、变异、克隆抑制的免疫操作;免疫
后的种群进行激励度计算。
(4)随机生成 N P / 2 NP/2 NP/2 个个体的新种群,并计算个体亲和度、抗体浓度和激励
度;免疫种群和随机种群合并,按激励度排序,进行免疫迭代。
(5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不
满足,则继续进行迭代优化。
优化结束后,其亲和度进化曲线如下图所示,优化后的结果为: x = 1.0767 , y = − 1.0767 x = 1.0767,y = -1.0767 x=1.0767y=1.0767,函数 f ( x , y ) f (x,y) f(xy)的最小值为 − 2.264 -2.264 2.264
在这里插入图片描述
MATLAB 源程序如下:

%%%%%%%%%%%%%免疫算法求函数最值%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%
clear all; %清除所有变量
close all; %清图
clc; %清屏
D = 2; %免疫个体维数
NP = 50; %免疫个体数目
Xs = 4; %取值上限
Xx = -4; %取值下限
G = 200; %最大免疫代数
pm = 0.7; %变异概率
alfa = 2; %激励度系数
belta = 1; %激励度系数
detas = 0.2; %相似度阈值
gen = 0; %免疫代数
Ncl = 5; %克隆个数
deta0 = 0.5*Xs; %邻域范围初值
%%%%%%%%%%%%%%%初始种群%%%%%%%%%%%%%%%%%%
f = rand(D,NP)*(Xs-Xx)+Xx;
for np = 1:NPMSLL(np) = func2(f(:,np));
end
%%%%%%%%%%%计算个体浓度和激励度%%%%%%%%%%%%%%%
for np = 1:NPfor j = 1:NPnd(j) = sum(sqrt((f(:,np)-f(:,j)).^2));if nd(j) < detasnd(j) = 1;elsend(j) = 0;endendND(np) = sum(nd)/NP;
end
MSLL = alfa*MSLL - belta*ND;
%%%%%%%%%%%%%激励度按升序排列%%%%%%%%%%%%%%%%
[SortMSLL,Index] = sort(MSLL);
Sortf = f(:,Index);
%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%
while gen < Gfor i = 1:NP/2%%%%%%%选激励度前 NP/2 个个体进行免疫操作%%%%%%%%a = Sortf(:,i);Na = repmat(a,1,Ncl);deta = deta0/gen;for j = 1:Nclfor ii = 1:D%%%%%%%%%%%%变异%%%%%%%%%%%%%%if rand < pmNa(ii,j) = Na(ii,j)+(rand-0.5)*deta;end%%%%%%%%%%%边界条件处理%%%%%%%%%%%if (Na(ii,j) > Xs) | (Na(ii,j) < Xx)Na(ii,j) = rand * (Xs-Xx)+Xx;endendendNa(:,1) = Sortf(:,i); %保留克隆源个体%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%for j = 1:NclNaMSLL(j) = func2(Na(:,j));end[NaSortMSLL,Index] = sort(NaMSLL);aMSLL(i) = NaSortMSLL(1);NaSortf = Na(:,Index);af(:,i) = NaSortf(:,1);end%%%%%%%%%%%%%%%免疫种群激励度%%%%%%%%%%%%%%for np = 1:NP/2for j = 1:NP/2nda(j) = sum(sqrt((af(:,np)-af(:,j)).^2));if nda(j) < detasnda(j) = 1;elsenda(j) = 0;endendaND(np) = sum(nda)/NP/2;endaMSLL = alfa*aMSLL - belta*aND;%%%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%bf = rand(D,NP/2)*(Xs-Xx)+Xx;for np = 1:NP/2bMSLL(np) = func2(bf(:,np));end%%%%%%%%%%%%%%新生成种群激励度%%%%%%%%%%%%%%for np = 1:NP/2for j = 1:NP/2ndc(j) = sum(sqrt((bf(:,np)-bf(:,j)).^2));if ndc(j) < detasndc(j) = 1;elsendc(j) = 0;endendbND(np) = sum(ndc)/NP/2;endbMSLL = alfa*bMSLL - belta*bND;%%%%%%%%%%%免疫种群与新生种群合并%%%%%%%%%%%%%f1 = [af,bf];MSLL1 = [aMSLL,bMSLL];[SortMSLL,Index] = sort(MSLL1);Sortf = f1(:,Index);gen = gen+1;trace(gen) = func2(Sortf(:,1));
end
%%%%%%%%%%%%%%%%输出优化结果%%%%%%%%%%%%%%%%%
Bestf = Sortf(:,1); %最优变量
trace(end); %最优值
figure,plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('亲和度进化曲线')
%%%%%%%%%%%%%%%%亲和度函数%%%%%%%%%%%%%%%%%%
function value = func2(x)
value = 5*sin(x(1)*x(2))+x(1)*x(1)+x(2)*x(2);
end

3.3 免疫算法求解旅行商问题

例3 旅行商问题(TSP 问题)。假设有一个旅行商人要拜访全国 31个省会城市,他需要选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择要求是:所选路径的路程为所有路径之中的最小值。全国 31 个省会城市的坐标为 [1304 2312; 3639 1315; 4177 2244; 3712 1399; 3488 1535; 3326 1556; 3238 1229; 4196 1004; 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 2367; 3394 2643; 3439 3201; 2935 3240; 3140 3550; 2545 2357; 2778 2826; 2370 2975]。

解: 仿真过程如下:
(1)初始化免疫个体维数为城市个数 N = 31 N = 31 N=31,免疫种群个体数为 N P = 200 NP = 200 NP=200,最大免疫代数为 G = 1000 G = 1000 G=1000,克隆个数为 N c l = 10 N_{cl} = 10 Ncl=10;计算任意两个城市间的距离矩阵 D。
(2)随机产生初始种群,计算个体亲和度,并按亲和度排序。
(3)在取亲和度前对 N P / 2 NP/2 NP/2 个个体进行克隆操作,并对每个源个体产生的克
隆个体进行任意交换两个城市坐标的变异操作;然后计算其亲和度,进行克隆抑制操作,只保留亲和度最高的个体,从而产生新的免疫种群。
(4)随机生成 N P / 2 NP/2 NP/2 个个体的新种群,并计算个体亲和度;免疫种群和随机
种群合并,按亲和度排序,进行免疫迭代。
(5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不
满足,则继续进行迭代优化。

优化后的路径以及亲和度进化曲线如下图所示:
在这里插入图片描述
在这里插入图片描述
MATLAB 源程序如下:

%%%%%%%%%%%%%免疫算法求解 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:Nfor j = 1:ND(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:NPf(:,i) = randperm(N); %随机生成初始种群
end
len = zeros(NP,1); %存储路径长度
for i = 1:NPlen(i) = func3(D,f(:,i),N); %计算路径长度
end
[Sortlen,Index] = sort(len);
Sortf = f(:,Index); %种群个体排序
gen = 0; %免疫代数
Ncl = 10; %克隆个数
%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%
while gen < Gfor i = 1:NP/2%%%%%%%选激励度前 NP/2 个个体进行免疫操作%%%%%%%%%a = Sortf(:,i);Ca = repmat(a,1,Ncl);for j = 1:Nclp1 = floor(1+N*rand());p2 = floor(1+N*rand());while p1==p2p1 = floor(1+N*rand());p2 = floor(1+N*rand());endtmp = Ca(p1,j);Ca(p1,j) = Ca(p2,j);Ca(p2,j) = tmp;endCa(:,1) = Sortf(:,i); %保留克隆源个体%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%for j = 1:NclCalen(j) = func3(D,Ca(:,j),N);end[SortCalen,Index] = sort(Calen);SortCa = Ca(:,Index);af(:,i) = SortCa(:,1);alen(i) = SortCalen(1);end%%%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%for i = 1:NP/2bf(:,i) = randperm(N); %随机生成初始种群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
%%%%%%%%%%%%%%%输出优化结果%%%%%%%%%%%%%%%%%%
Bestf = Sortf(:,1); %最优变量
Bestlen = trace(end); %最优值
figure
for i = 1:N-1plot([C(Bestf(i),1),C(Bestf(i+1),1)],...[C(Bestf(i),2),C(Bestf(i+1),2)],'bo-');hold on;
end
plot([C(Bestf(N),1),C(Bestf(1),1)],...[C(Bestf(N),2),C(Bestf(1),2)],'ro-');
title(['优化最短距离:',num2str(trace(end))]);
figure,plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('亲和度进化曲线')
%%%%%%%%%%%%%%%%计算路线总长度%%%%%%%%%%%%%%%%
function len = func3(D,f,N)
len = D(f(N),f(1));
for i = 1:(N-1)len = len+D(f(i),f(i+1));
end
end

4、免疫算法的特点

免疫算法是受免疫学启发,模拟生物免疫系统功能和原理来解决复杂问题的自适应智能系统,它保留了生物免疫系统所具有的若干特点,包括:

(1)全局搜索能力。 模仿免疫应答过程提出的免疫算法是一种具有全局搜索能力的优化算法,免疫算法在对优质抗体邻域进行局部搜索的同时利用变异算子和种群刷新算子不断产生新个体,探索可行解区间的新区域,保证算法在完整的可行解区间进行搜索,具有全局收敛性能。
(2)多样性保持机制。 免疫算法借鉴了生物免疫系统的多样性保持机制,对抗体进行浓度计算,并将浓度计算的结果作为评价抗体个体优劣的一个重要标准;它使浓度高的抗体被抑制,保证抗体种群具有很好的多样性,这也是保证算法全局收敛性能的一个重要方面。
(3)鲁棒性强。 基于生物免疫机理的免疫算法不针对特定问题,而且不强调算法参数设置和初始解的质量,利用其启发式的智能搜索机制,即使起步于劣质解种群,最终也可以搜索到问题的全局最优解,对问题和初始解的依赖性不强,具有很强的适应性和鲁棒性。
(4)并行分布式搜索机制。 免疫算法不需要集中控制,可以实现并行处理。而且,免疫算法的优化进程是一种多进程的并行优化,在探求问题最优解的同时可以得到问题的多个次优解,即除找到问题的最佳


http://chatgpt.dhexx.cn/article/hKVrq62O.shtml

相关文章

免疫优化算法

免疫优化算法 免疫算法是模仿生物免疫机制&#xff0c;结合基因的进化机理&#xff0c;人工构造出的一种新型智能优化算法。 它具有一般免疫系统的特征&#xff0c;采用群体搜索策略&#xff0c;通过迭代计算&#xff0c;最终以较大的概率得到问题的最优解。 相比较于其他算法…

智能优化算法之免疫算法(IA)

这里写目录标题 1. 免疫算法思想起源2. 算法原理3. 免疫算法算子3.1 算法算子3.1.1 亲和度评价算子3.1.2 抗体浓度评价算子&#xff1a;3.1.3 激励度计算算子3.1.4 免疫选择算子3.1.5 克隆算子3.1.6 变异算子3.1.7 实数编码变异算子3.1.8 离散编码变异算子3.1.9 克隆抑制算子3.…

免疫算法(Immune Algorithm,IA)实例详解

免疫算法是将免疫概念及其理论应用于遗传算法&#xff0c;在保留原算法优良特性的前提下&#xff0c;利用抗体浓度评价算子和激励度计算算子来保持群体的多样性&#xff0c;克服了一般寻优过程中&#xff08;特别是多峰值&#xff09;不可避免的“早熟”问题。 1 算法概念 免…

一文搞懂什么是免疫算法Immune Algorithm【详细介绍】

本文参考了很多张军老师《计算智能》的第七章知识。 本文来源&#xff1a;https://blog.csdn.net/qq_44186838/article/details/109181453 免疫算法 1.1 算法简介 免疫算法&#xff08;Immune Algorithm&#xff0c;IA&#xff09;&#xff1a;是指以在人工免疫系统的理论为基…

免疫算法(Immune Algorithm)详解

关于免疫算法&#xff08;IA&#xff09;&#xff0c;其功能与遗传算法、模拟退火等算法实现的功能是相同的&#xff0c;都是用来求最优解。例如求函数最值、旅行商问题等。从本质上说&#xff0c;免疫算法更像是遗传算法的一种延申。IA虽然其中借鉴了生物学&#xff08;免疫学…

免疫算法

免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法&#xff0c;是一种确定性和随机性选择相结合并具有"勘探"与"开采"能力的启发式随机搜索算法。 算法主要的步骤: (1)抗原识别与初始抗体产生。 (2)抗体评价 (3)免疫操作 免疫算法的特点: (1)…

闵可夫斯基距离—大白话篇幅[有错误的话请指教]

包括&#xff1a;曼哈顿距离&#xff0c;欧氏距离&#xff0c;切比雪夫距离&#xff1b; 举例子&#xff1a;两个点&#xff1a;A(1,9),B(5,8) 1&#xff0c;曼哈顿距离&#xff1a; 就是取和&#xff1a;|&#xff08;1-5&#xff09;||&#xff08;9-8&#xff09;|5;曼哈顿…

闵可夫斯基距离(LP距离)、曼哈顿距离、欧式距离、切比雪夫距离、马哈拉诺比斯距离、相关系数、夹角余弦

标题闵可夫斯基距离(LP距离)、曼哈顿距离、欧式距离、切比雪夫距离、马哈拉诺比斯距离、相关系数、夹角余弦 在聚类中&#xff0c;可以将样本集合看作是向量空间中的点的集合&#xff0c;以该空间的距离表示样本之间相似度。常用的距离有闵可夫斯基距离&#xff0c;闵可夫斯基…

【Python经典题目】闵可夫斯基距问题

题目 定义一个高维空间样本点集类HDPoints&#xff0c;须包含以下数据属性与方法属性&#xff1a; (a)数据属性self.points&#xff1a;类型为列表&#xff0c;由多个子列表构成&#xff0c;每个子列表表示高维空间中的一个数据点&#xff0c;且数据维度可以任意&#xff0c;…

欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离

转载自&#xff1a;https://baijiahao.baidu.com/s?id1577090844304882120&wfrspider&forpc 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法&#xff0c;我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 欧氏距离 二…

数值属性的相异性:闵可夫斯基距离

本文介绍数值属性刻画的对象之间的相异性度量&#xff0c;首先&#xff0c;应该把数据进行规范化&#xff0c;使之落入更小的值域&#xff0c;例[0&#xff0c;1]&#xff0c;[0.0,1.0] 1&#xff1a;最流行的距离度量&#xff1a;欧几里得距离 2&#xff1a;曼哈顿距离 3&…

各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...

1. 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法&#xff0c;我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。 二维平面上点a(x1,y1)与b(x2,y2)间的欧氏距离: 三维空间点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: n维空间点a(x1…

常用的相似度计算方法----欧式距离、曼哈顿距离、马氏距离、余弦、汉明距离、切比雪夫距离、闵可夫斯基距离、马氏距离

在深度学习以及图像搜索中&#xff0c;经常要对特征值进行比对&#xff0c;得到特征的相似度&#xff0c;常见的特征值比对方法有汉明距离、余弦距离、欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离等&#xff0c;下面对各种比对方法分别进行介绍。 目录 1汉…

机器学习部分:距离的度量(欧氏距离,曼哈顿距离,夹角余弦距离,切比雪夫距离,汉明距离,闵可夫斯基距离,马氏距离)

目录 距离计算方法 1.欧式距离EuclideanDistance 2. 曼哈顿距离(ManhattanDistance) 3. 夹角余弦 4.切比雪夫距离&#xff08;Chebyshevdistance&#xff09; 5. 汉明距离(Hamming Distance) 6. 闵可夫斯基距离(Minkowski Distance) 7. 马氏距离(Mahalanobis Distance)…

【大数据】曼哈顿距离 欧几里得距离 与 闵可夫斯基距离Minkowski Manhattan Euclidean

这里写目录标题 闵可夫斯基距离曼哈顿距离欧几里得距离 e . g . e.g. e.g. 曼哈顿距离与欧几里得距离 三种距离计算算法 闵可夫斯基距离 闵可夫斯基距离(Minkowski Dis) &#xff0c;是 曼哈顿距离(Manhattan Dis) 与 欧几里得距离(Euclidean Dis) 的一般形式。一般不常直接使…

样本相似性度量(欧几里得距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离)

样本相似性度量&#xff08;欧几里得距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离&#xff09; 在分类过程中&#xff0c;常常需要估算不同样本直接的 Similarity Measurement &#xff08;相似性度量&#xff09;。 此时常用的方法就是计算两个样本直接…

机器学习聚类算法中的闵可夫斯基距离

最近闲着没事了解一下聚类算法&#xff0c;闵可夫斯基距离真有趣&#xff0c;搞得我有点一头雾水&#xff0c;废话不多&#xff0c;上定义&#xff1a; 本文从公式上表述了欧几里得距离、曼哈顿距离、切比雪夫距离记忆闵可夫斯基距离之间的关系。 一般而言&#xff0c;定义一…

距离度量:欧式距离/曼哈顿距离/切比雪夫距离/闵可夫斯基距离/标准化欧氏距离/余弦距离/汉明距离/杰卡德距离/马氏距离

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; 2 常见的距离公式 2.1 欧式距离(Euclidean Distance)&#xff1a; 欧氏距离是最容易直观理解的距离度量方法&#xff0c;我们小学、初中和高中接…

欧式距离余弦相似度matlab,相似度计算——欧氏距离,曼哈顿距离,闵可夫斯基距离,汉明距离,夹角余弦...

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距离(满足正定性和对称性,但是不满足三角不等式),还有KL距离( Kulback- Leibler Divergence),也叫作相对熵(不满足对称性和三角不等式),它常用于计算两个分布之间的差异 欧氏距离 欧氏距离: 切比雪夫距离…

闵可夫斯基距离

本文从公式上表述了欧几里得距离、曼哈顿距离、切比雪夫距离记忆闵可夫斯基距离之间的关系。 一般而言&#xff0c;定义一个距离函数 d(x,y), 需要满足下面几个准则&#xff1a; 1) d(x,x) 0 // 到自己的距离为0 2) d(x,y) > 0 // 距离非负 3) d(x,y) d(y,x) // 对称…