【问题标题】:my own constraints Google or-tools我自己的限制 Google or-tools
【发布时间】:2018-04-19 03:13:46
【问题描述】:

我是 CP 问题和 Python 中的 OR-Tools 的新手,我想做以下事情:

# declare variables
for i in range(I):
    for k in range(K):
        x[i,k]=solver.IntVar(0,N,"x %i %i " % (i,k))

#constraints
solver.Add(CustomFunction[(x[i,k])] == 1) # only consider the values of x[i,k] evaluated in CustomFunction is equal to 1

但我在评估 CustomFunction 时遇到错误:

IndexError: 只有整数、切片 (:)、省略号 (...)、 numpy.newaxis (None) 和整数或布尔数组是有效的索引

这是正确的,因为x 是一个 IntVar。

另一方面,我在https://developers.google.com/optimization/reference/constraint_solver/constraint_solver/Solver/ 中看到我可以添加自定义约束,但我不知道如何在 Python 中执行此操作。

感谢您的帮助:)

【问题讨论】:

    标签: python constraint-programming or-tools


    【解决方案1】:

    不幸的是,在原始 CP 求解器中未实现添加新约束。 该求解器已弃用,取而代之的是 CP-SAT 求解器。 新的求解器不支持添加新约束,但由于支持布尔约束和强制字面量,因此具有更具表现力的建模语言。

    见:

    无论如何,这并不能解决您问题的基础。您不能在 CP 求解器(原始或 CP-SAT)中嵌入任何任意代码。

    一种方法是预先计算所有可能的分配,并将其添加到 AllowedAssignment 约束中。

    【讨论】:

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