【问题标题】:Can the CP solver be initialised at a specific point?CP求解器可以在特定点初始化吗?
【发布时间】:2019-07-25 13:25:44
【问题描述】:

我正在使用 CP-Sat 求解器来优化我正在制定的时间表。然而,这现在需要很长时间才能解决。是否可以使用旧结果作为求解器的种子,作为起点,以减少找到最佳结果所需的时间?

【问题讨论】:

    标签: python or-tools cp-sat-solver


    【解决方案1】:

    看看这个解决方案提示示例:

    num_vals = 3
    x = model.NewIntVar(0, num_vals - 1, 'x')
    y = model.NewIntVar(0, num_vals - 1, 'y')
    z = model.NewIntVar(0, num_vals - 1, 'z')
    
    model.Add(x != y)
    
    model.Maximize(x + 2 * y + 3 * z)
    
    # Solution hinting: x <- 1, y <- 2
    model.AddHint(x, 1)
    model.AddHint(y, 2)
    

    编辑:你也应该尝试

    • 减少变量的数量。
    • 减少整数变量的域。
    • 使用solver.parameters.num_search_workers = 8 运行多线程求解器。
    • 首选布尔值而不是整数变量/约束。
    • 设置冗余约束和/或对称破坏约束。
    • 分离您的问题并合并结果。

    【讨论】:

      猜你喜欢
      • 2022-07-09
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 2021-12-08
      相关资源
      最近更新 更多