【问题标题】:OR-Tools: TSP with ProfitsOR-Tools:有利润的 TSP
【发布时间】:2021-08-08 11:31:11
【问题描述】:

是否有使用 OR-Tools 计算 TSP 和利润的选项? 我尝试为每个端节点实现收入

 data['revenue'] = {(1, 0): 0,
                   (1, 2): 100,
                   (1, 3): 10,
                   (1, 4): 10000000000,    
                   (2, 0): 0,
                   (2, 1): 1000,
                   (2, 3): 10,
                   (2, 4): 10000000000,
                   (3, 0): 0,
                   (3, 1): 1000,
                   (3, 2): 100,
                   (3, 4): 10000000000,
                   (4, 0): 0,
                   (4, 1): 1000,
                   (4, 2): 100,
                   (4, 3): 10
                   }

然后我从这个问题中添加:Maximize profit with disregard to number of pickup-delivery done OR tools

 for node, revenue in data["revenue"].items():
    start, end = node
    routing.AddDisjunction(
        [manager.NodeToIndex(end)], revenue
    )

    routing.AddDisjunction(
        [manager.NodeToIndex(start)], 0
    )

不幸的是,这不起作用。我总是得到解决方案,这是没有意义的。 有人可以帮助或给我一个建议,如何使用 OR-Tools 将利润实现到 TSP 中?

【问题讨论】:

    标签: or-tools


    【解决方案1】:
    1. 在析取中添加开始或结束节点没有意义......

    2. AddDisjunction 必须应用于每个节点(或对)但开始和结束节点。

    for node, revenue in data["revenue"].items():
        pickup, delivery = node
        pickup_index = manager.NodeToIndex(pickup)
        delivery_index = manager.NodeToIndex(delivery)
        routing.AddDisjunction(
          [pickup_index, delivery_index], revenue, 2 # cardinality
        )
    
    1. 你的字典中的键值是一对节点吗?对我来说似乎是协调的......

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2012-04-17
      • 2011-07-01
      • 2022-07-06
      相关资源
      最近更新 更多