Python调用LKH求解TSPTW:初始路径作种子的报错问题排查
问题描述
我需要解决多个带时间窗的旅行商问题(TSPTW),目前使用Python调用LKH求解器(仅次于Concorde的顶尖求解器)。目标是将给定的初始路径作为求解器种子进行优化,但得到的最优解适应度始终不如初始路径。
常规调用代码:
a=lkh.solve(lkh_path, problem, max_trials=10000, runs=10, MOVE_TYPE=5, tour_file='solution1.txt')
后续根据LKH用户指南尝试使用initial_tour_file参数,修改后的代码:
a=lkh.solve(lkh_path, problem, max_trials=10000, runs=10, MOVE_TYPE=5, intial_tour_file='initial.txt', tour_file='solution1.txt')
执行后出现报错:
*** Error ***
[initial_tour.txt] Unknown Keyword: 1
初始路径文件initial.txt内容为:
1 2 3 4 5 6 7 8 9 10 -1
解决方案
修正参数拼写错误:代码中
intial_tour_file存在拼写错误,正确参数名应为initial_tour_file(缺少字母'i')。调整初始路径文件格式:LKH要求初始路径文件必须包含
TOUR_SECTION关键字作为起始标识,正确的initial.txt格式如下:
TOUR_SECTION 1 2 3 4 5 6 7 8 9 10 -1
- 修正后的调用代码:
a=lkh.solve(lkh_path, problem, max_trials=10000, runs=10, MOVE_TYPE=5, initial_tour_file='initial.txt', tour_file='solution1.txt')
- 额外优化建议:
- LKH确实支持以初始路径为种子优化,若修正后解的适应度仍不如初始路径,可尝试增大
max_trials或runs参数值,给求解器更多搜索迭代空间; - 更换
MOVE_TYPE参数(比如尝试3或4),不同的移动类型会影响搜索策略,可能找到更优解。
内容的提问来源于stack exchange,提问作者Beatriz Santos
相关产品推荐
相关产品推荐

