我对CVXPY非常陌生。 我正在尝试解决八皇后问题,即在8x8的棋盘上放置8个国际象棋皇后,使得没有两个皇后互相威胁。 据我所知,约束应该是:
任何帮助都将不胜感激!!!
- 每行总和等于1。
- 每列总和等于1。
- 每个对角线的总和等于1。
- 所有变量都应大于0。
float
获得1的总和,但是0之间的浮点数的范数比1的范数大到1^2+0^2(例如:0.8 ^ 2 + 0.2 ^ 2 <1 ^ 2 + 0 ^ 2)。
在CVXPY中解决这种问题是否可能?我不太清楚如何在CVXPY中形成约束条件和目标函数,但这是我的初步尝试(我立即收到了“DCP错误”,所以我没有继续进行的理由,但仍然):
from cvxpy import *
x=Variable(shape=(9,9), name='board')
obj = Maximize(norm(x))
const = [sum(x, axis=1)==1]
prob=Problem(objective=obj,constraints=const)
prob.solve()
任何帮助都将不胜感激!!!