人工免疫算法学习通解

article/2025/9/24 12:32:43

人工免疫算法(Artificial Immune System,AIS)是一种基于免疫系统的启发式优化算法,其基本思想是模拟生物体内的免疫系统对抗外部威胁的过程,通过生成、选择、进化、记忆和协同等机制来搜索最优解。

AIS 通常包含两个主要的阶段:学习和演化。在学习阶段,算法通过对问题进行分析,生成基于抗体的解向量集合,并对其进行评估和选择。在演化阶段,算法基于选择的解向量集合,采用进化算子(例如变异、重组、选择等)来生成新的解向量,并更新解向量集合,以逐步寻找最优解。

与其他优化算法相比,AIS 具有以下特点:

  • 具有较好的全局搜索能力,可以在多峰、高维等复杂问题中寻找最优解;
  • 具有较强的自适应性,可以根据问题自动调整参数,不需要太多的先验知识;
  • 可以有效地处理约束条件和不可微问题。

由于其独特的特点和良好的性能,在许多领域中得到了广泛应用,例如机器学习、数据挖掘、组合优化、信号处理等。

需要注意的是,AIS 是一种较为复杂的算法,其实现方式和具体应用与问题相关,需要结合具体问题进行细致的调试和优化。

下面是一个使用 Python 实现的简单的人工免疫算法,用于解决单目标优化问题。该算法的目标函数为 Rosenbrock 函数,其形式为:

f(x,y)=(a-x)^2+b(y-x^2)^2

其中,a=1,b=100。

在该算法中,我们生成一个抗体库,然后根据适应度函数(即目标函数)对抗体进行排序,选择适应度较好的一部分作为种群,然后采用变异和克隆等操作来更新种群,以求得更优的解。具体的实现代码如下所示:

import numpy as np# 定义目标函数
def rosenbrock(x, y):a = 1.0b = 100.0return (a - x) ** 2 + b * (y - x ** 2) ** 2# 生成初始抗体库
def generate_population(population_size):population = []for i in range(population_size):x = np.random.uniform(-5, 5)y = np.random.uniform(-5, 5)population.append([x, y])return population# 计算适应度函数值
def evaluate_fitness(population):fitness = []for i in range(len(population)):x, y = population[i]fitness.append(1.0 / rosenbrock(x, y))return fitness# 选择适应度较好的抗体
def select(population, fitness, num_selected):sorted_indices = np.argsort(fitness)[::-1]  # 按适应度降序排序selected_indices = sorted_indices[:num_selected]selected_population = [population[i] for i in selected_indices]return selected_population# 变异操作
def mutate(antibody, mutation_rate):mutated_antibody = antibody.copy()for i in range(len(antibody)):if np.random.uniform(0, 1) < mutation_rate:mutated_antibody[i] = np.random.uniform(-5, 5)return mutated_antibody# 克隆操作
def clone(antibody, clone_size):cloned_population = []for i in range(clone_size):cloned_antibody = [antibody[j] + np.random.normal(0, 0.1) for j in range(len(antibody))]cloned_population.append(cloned_antibody)return cloned_population# 更新抗体库
def update_population(population, num_selected, mutation_rate, clone_size):fitness = evaluate_fitness(population)selected_population = select(population, fitness, num_selected)new_population = []for antibody in selected_population:mutated_antibody = mutate(antibody, mutation_rate)cloned_population = clone(mutated_antibody, clone_size)new_population.extend(cloned_population)return new_population

人工免疫算法的应用非常广泛,下面以求解无约束优化问题为例进行说明。

假设我们要求解以下无约束优化问题:

我们可以使用人工免疫算法进行求解。

首先,我们需要定义免疫算法所需要的一些参数:

  • 种群大小 N
  • 感知范围 r
  • 免疫浓度 c
  • 选择比例 p_s
  • 变异概率 p_m
  • 最大迭代次数 max_iter
  • 初始种群 X
  • 适应度函数 fitness

其中,适应度函数可以根据具体问题进行定义。在本例中,适应度函数为

                                fitness(x)=x_1^2+x_2^2-2x_1-4x_2+5。

下面是使用Python实现的人工免疫算法代码:

import numpy as np
import random# 定义适应度函数
def fitness(x):return x[0]**2 + x[1]**2 - 2*x[0] - 4*x[1] + 5# 定义人工免疫算法函数
def AIS(N, r, c, ps, pm, max_iter, X):# 初始化种群pop_size = len(X)pop = X.copy()# 记录最优解和最优适应度值best_x = Nonebest_fitness = float('inf')# 开始迭代for iter in range(max_iter):# 计算抗体浓度density = np.zeros(pop_size)for i in range(pop_size):for j in range(pop_size):if i != j and np.linalg.norm(pop[i]-pop[j]) < r:density[i] += 1# 选择操作ps_size = int(ps * pop_size)ps_index = np.argsort(density)[:ps_size]# 变异操作for i in range(ps_size, pop_size):# 选择一个抗体和一个邻域j = random.choice(ps_index)neighbor = np.random.normal(loc=pop[j], scale=c, size=2)# 变异操作if random.random() < pm:neighbor = neighbor + np.random.normal(scale=1)# 更新种群if fitness(neighbor) < fitness(pop[j]):pop[j] = neighbor# 更新最优解if fitness(neighbor) < best_fitness:best_x = neighborbest_fitness = fitness(neighbor)return best_x, best_fitness# 设置参数
N = 20
r = 1
c = 0.2
ps = 0.2
pm = 0.1
max_iter = 100
X = np.random.uniform(-5, 5, size=(N, 2))# 调用函数求解问题
best_x, best_fitness = AIS(N, r, c, ps, pm, max_iter, X)# 输出结果
print("最优解:", best_x)
print("最优适应度值:", best_fitness)

