Skip to content

Tin-2004/python-tsp-solver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python TSP 求解器 (遗传算法与蚁群优化)

本程序利用遗传算法 (GA) 和蚁群优化 (ACO) 解决旅行商问题 (TSP),旨在找到从指定起点到终点、访问所有城市一次的最短路径。程序会输出关键性能指标,可视化最优路径与收敛过程,并自动保存运行日志和结果图像。用户在程序启动时可以选择要运行的算法。

项目结构

python-tsp-solver
├── src
│   ├── __init__.py
│   ├── main.py              # 程序主入口
│   ├── algorithm.py         # 遗传算法 (GA) 实现
│   ├── aco_algorithm.py     # 蚁群优化 (ACO) 实现
│   └── utils.py             # 辅助函数
├── data
│   └── coordinates.txt      # 城市坐标数据
├── logs
│   └── *.log                # 运行日志文件
├── images
│   └── *.png                # 保存的图像文件
├── requirements.txt         # 依赖库
└── README.md                # 项目说明文档

文件描述

  • src/init.py: 将 src 目录标记为 Python 包。
  • src/main.py: 程序入口。负责:
    • 提示用户选择要运行的算法(遗传算法或蚁群优化算法)。
    • 加载城市坐标数据。
    • 根据用户选择初始化并执行相应的算法。
    • 输出最优路径、最短距离、算法执行时间以及最后一代/迭代的平均距离。
    • 调用绘图函数展示最优路径和距离收敛曲线。
    • 自动将运行日志保存在 logs 目录下,并将结果图(最优路径图、收敛曲线图)保存为图片文件到 images 目录下。
  • src/algorithm.py: GeneticAlgorithmTSP 类实现。
    • __init__: 初始化GA参数。
    • run: 执行GA迭代,返回结果。
    • 核心逻辑:个体创建、适应度计算、锦标赛选择、交叉、变异。
  • src/aco_algorithm.py: AntColonyOptimizationTSP 类实现。
    • __init__: 初始化ACO参数。
    • run: 执行ACO迭代,返回结果。
    • 核心逻辑:路径构建、信息素更新 (集成MMAS特性,如信息素限制和精英策略)。
  • src/utils.py: 辅助函数,如坐标加载、距离计算、结果格式化等。
  • data/coordinates.txt: 存储城市坐标,每行格式为 {x, y}
  • logs/: 存放程序运行日志,文件名包含算法类型和时间戳。
  • images/: 存放程序生成的图像文件(如最优路径图、收敛曲线图),文件名包含算法类型和时间戳。
  • requirements.txt: 项目依赖:numpy, matplotlib

使用方法

  1. 确保 Python (推荐 3.6+) 已安装。
  2. 克隆或下载本仓库。
  3. 进入项目根目录 python-tsp-solver
  4. 安装依赖:
    pip install -r requirements.txt
  5. 运行程序:
    python src/main.py
    程序启动后,会提示您输入数字来选择要运行的算法 (例如,输入 '1' 选择遗传算法,输入 '2' 选择蚁群算法)。 请按照控制台提示进行操作。

算法与参数

通用参数

  • 起点城市索引 (start_city_index)
  • 终点城市索引 (end_city_index)

遗传算法 (GA)

  • 种群大小 (population_size)
  • 精英保留比例 (elite_rate)
  • 变异率 (mutation_rate)
  • 交叉率 (crossover_rate)
  • 迭代代数 (generations)
  • 选择策略: 锦标赛选择 (优化自轮盘赌)。

蚁群优化 (ACO)

  • 蚂蚁数量 (n_ants)
  • 迭代次数 (n_iterations)
  • 信息素影响因子 (alpha)
  • 启发式信息影响因子 (beta)
  • 信息素蒸发率 (evaporation_rate)
  • 信息素沉积因子 (q_val / Q)
  • 初始信息素 (pheromone_init_val)
  • 算法增强: 集成最大最小蚂蚁系统 (MMAS) 特性 (信息素上下限、精英更新策略)。

输出与评估

程序运行后,将提供以下信息,并通过日志和图像文件进行持久化:

  • 控制台输出与日志文件 (logs/*.log):
    • 选定算法及参数配置。
    • 最优路径的城市索引序列。
    • 最短路径总长度。
    • 算法总执行耗时。
    • 最后一代 (GA) 或最后迭代 (ACO) 的平均路径长度。
  • 图形化输出 (自动保存为图像文件到 images/*.png):
    • 最优路径图: 可视化城市布局、最优路径,并高亮起点和终点。
    • 收敛曲线图: 展示算法在迭代过程中最优距离和平均距离的演变趋势。

通过分析这些输出(包括保存的日志和图像),可以评估不同参数对算法性能(如收敛速度、解的质量)的影响。


最后更新: 2025年5月31日

About

WUT智能控制技术大作业,主要解决TSP问题

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages