Я действительно новичок в CVXPY.Я пытаюсь решить проблему 8 ферзей , то есть проблему размещения 8 шахматных ферзей на шахматной доске 8 x 8, чтобы никакие две королевы не угрожали друг другу.Насколько я понимаю, ограничения должны быть:
- сумма каждой строки равна 1.
- сумма каждого столбца равна 1.
- сумма каждогодиагональ равна 1.
- все переменные должны быть больше 0.
Более того, целевой функцией должно быть: максимизировать 2-норму матрицы (чтобы мы получали только1 и 0, потому что мы можем получить сумму 1 также с float
с, но норма 1 с нулями больше, чем норма с плавающей точкой от 0 до 1, которая также составляет до 1 (например: 0,8 ^ 2 + 0,2^ 2 <1 ^ 2 + 0 ^ 2). </p>
Возможно ли решить эту проблему в 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()
Любая помощь будет оценена !!!