在上述代码中,我们首先定义了适应度函数 fitness,然后定义了人工免疫算法函数 AIS。在函数中,我们首先初始化种群,并记录最优解和最优适应度值。然后,我们开始迭代,计算抗体浓度,进行选择操作和变异操作,并更新种群。在迭代结束后,我们输出最优解和最优适应度值。


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

相关文章

【学习】人工免疫算法

开始项目后&#xff0c;我主要负责研究网络自免疫&#xff0c;对人工免疫系统有了一些初步的了解。 人工免疫特点&#xff1a; 1.识别与分类&#xff1a;可是识别自体和非自体。&#xff08;如阴性选择法建立的检测器&#xff09; 2.多样性&#xff1a;可以对进行基因重组&am…

【智能优化算法】人工免疫算法 (Immune Algorithm, IA), 1986

前言 最早的免疫系统起源于1973-1976年间Jerne的三篇关于免疫网络的文章1986年Farmer在此基础上提出了基于网络的二进制的免疫系统模拟生物免疫系统的抗原识别、细胞分化、记忆和自我调节功能的一类算法 遗传算法的思想简单讲就是父代之间通过交叉互换以及变异产生子代&#…

基于免疫优化算法的TSP算法

文章目录 一、理论基础二、案例背景1、问题描述2、解决思路及步骤(1). 算法流程(2). 算法实现过程 三、MATLAB程序实现1、程序源码2、结果分析 四、参考文献 一、理论基础 TSP(traveling salesman problem,旅行商问题)是典型的NP完全问题&#xff0c;即其最坏情况下的时间复杂…

2018-4-8免疫算法(Immune IA)

学习资料来源&#xff1a; 【图文】免疫算法_百度文库 https://wenku.baidu.com/view/39eb47ec551810a6f52486ee.html?sxts1523143415445 《智能优化算法以及matlab实现》包子阳&#xff0c;余继周 编著 自己觉的好资源&#xff0c;但是看不懂 三种人工免疫算法综述_图文…

免疫算法(二进制)算例(源码实现)

之前我们讲解了免疫算法以及离散的免疫算法。见链接&#xff1a; 万字长文了解免疫算法原理 及求解复杂约束问题&#xff08;源码实现&#xff09; 离散免疫算法求解旅行商问题(源码实现) 今天讲下二进制的免疫算法。 我爱学习&#xff0c;爱玉酱。 算例 假设一个数PD210&#…

免疫算法(Immune Algorithm)

概念 人工免疫算法(Immune Algorithm)是一种具有生成检测 (generate and test)的迭代过程的群智能搜索算法。从理论上分析&#xff0c;迭代过程中&#xff0c;在保留上一代最佳个体的前提下&#xff0c;遗传算法是全局收敛的。 对于遗传算法&#xff1a;在对算法的实施过程中…

人工免疫算法概述

一、免疫系统 什么是病毒&#xff1f; 病毒是一种简单的生活形式&#xff1a;包裹在保护壳中的一些基因。这些基因是制造新病毒的指令。 在细胞外&#xff0c;病毒无法繁殖。但是一旦病毒入侵了活细胞&#xff0c;它就会将该细胞变成病毒工厂。随着时间的流逝&#xff0c;成…

人工智能-免疫算法

这是一类智能的算法&#xff0c;没有什么固定的模式&#xff0c;就是一个算法思想&#xff0c;可以给我们一些有价值的指导&#xff0c;当我们想要做一些相关工作的时候&#xff0c;可以扩宽我们的视野&#xff0c;打开我们的脑洞&#xff0c;借鉴其中的原理。我不想多说里面的…

免疫算法Python实现

1.流程 免疫算法与遗传算法其实非常相似&#xff0c;但其独特的地方在于&#xff0c;免疫算法用激励度而非亲和度来衡量结果的好坏&#xff0c;而激励度又与抗体密度有关&#xff0c;这就使得密度大的抗体激励度反而小&#xff0c;让免疫算法有全局搜索的能力&#xff0c;不容易…

免疫算法详解

基本思想是将想要求解的各类优化问题的目标函数&#xff08;约束条件&#xff09;与抗原相对应&#xff0c;找到可以与抗原进行亲和反应的抗体&#xff0c;该抗体就是要求的最优解。 最核心要解决的就是 1.计算抗原和抗体的亲和度&#xff0c;亲和度越高&#xff0c;越可能是最…

人工免疫算法总结

人工免疫算法简介 免疫系统 免疫系统是哺乳动物抵御外来病毒侵害的防御系统&#xff0c;动物的生命过程中会遇到各种伤害可能&#xff0c;免疫系统为其正常的活动起着重要的作用。免疫系统的一大特点就是用有限的资源有效地应对了数量庞大且种类多变的病毒入侵。免疫算法基于…

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

文章目录 1、免疫算法流程2、关键参数说明3、MATLAB仿真实例3.1 免疫算法求一元函数的极值3.2 免疫算法求二元函数的极值3.3 免疫算法求解旅行商问题 4、免疫算法的特点 1、免疫算法流程 与遗传算法等其他智能优化算法类似&#xff0c;免疫算法的进化寻优过程也是通过算子来实…

免疫优化算法

免疫优化算法 免疫算法是模仿生物免疫机制&#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;闵可夫斯基…