免疫算法

article/2025/9/24 14:47:45

      免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法,是一种确定性和随机性选择相结合并具有"勘探"与"开采"能力的启发式随机搜索算法。

     

   算法主要的步骤:

     (1)抗原识别与初始抗体产生。

     (2)抗体评价

     (3)免疫操作

   免疫算法的特点:

     (1)全局搜索能力

     (2)多样性保持机制

     (3)鲁棒性强

     (4)并行分布式搜索机制

   免疫算法流程图:

    


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

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

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

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

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

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

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

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

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

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

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


   免疫算法求解TSP问题:

%%%一个旅行商人要拜访全国31个省会城市,需要选择最短的路径%%%%
%种群数目NP=200
%免疫个体维数N=31
%迭代次数G=1000
%克隆个体个数为Ncl=10
%任意两个城市的距离矩阵D%%%免疫算法解决TSP问题%%%%%%%
%%%初始化%%%%%%%
clear all; %清除所有变量
close all; %清图
clc ;      %清屏
%%全国31个省会城市的坐标
C=[
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
];%31个省会坐标N=size(C,1); %TSP问题的规模,即城市数目
D=zeros(N);  %任意两个城市距离间隔矩阵,初始化都为0%任意两个城市距离间隔矩阵%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;endend  NP=200;  %免疫个体数目G=1000; %最大免疫代数f=zeros(N,NP); %用于存储种群for i=1:NPf(:,i)=randperm(N); %随机生成初始种群endlen=zeros(NP,1);  %存储路径长度for i=1:NPlen(i)=func3(D,f(:,i),N); %随机生成初始种群end[Sortlen,Index]=sort(len);Sortf=f(:,Index);    %种群个体排序gen=0;               %免疫代数Nc1=10;             %克隆个数%%%%%%%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%while gen<G%%%%%%%%%%%%%%%%%选激励度前NP/2个个体进行免疫操作%%%%%%%%%%%for i=1:NP/2a=Sortf(:,i);Ca=repmat(a,1,Nc1);for j=1:Nc1p1=floor(1+N*rand());p2=floor(1+N*rand());while p1==p2p1=floor(1+N*rand());p2=floor(1+N*rand());end%%元素的交换temp=Ca(p1,j);Ca(p1,j)=Ca(p2,j);Ca(p2,j)=temp;endCa(:,1)=Sortf(:,i);   %保留克隆源个体%%%%%%%%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%%%%%%%%%for j=1:Nc1Calen(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);  %最优值%%%%%图1figure 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;endplot([C(Bestf(N),1),C(Bestf(1),1)],...[C(Bestf(N),2),C(Bestf(1),2)],'ro-');title(['优化最短距离:',num2str(trace(end))]);%%%%图2figure 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));endend



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

相关文章

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

包括&#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) // 对称…

闵可夫斯基距离(MinkowskiDistance)

闵可夫斯基距离(MinkowskiDistance) 闵氏距离不是一种距离&#xff0c;而是一组距离的定义。 (1)闵氏距离的定义 两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为&#xff1a; 其中p是一个变参数。 当p1时&#xff0c;就是曼哈顿距离 当p2时&#xf…

Linux操作系统概述

Linux操作系统概述 Linux发展历史Linux的发展要素Linux与UNIX的异同操作系统类型选择和内核版本的选择Linux的系统架构 Linux内核的主要模块Linux的文件结构 Linux发展历史 Linux操作系统于1991年诞生&#xff0c;目前已经成为主流的操作系统之 一 。其版本从开始的0.01版本到…

国产Linux操作系统

一、Kylin OS&#xff1a;由麒麟软件公司发行的Debian系Linux操作系统。 包含四个版本&#xff1a; 1、银河Kylin&#xff1a;为银河麒麟Linux操作系统收费版本。 2、Neo Kylin&#xff1a;是中标麒麟&#xff0c;为麒麟软件与中标软件合并后的发行版本。 3、Open Kylin&…

Linux【操作系统】

目录 一、冯诺依曼体系结构 ​ 二、操作系统​ 三、进程 ​ 1.PCB ​ 2.task_ struct内容分类 ​ 3.查看进程​​​​​​​​ 4.getpid​ 5.系统调用接口和创建子进程 6.fork基本用法 四、进程状态 进程状态查看 Z(zombie)-僵尸进程 僵尸进程危害 孤儿进程 …

理解操作系统(Linux)

操作系统是一款对软硬件资源进行管理的软件&#xff01; 操作系统为什么要对软硬件资源进行管理呢&#xff1f; 操作系统通过合理的管理软硬件资源的手段&#xff0c;为用户提供良好的&#xff08;稳定的、高效的、安全的&#xff09;执行环境。 操作系统是如何进行管理的呢…

【Linux操作系统】——Linux命令

文章目录 Linux系统命令登录注销目录文件补充ls通配符rm命令cp命令more命令less命令vi命令文件压缩以及解压 Linux系统命令 Windows系统中查看当前电脑的IP地址 ipconfig 在Linux系统中查看当前电脑的IP地址 ifconfig 登录注销 sudo useradd ccy //添加用户 (不能被立即使用…