CP解算器能否在特定点初始化?

2024-05-18 06:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用CP Sat解算器来优化我正在制定的时间表。然而,这需要很长时间才能解决。有没有可能用一个旧的结果种子解算器,作为一个起点,目标是减少寻找最佳结果所需的时间?在


Tags: 目标时间时间表种子satcp算器起点
1条回答
网友
1楼 · 发布于 2024-05-18 06:53:02

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

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.parameter.num_search_workers设置为8或6左右(取决于您的cpu)。在
  • 优先选择布尔值而不是整数变量/约束。在
  • 设置冗余约束和/或对称破坏约束。在
  • 分离问题并合并结果。在

相关问题 更多 >