从代码到可视化:Attention-Learn-to-Route预训练模型调用与CVRP结果可视化
Attention-Learn-to-Route是一个基于注意力机制的深度学习模型,专为解决组合优化问题如旅行商问题(TSP)和车辆路径问题(CVRP)设计。本文将详细介绍如何调用预训练模型并将CVRP求解结果进行可视化展示,帮助新手快速上手这一强大工具。## 准备工作:环境配置与项目结构首先需要克隆项目仓库并配置运行环境:```bashgit clone https://gitcod
从代码到可视化:Attention-Learn-to-Route预训练模型调用与CVRP结果可视化
【免费下载链接】attention-learn-to-route 项目地址: https://gitcode.com/gh_mirrors/at/attention-learn-to-route
Attention-Learn-to-Route是一个基于注意力机制的深度学习模型,专为解决组合优化问题如旅行商问题(TSP)和车辆路径问题(CVRP)设计。本文将详细介绍如何调用预训练模型并将CVRP求解结果进行可视化展示,帮助新手快速上手这一强大工具。
准备工作:环境配置与项目结构
首先需要克隆项目仓库并配置运行环境:
git clone https://gitcode.com/gh_mirrors/at/attention-learn-to-route
cd attention-learn-to-route
conda env create -f environment.yml
conda activate attention-learn-to-route
项目核心结构包括:
- 预训练模型:pretrained/目录包含多种问题类型(TSP、CVRP、SDVRP等)的预训练权重
- 问题定义:problems/目录实现了各类组合优化问题的逻辑
- 神经网络:nets/目录包含注意力模型、指针网络等核心网络结构
- 评估工具:eval.py提供模型调用和结果评估功能
- 可视化工具:problems/vrp/encode-attend-navigate/data_generator.py包含结果可视化函数
快速调用:CVRP预训练模型评估
使用以下命令调用CVRP预训练模型对测试集进行评估:
python eval.py pretrained/cvrp_100/epoch-99.pt --decode_strategy greedy --val_size 100 --eval_batch_size 32
关键参数说明:
pretrained/cvrp_100/epoch-99.pt:100节点CVRP问题的预训练模型路径--decode_strategy:解码策略(greedy贪婪搜索或bs波束搜索)--val_size:测试实例数量--eval_batch_size:批处理大小
评估完成后,结果将保存在results/目录下,包含求解路径和成本信息。
结果可视化:从数据到图像
CVRP路径可视化
problems/vrp/encode-attend-navigate/data_generator.py中的visualize_2D_trip函数提供了直观的路径可视化功能。以下是使用示例:
from problems.vrp.encode_attend_navigate.data_generator import DataGenerator
import numpy as np
# 加载评估结果
results = np.load('results/cvrp/test_results.npy', allow_pickle=True)
best_route = results[0][1] # 获取第一条最优路径
# 生成可视化
generator = DataGenerator()
generator.visualize_2D_trip(best_route)
可视化结果展示了多车辆配送路径规划,不同颜色线条代表不同车辆的行驶路线,黑色方块表示配送中心:
图1:11条配送路线的CVRP问题优化结果,总距离14.06
TSP动态优化过程
项目还提供了TSP问题的动态优化过程可视化,通过images/tsp.gif可以直观观察算法如何逐步优化100个节点的旅行商路径:
图2:100节点TSP问题的优化过程,最终路径长度8.4577
进阶应用:自定义问题与参数调整
模型参数调整
在eval.py中可以调整多个参数来优化求解效果:
--width:波束搜索宽度(默认为0,即贪婪搜索)--softmax_temperature:控制采样随机性(值越大随机性越高)--max_calc_batch_size:子批次计算大小(影响内存使用)
例如,使用波束搜索策略求解CVRP问题:
python eval.py pretrained/cvrp_50/epoch-99.pt --decode_strategy bs --width 128 --softmax_temperature 0.8
自定义CVRP实例生成
通过generate_data.py可以生成自定义CVRP实例:
python generate_data.py --problem cvrp --name my_cvrp --seed 42 --size 50 --num_samples 1000
生成的数据集可用于模型训练或测试,路径为data/my_cvrp_50_1000.pkl。
总结与扩展
Attention-Learn-to-Route提供了从模型调用到结果可视化的完整工具链,通过预训练模型可以快速解决各类组合优化问题。除CVRP外,项目还支持TSP、SDVRP、OP等多种问题类型,相关预训练模型位于pretrained/目录。
对于希望深入研究的用户,可以查看nets/attention_model.py了解注意力机制的具体实现,或通过plot_vrp.ipynb交互式探索不同参数对求解结果的影响。
通过本文介绍的方法,您可以轻松上手这一强大的组合优化工具,将深度学习模型应用于实际路径规划问题中。
【免费下载链接】attention-learn-to-route 项目地址: https://gitcode.com/gh_mirrors/at/attention-learn-to-route
更多推荐



所有评论(0)