稍后我会添加一堆约束,但现在我想做的就是定义 16 个常量资源(唯一的整数),并将它们分配给网格。我创建了一个 4 x 4 的
Var
数组,以及我的 16 个 Const
。
我正在努力指定方程式,这些方程式表示每个常量的值都应分配给单元格,并且每个单元格都应该是唯一的。
可能是一个非常微不足道的问题,但我在这个问题上停留的时间比我承认的要长。这对我来说是新的。当我尝试以不同的方式比较单元格时,我得到了一堆不同的错误。毫不奇怪,
==
不会抛出错误。
我知道对此没有唯一的解决方案。稍后添加进一步的限制将为我缩小范围。目前,任何使单元格采用 0 到 15(含)之间的所有值的分配都是有帮助的。
from gekko import GEKKO
m = GEKKO() # Initialize gekko
squares = []
for i in range(0,16):
squares.append(m.Const(i))
grid = m.Array(m.Var, (4,4), integer=True)
# here I want to add my constraints
m.solve(disp=False)
print(grid)
可以使用方程式来赋值:
from gekko import GEKKO
m = GEKKO() # Initialize gekko
squares = []
for i in range(16):
squares.append(m.Const(i))
grid = m.Array(m.Var, (4,4), integer=True)
k = 0
for i in range(4):
for j in range(4):
m.Equation(grid[i,j]==squares[k])
k+=1
m.solve(disp=False)
print(grid)
创建唯一性更具挑战性,在有关创建数独求解器的相关问题中进行了讨论:如何在 Gekko 中强制使用“!=”(编写数独求解器)