小编Gaz*_*ski的帖子

为什么 AddMultiplicationEquality 仅限于 2 个变量?

我正在构建一个具有一组复杂约束的轮班调度程序,并且为此使用 CP-SAT 求解器。我有一个像这样的数组:

    num_vals = 3
    for n in all_employees:
        for d in all_timeslots:
            shifts[(n, d)] = model.NewIntVar(0, num_vals - 1, 'shift_n%id%i' % (n, d))
Run Code Online (Sandbox Code Playgroud)

我试图设置一个约束,其中 5 个 IntVar 值的后续行的乘积始终等于零,所以我使用如下所示的内容:

        sq_r = model.NewIntVar(0, 1,'sq_r')
        for wind in range(0,11):
            model.AddMultiplicationEquality(sq_r, [shifts[(n, wind)], shifts[(n, wind+1)], shifts[(n, wind+2)], shifts[(n, wind+3)], shifts[(n, wind+4)]])
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

Check failed: vars.size() == 2 (5 vs. 2) General int_prod not supported yet.
*** Check failure stack trace: ***
    @   00007FF98D2B8C45  PyInit__pywrapsat
    @   00007FF98D2B6F82  PyInit__pywrapsat
    @   00007FF98D550E50  PyInit__pywrapsat
    @   00007FF98D54D8FF …
Run Code Online (Sandbox Code Playgroud)

python or-tools cp-sat

1
推荐指数
1
解决办法
2358
查看次数

标签 统计

cp-sat ×1

or-tools ×1

python ×1