orTools 如何从 RoutingModel 获取状态?

Posted

技术标签:

【中文标题】orTools 如何从 RoutingModel 获取状态?【英文标题】:orTools how to get status from RoutingModel? 【发布时间】:2016-11-12 17:31:26 【问题描述】:

我正在使用下面的代码设置 routingModel 的时间限制。

RoutingSearchParameters search_parameters = RoutingModel.DefaultSearchParameters();
search_parameters.FirstSolutionStrategy = FirstSolutionStrategy.Types.Value.PATH_CHEAPEST_ARC;
search_parameters.TimeLimitMs = 30000;
RoutingModel routing = new RoutingModel(number_of_locations, number_of_vehicles);

但是我不知道搜索完成后如何获取状态,所以我可以检查是时间限制取消了它还是由于其他原因没有找到解决方案。请帮忙

Assignment solution = routing.SolveWithParameters(search_parameters);

RoutingModel 类有这个静态属性,但我不知道如何从实例中读取它们:

public static readonly int ROUTING_FAIL;
public static readonly int ROUTING_FAIL_TIMEOUT;
public static readonly int ROUTING_INVALID;
public static readonly int ROUTING_NOT_SOLVED;
public static readonly int ROUTING_SUCCESS;

【问题讨论】:

【参考方案1】:

..取消它或找到解决方案的时间限制..

这在 python 3 中适用于我:

....
solution = routing.SolveWithParameters(search_parameters)

if solution:
    print("Solution Found")
    ....
else:
    print("Terminated without finding solution")

从问题中不清楚您是否正在寻找上述解决方案,或者您是否有兴趣检查找到的解决方案是否是最佳的。

【讨论】:

您好 NFern,感谢您的回复。我在回答中犯了一个错误,我输入“这是取消它的时间限制或已找到解决方案......”我的意思是输入“这是取消它的时间限制或由于其他原因未找到解决方案。”我想知道时间限制是否是没有找到解决方案的原因。

以上是关于orTools 如何从 RoutingModel 获取状态?的主要内容,如果未能解决你的问题,请参考以下文章

ortools如何添加非线性约束

Python中如何使用ortools求解二次规划?

如何在 ortools 中更改约束参数的类型

使用ortools时如何获取cpsolver的变量和约束

如何在 ORTOOLS 中使用 SCIP for MILP [python]

如何在ortools python中设置约束