我试图得到数独二进制整数规划(BIP)问题的解决方案。我将其建模为:
这是代码。当删除约束boolean=True时,没有错误。但是它如何处理布尔约束呢。我不理解“TypeError:G必须是‘d’矩阵”的含义。任何提示都会有帮助
import cvxpy as cp
import numpy as np
x = [[cp.Variable(9, boolean=True) for j in range(9)] for i in range(9)]
objective = cp.Maximize(1)
constraints = []
cs = constraints
for i in range(9):
for j in range(9):
# one value per square
cs.append(cp.sum(x[i][j]) == 1)
# unique value every row
cs.append(cp.sum([x[k][i][j] for k in range(9)]) == 1)
# unique value every column
cs.append(cp.sum([x[i][k][j] for k in range(9)]) == 1)
# unique value every box
cs.append(cp.sum([x[(i//3)*3+k//3][(i%3)*3+k%3][j] for k in range(9)]) == 1)
prob = cp.Problem(objective, constraints)
result = prob.solve()
print("z:", result)
a = [[0 for j in range(9)] for i in range(9)]
for i in range(9):
for j in range(9):
for k in range(9):
if(x[i][j].value[k] > 0):
a[i][j] = k+1
print(a[i])
目前没有回答
相关问题 更多 >
编程相关推荐