基于离散粒子群算法 (DPSO) 的旅行商问题 (TSP) 求解系统
项目介绍
本项目是一套基于改进离散粒子群优化算法(Discrete Particle Swarm Optimization, DPSO)的旅行商问题求解方案。旅行商问题是一个典型的组合优化问题,旨在寻找访问一系列城市并回到起点的最短路径。该系统通过引入交换子与交换序列的概念,将传统连续空间的粒子群算法成功应用于离散的排列组合空间。系统能够自动生成城市坐标、计算距离、执行迭代模拟并最终以图形化的方式展示收敛过程和最优路径,具有较强的直观性和实用性。
功能特性
- 离散算法架构:针对TSP的排列特性,将粒子的“速度”重新定义为交换序列,将“位置”定义为城市排列。
- 动态参数控制:支持通过惯性权重、个体学习因子和社会学习因子来平衡算法的全局搜索与局部开发能力。
- 自动生成与计算:系统随机生成城市坐标,并自动构建完整的欧几里得距离矩阵。
- 全过程评估:实时记录每一代种群的最优适应度,捕捉算法的收敛趋势。
- 结果可视化:提供双图展示,包括展示算法效率的收敛曲线图和展示物理路径的最优轨迹图。
- 起点标注与路径闭合:在路径图中明确标注起始城市,并自动计算包含回到起始点的闭合回路。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件环境:无特殊要求,标准个人电脑即可流畅运行。
- 依赖库:无需额外安装工具箱,仅使用基础图形库和核心函数。
系统实现细节
1. 参数初始化逻辑
系统启动后,首先设定城市数量、种群规模和迭代次数。城市坐标在特定范围内随机分布。算法的核心参数包括:
- 惯性权重 (w):决定了上一代交换序列中保留到当前代的比例。
- 个体学习因子 (c1):决定了向粒子自身历史最优路径学习的概率。
- 社会学习因子 (c2):决定了向全种群历史最优路径学习的概率。
2. 种群初始化
每个粒子代表一个潜在的寻优方案。其位置属性为一个随机生成的城市编号全排列。速度属性初始化为空序列。在初始阶段,系统会计算每个粒子的初始行程距离,并根据这些距离选定初始的个体最优和全局最优。
3. 核心迭代逻辑
在每一次迭代中,系统对每个粒子执行以下更新步骤:
- 计算交换序列:通过比对当前路径与目标路径(个体最优或全局最优)的差异,生成一系列交换操作(交换子)。
- 速度更新:将“保留的旧速度”、“指向个体最优的交换序列片段”和“指向全局最优的交换序列片段”进行合并,形成新的速度向量。
- 位置更新:将合并后的交换序列依次作用于当前城市排列,生成新的路径方案。
- 适应度评估:重新计算总路径长度,若发现更短路径,则相应更新个体和全局的最优记录。
4. 关键算法函数分析
该逻辑负责遍历给定的城市序列,利用预先计算的距离矩阵累加相邻城市间的距离。为了符合TSP定义,计算过程包含从最后一个城市回到起始城市的距离,确保路径的闭合性。
这是算法离散化改造的关键。它通过逐位对比两个排列,当发现位置 i 上的城市不一致时,在当前排列中寻找目标城市的位置并记录为一个交换对(索引1, 索引2),随后执行该交换。这一过程记录了将一个排列转化为另一个排列所需的最小步骤。
该逻辑负责执行速度向量对位置向量的作用。它接收一个由多个交换子组成的序列,依序交换路径数组中对应的元素,从而实现粒子在搜索空间中的受力位移。
5. 可视化输出逻辑
算法结束后,系统自动生成两个交互式图表:
- 算法收敛曲线:纵轴为总距离,横轴为迭代次数,清晰展示了随着迭代进行,最短路径长度不断下降并趋于平稳的过程。
- 最优路径轨迹图:在笛卡尔坐标系中绘制城市点位,按最优序列连线。起点使用红色五角星特殊标注,并对所有城市进行编号显示,方便用户直接观察路径的合理性。