【问题标题】:Google Or-tools on python with own meta-heuristic具有自己的元启发式的 Python 上的 Google Or-tools
【发布时间】:2019-10-10 19:05:55
【问题描述】:

我想使用 Google OR-Tools 解决车辆路线问题 (vrp),但使用与所提供的不同的元启发式方法,即:贪婪下降、引导式局部搜索、模拟退火、禁忌搜索和目标禁忌搜索。这就是这里的文档中解释的内容:https://developers.google.com/optimization/routing/routing_options

从手册 (https://acrogenesis.com/or-tools/documentation/user_manual/manual/metaheuristics/metaheuristics.html) 我了解到可以使用我自己的元启发式算法。此外,我在这里找到了一个可以做到的人:https://medium.com/gogovan-technology/improving-operations-with-route-optimization-e032d8bf5edc。但是,我找不到用 python 实现的示例。实际上,我还没有找到任何关于如何使用我自己的元启发式算法的示例。尽管文档和存储库 (https://github.com/google/or-tools/blob/0777e4d12ff9b45397c3aa6bbe14fc72b19bf453/examples/python/vrp.py) 中提供了几个示例,但它们只专注于使用自己的元启发式算法。

由于我对编码的了解并不高,我需要一些关于如何实现它的指南和想法。有没有人做过这个,可以和我分享一些例子吗?或者你知道我在哪里可以找到一些很好的友好例子吗?非常感谢任何帮助或建议。

【问题讨论】:

    标签: or-tools


    【解决方案1】:

    不,你不能直接。即使在 C++ 中,MetaHeuristic 类也没有公开。

    您应该能够从 python 中的 SearchMonitor 类派生,并重新实现协议。

    【讨论】:

      【解决方案2】:

      你必须在适应度(成本)函数上解决它, 注意:输入算法在最大和最小解决方案之间是随机的(例如这是问题中的节点在 0 - 100 之间)。 算法的输出是适应度函数的结果,以及如何路由的结果以及有关最佳路由的任何事情。 所以首先你必须对它的适应度函数提出问题。 假设,用于遗传算法的适应度函数 F 是 的线性组合。路线上所有乘客的等待时间向量 w 和旅行时间(距离) d。因此,下层 GA 的目标函数为 F(w,d)= min (sum(c1*w+c2*d)) 所以你必须选择算法的节点...... 算法选择1、5、6、8、8个节点。 并且您必须为此节点计算上述公式。在每次迭代中,您必须为所有人口计算此公式,直到问题覆盖率达到最小结果。

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 2020-04-21
        • 2021-07-08
        • 2019-06-28
        • 2022-06-30
        • 2021-10-15
        • 2019-08-10
        • 2021-06-14
        • 1970-01-01
        相关资源
        最近更新 更多