自学内容网 自学内容网

人工免疫算法(AIS算法)求解实例---旅行商问题 (TSP)

一、采用AIS求解 TSP

完整代码关注博客底部微信公众号获得!

求解代码在文中,后续会出其他算法求解TSP问题,你们参加数学建模竞赛只需要会改代码即可。

用来对比此专栏的
遗传算法(GA算法)求解实例—旅行商问题 (TSP)
粒子群算法(PSO算法)求解实例—旅行商问题 (TSP)
模拟退火算法(SA算法)求解实例—旅行商问题 (TSP)
蚁群算法(ACO算法)求解实例—旅行商问题 (TSP)
禁忌搜索算法(TS算法)求解实例—旅行商问题 (TSP)
差分进化算法(DE算法)求解实例—旅行商问题 (TSP)
注意每次运行算法得到的结果可能不太一样。

我知道大家对原理性的东西不感兴趣,我把原理性的东西放在后面,大家如果需要写数模论文可以拿去,但是记得需要改一改,要不然查重过不去。

二、 旅行商问题

2.1 实际例子:求解 6 个城市的 TSP

假设有 6 个城市,其坐标如下:

城市X 坐标Y 坐标
01020
13040
22010
34030
41010
55020

目标是找到一个经过所有城市且总距离最短的路径。

2.2 求解该问题的代码,代码(完整代码关注底部微信公众号获取)

import numpy as np
import random

# 定义城市坐标
cities = np.array([
    [10, 20],
    [30, 40],
    [20, 10],
    [40, 30],
    [10, 10],
    [50, 20]
])

# 计算两城市之间的欧几里得距离
def calculate_distance(city1, city2):
    return np.sqrt(np.sum((city1 - city2) ** 2))





# 运行人工免疫算法
best_path, best_distance = ais_tsp(cities)
print("Best path:", best_path)
print("Best distance:", best_distance)

2.3 代码运行过程截屏

在这里插入图片描述

2.4 代码运行结果截屏(后续和其他算法进行对比)

在这里插入图片描述

三、 如何修改代码?

这一部分是重中之重,大家参加数学建模肯定是想跑出自己的结果,所以大家只需要把自己遇到的数学问题,抽象成TSP问题,然后修改代码的城市坐标,然后运行即可。

# 定义城市坐标
cities = np.array([
    [10, 20],
    [30, 40],
    [20, 10],
    [40, 30],
    [10, 10],
    [50, 20]
])

3.1 减少城市坐标,如下:

# 定义城市坐标
cities = np.array([
    [10, 20],
    [30, 40],
    [20, 10],
    [40, 30]
])

3.2 增加城市坐标,如下:

# 定义城市坐标
cities = np.array([
    [10, 20],
    [30, 40],
    [20, 10],
    [40, 30],
    [30, 40],
    [20, 10],
    [10, 10],
    [50, 20]
])

四、人工免疫算法(Artificial Immune System, AIS)原理

人工免疫算法(AIS)是一种受到生物免疫系统启发而发展的智能优化算法。生物免疫系统具有识别和消灭外部病原体(如病毒、细菌等)的能力,通过学习和记忆机制,能够快速识别并应对新入侵的病原体。AIS 模拟了这种免疫系统的特性和机制,用于解决复杂的优化和分类问题。

4.1 AIS算法的核心概念

  • 抗体(Antibody):在 AIS 中,抗体通常表示一个候选解。例如,在旅行商问题(TSP)中,一个抗体可以表示城市访问顺序(路径)。

  • 抗原(Antigen):抗原是需要被识别和优化的问题或目标。在优化问题中,抗原表示需要求解的目标(例如,TSP 中的最短路径)。

  • 亲和力(Affinity):亲和力表示抗体与抗原之间的匹配程度。在优化问题中,亲和力通常由目标函数值表示,亲和力越高(或越低,取决于优化目标),表示解的质量越好。

  • 克隆选择(Clonal Selection):克隆选择是 AIS 的核心机制之一,表示根据亲和力对抗体进行选择、克隆和变异。质量越高的抗体会被选择生成更多的克隆体,并通过变异产生新的候选解。

  • 亲和力成熟(Affinity Maturation):在克隆选择之后,通过对克隆体进行变异和选择,使抗体的亲和力进一步提高,从而产生更好的解。这类似于遗传算法中的“变异”操作。

  • 记忆集(Memory Set):记忆集存储当前找到的最优解,以防止算法丢失已找到的优秀解。

4.2 AIS算法的工作流程

  1. 初始化:随机生成一组抗体(候选解),形成初始种群。

  2. 计算亲和力:对每个抗体计算其亲和力(即适应度函数),用以衡量抗体的质量。

  3. 克隆选择:根据亲和力对抗体进行选择,选择质量较高的抗体进行克隆。克隆率通常与亲和力成正比,即亲和力越高的抗体被克隆的数量越多。

  4. 变异操作:对克隆体进行变异操作,产生新的候选解。变异的目的是引入多样性,以探索解空间中的更多区域。

  5. 亲和力成熟:对变异后的克隆体重新计算亲和力,选择质量更高的解更新种群。

  6. 记忆更新:将当前找到的最优解存入记忆集中,以防止丢失优秀解。

  7. 终止条件:重复步骤 2-6,直到满足终止条件(如达到最大迭代次数或找到满意的解)。

4.3 AIS算法的优缺点

4.3.1 优点
  1. 全局优化能力强
    通过克隆选择和亲和力成熟机制,AIS 能有效地进行全局搜索,避免陷入局部最优解。

  2. 自适应性好
    AIS 能自动调整种群结构,通过亲和力评价和选择机制,提高算法的搜索效率。

  3. 具有记忆能力
    AIS 可以记住并保存最优解,通过记忆集的机制防止解的退化,保持解的质量。

  4. 解决多样性问题
    通过变异操作引入多样性,保持种群多样性,避免早熟收敛,提高算法的搜索空间覆盖率。

  5. 适用于多种优化问题
    AIS 广泛应用于优化问题(如 TSP、背包问题)、模式识别与分类、数据挖掘与特征选择、网络安全等领域。

4.3.2 缺点
  1. 收敛速度较慢
    在大规模或复杂问题中,由于需要进行大量的克隆、变异和亲和力计算,收敛速度可能较慢。

  2. 参数设置敏感
    算法性能对参数的选择(如克隆率、变异率、种群大小等)敏感,参数不恰当可能导致局部最优或过早收敛,需要大量调参。

  3. 容易陷入局部最优解
    尽管变异操作引入了多样性,但在解空间复杂或具有大量局部最优解的情况下,算法仍有可能陷入局部最优。

  4. 计算复杂度高
    克隆、变异和亲和力计算的操作对计算资源要求较高,对于大规模问题或多维问题,计算复杂度显著增加。

  5. 对问题特征依赖较强
    AIS 的有效性在很大程度上取决于问题的特征,在某些问题上可能无法比其他优化算法取得更好效果。

  6. 缺乏理论分析
    相较于其他经典优化算法,AIS 算法的理论基础和收敛性分析较少,理论研究不够完善。

  7. 实现复杂度较高
    AIS 涉及多个复杂的过程(如克隆选择、亲和力成熟等),实现和调试较为复杂,需要更多的时间和精力。

4.4 AIS算法的应用

  • 优化问题(如 TSP、背包问题)
  • 模式识别与分类
  • 数据挖掘与特征选择
  • 网络安全(如入侵检测)

原文地址:https://blog.csdn.net/qq_63913621/article/details/142299217

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!