You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google OR-Tools车辆路由示例运行异常求助

解决Google OR-Tools车辆路由示例中的Check failed: step >0错误

我之前在Windows 10 + Python 3.6环境下运行OR-Tools的VRP示例时也碰到过一模一样的问题,结合官方文档和社区讨论,总结了几个可行的解决方向:

1. 匹配OR-Tools与Python版本的兼容性

Python 3.6属于较旧的版本,OR-Tools从9.x系列开始就不再支持Python 3.6了。你需要安装适配Python 3.6的旧版OR-Tools:

pip install ortools==8.10.8847

这个版本是官方最后支持Python 3.6的稳定版本之一,能避免版本不兼容导致的底层搜索模块错误。

2. 显式初始化Google日志模块

错误提示里提到WARNING: Logging before InitGoogleLogging() is written to STDERR,日志初始化不完整可能干扰求解器的正常运行。在代码开头添加以下初始化代码:

import sys
from ortools.init import pywrapinit

# 初始化日志系统
pywrapinit.CppBridge.InitializeLogging(sys.argv[0])
pywrapinit.CppBridge.SetUsageMessage("运行OR-Tools车辆路由示例")

3. 调整求解器搜索参数

默认的搜索参数可能在某些环境下无法生成有效的搜索步骤,你可以显式设置搜索时间限制和启发式算法,强制求解器在合理范围内运行:

from ortools.constraint_solver import routing_enums_pb2
from ortools.constraint_solver import pywrapcp

# ... 保留原代码中的距离矩阵、路由模型等初始化逻辑 ...

# 自定义搜索参数
search_parameters = pywrapcp.DefaultRoutingSearchParameters()
# 设置10秒的时间限制,避免无限阻塞
search_parameters.time_limit.seconds = 10
# 使用引导式局部搜索启发式,提升求解稳定性
search_parameters.local_search_metaheuristic = (
    routing_enums_pb2.LocalSearchMetaheuristic.GUIDED_LOCAL_SEARCH)

# 运行求解器
solution = routing.SolveWithParameters(search_parameters)

4. 验证输入数据完整性

虽然官方示例代码本身没问题,但如果复制过程中出现距离矩阵缺失、节点数设置错误等情况,也可能导致求解器无法生成有效搜索步骤。可以在代码中添加一行打印,确认距离矩阵的有效性:

print("距离矩阵:", distance_matrix)

确保所有元素都是合理的非负整数,没有全0或者异常值。

按照以上步骤调整后,应该能解决程序冻结退出和Check failed: step >0的错误。

内容的提问来源于stack exchange,提问作者Jeff Saltfist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:32:39