2016-11-12 5 views
0

Я устанавливаю ограничение времени на routingModel с кодом ниже.orTools, как получить статус от 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; 

ответ

0

..Это был лимит времени, который отменил его или решение имеет был найден ..

Это работает для меня в Python 3:

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

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

Неясно, если вы ищете вышеупомянутое решение, или вас интересует проверка оптимального решения.

+0

Hi NFern, спасибо, что ответили. Я сделал ошибку в ответе, где я набрал «это был временной лимит, который отменил его или решение было найдено ...» Я намеревался напечатать «это был лимит времени, который отменил его, или решение НЕ было найдено по другим причинам «. Я хочу знать, является ли ограничение по времени причиной того, что решение не найдено. – Borbea