我想表达的约束是,它们中的N个中的K个应该是真的。我如何在Z3Py中做到这一点呢?有没有内置的支持?我查看了在线文档,但中没有任何关于这方面的API。对于N取一的约束,我知道我可以分别表示至少一个为真(assert或(x1,..,xN))和至多一个为真(assert Not(和(xi,xj)) For all i,j)。我还知道可以手动表达1- of -of-N和K-out-of-N约束。然而,我的印象是,当求解器具有对此约束的内置支
/util/CMakeFiles/ortools_util.dir/build.make:107: recipe for target 'ortools/util/CMakeFiles/ortools_util.dir(Linux中还不支持CPLEX!!)。这是针对v9.1 (或-tools)的。8 CPLEX not yet s
我在这里使用这个例子来理解列表,并使用if-else来为和创建一个约束。 solver.Add(solver.Sum([0 if c[i][j]==0 else x[i, j] for i in range(1, n+1)]) <= 1)
X是前面定义的但是当(i,j)在允许的xi中时,j在ortools中持有一个变量。所以我的意思是,对于这个特别的j,求和,如果,如果它不加0,就可以了。
首先,如果我复制并粘贴中nqueens示例中的代码,就会得到相同的错误。size = 4 size = int(sys.argv[1])控制台给出了以下错误: [self.GetOrMakeIndex(x) for x in variables])
File "C:\ProgramData\Anaconda3\lib\site-packages\ortools