为什么使用自动优先解决方案解决这个VRP问题需要这么长时间?

时间:2019-06-05 10:44:04

标签: or-tools

我已针对自己的特定问题修改了https://developers.google.com/optimization/routing/vrptw中的数据-见下文。

如果我尝试使用FirstSolutionStrategy.PATH_CHEAPEST_ARCFirstSolutionStrategy.AUTOMATIC,则需要42秒才能解决这个小问题!

如果我更改为FirstSolutionStrategy.PATH_MOST_CONSTRAINED_ARC,它将在3毫秒内解决。

为什么求解器对此设置如此敏感?求解器是否可以并行尝试所有策略并选择最快或最佳的策略?


def create_data_model():
  """Stores the data for the problem."""
  data = {}
  data['time_matrix'] = [
                        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                       [1000, 99999, 99999, 99999, 99999, 99999, 73, 104, 113, 117, 99999],
                       [1000, 99999, 99999, 99999, 99999, 99999, 84, 99999, 122, 125, 99999],
                       [1000, 99999, 99999, 99999, 99999, 99999, 97, 75, 122, 125, 99999],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 61, 109, 114, 103],
                       [1000, 99999, 99999, 99999, 99999, 99999, 47, 99999, 83, 89, 77],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99, 92],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 88, 94],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 42, 64],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 51],
                       [1000, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999]]
  data['time_windows'] = [(0, 10000), (435, 450), (450, 465), (450, 465), (475, 490), (480, 495), (540, 555), (540, 555), (600, 615), (720, 735), (810, 825)]
  data['num_vehicles'] = 5
  data['depot'] = 0
  return data

还更改了时间维度:

routing.AddDimension(
        transit_callback_index,
        10000,  # allow waiting time
        10000,  # maximum time per vehicle
        True,  # Don't force start cumul to zero.
        time)

0 个答案:

没有答案