Я работаю в задаче оптимизации (A * v = b), где я хотел бы оценить набор альтернатив X = {x1, x2, x3, x4}.Однако у меня есть следующее ограничение нормализации: | v [i] - v [j] |<= 1, который может иметь вид -1 <= v [i] - v [j] <= 1. Мой код выглядит следующим образом: </p>
import cvxpy as cp
n = len(X) #set of alternatives
v = cp.Variable(n)
objective = cp.Minimize(cp.sum_squares(A*v - b))
constraints = [0 <= v]
#Normalization condition -1 <= v[i] - v[j] <= 1
for i in range(n):
for j in range(n):
constraints = [-1 <= v[i]-v[j], 1 >= v[i]-v[j]]
prob = cp.Problem(objective, constraints)
# The optimal objective value is returned by `prob.solve()`.
result = prob.solve()
# The optimal value for v is stored in `v.value`.
va2 = v.value
Какой вывод:
[-0.15 0.45 -0.35 0.05]
Результат, который не близок к тому, что должно быть, и даже имеет отрицательные значения.Я думаю, что мой код для нормализации скорее всего неправильный.