基于信息熵的免疫算法求解旅行商问题(TSP)项目说明文档
1. 项目介绍
本项目提供了一套基于改进免疫算法(Immune Algorithm, IA)的旅行商问题(TSP)解决方案。旅行商问题是一个典型的组合优化难题,旨在寻找访问所有城市并返回起点的最短路径。针对传统算法在搜索过程中容易陷入局部最优解的缺陷,本程序特别引入了信息熵理论。
通过引入信息熵来评估抗体(候选解)的浓度,算法能够在搜索过程中动态平衡“优胜劣汰”与“多样性保护”之间的关系。浓度较低的独特个体(抗体)在选择过程中会获得额外的熵增补偿,从而有效抑制种群趋同现象,显著增强了算法在全局范围内的搜索能力和鲁棒性。
2. 功能特性
- 多样性保护机制:利用信息熵衡量抗体种群内部的相似度,防止算法过早收敛。
- 多模式变异操作:集成交换变异、逆转变异和插入变异三种算子,增强了局部搜索的灵活性。
- 克隆增殖策略:模拟克隆选择学说,高亲和度的个体拥有更高的克隆规模,加速收敛。
- 动态概率选择:综合考虑路径长度(亲和度)和抗体浓度,通过权重系数动态调节搜索导向。
- 数据可视化:实时生成最优路径分布图和迭代收敛特性曲线,便于性能分析与直观展示。
3. 系统逻辑与实现流程
程序的实现逻辑严格遵循计算免疫学的基本框架,具体步骤如下:
- 环境与数据初始化:预设城市坐标(30个随机分布点)和算法参数。参数包括最大迭代次数(500次)、种群规模(50个抗体)、变异概率、克隆系数以及信息熵影响权重系数(0.8)。
- 距离矩阵计算:根据城市坐标构建欧几里得距离矩阵,作为后续亲和度评价的基础。
- 抗体种群生成:随机生成满足TSP约束的城市访问序列作为初始抗体。
- 免疫评价演化循环:
1.
亲和度评价:计算每个抗体对应路径的距离,以距离的倒数作为亲和度指标。
2.
相似度与浓度分析:计算抗体间相同城市排列的比例,定义相似度阈值(0.9),统计每个抗体的领域浓度。
3.
选择概率计算:将归一化的亲和度与归一化的低浓度指标进行加权求和,生成最终的选择概率矩阵。
4.
克隆与增殖:通过轮盘赌方式选择个体,并根据亲和度高低进行比例克隆。
5.
突变探索:对克隆出的子代执行随机变异操作。
6.
规模压缩:按照亲和度对膨胀后的克隆种群进行排序,择优保留原始规模的个体进入下一代。
- 结果输出:迭代结束后,提取全局最优路径数据,并绘制可视化图形。
4. 关键算法与函数功能分析
- 路径距离计算逻辑:该模块负责遍历抗体序列,累计相邻城市间的欧氏距离,并闭合路径(计算终点回到起点的距离),为亲和度评估提供基础数值。
- 信息熵与浓度评估逻辑:这是本算法的核心。它通过比较抗体中相同位置上城市的重合率来判断相似度。若两抗体相似度超过90%,则视为邻近个体。浓度越高,其在选择中被抑制的可能性越大,从而为新奇结构的产生腾出空间。
- 平衡演化选择逻辑:采用轮盘赌模型。选择权重由亲和度(占比alpha)和浓度补偿(占比1-alpha)共同决定。通过调节alpha值,可以在搜索速度(趋向最优)和搜索广度(保护多样性)之间切换。
- 多算子变异逻辑:程序随机从三种方式中选择变异。交换变异随机互换两个城市位置;逆转变异将两个节点间的路径反转;插入变异则将某一城市提取并插入到另一位置。这种混合变异模式极大地丰富了路径重组的可能性。
- 克隆选择逻辑:模拟生物免疫系统的反应,亲和度越高的抗体代表对目标的适应性越强,因而被赋予更多的副本进行变异试验,从而提高了在优秀解附近寻找更优解的效率。
5. 使用方法
- 启动程序:在MATLAB环境下运行主程序。
- 参数调整:用户可根据城市数量的增减,自行修改参数设置区的nGen(迭代次数)或alpha(多样性权重)。
- 结果观察:
*
命令行输出:程序将在控制台实时显示最终的最短路径长度及最优访问序列。
*
路径图窗口:观察红色的城市连接线是否形成无交叉、平滑且紧致的环路。
*
收敛曲线窗口:观察曲线的变化趋势。平缓的下降通常意味着算法在信息熵的保护下正在进行充分的全局搜索。
6. 系统要求
- 软件版本:MATLAB R2016a 或更高版本。
- 硬件要求:标准桌面或笔记本电脑,无需特殊计算硬件。
- 必备工具箱:仅依赖MATLAB基本功能,无需安装额外的专业工具箱。