#python #cvxpy #convex-optimization
Вопрос:
Я пытаюсь научиться размножаться power(lmbd,2)
с quad_form(z,A)
помощью своей цели. Я думаю, что эта часть выдает сообщение об ошибке Error is Problem does not follow DCP rules.
objective = cp.Minimize(cp.power(lmbd,2) * cp.quad_form(z, A)) - lmbd*cp.matmul(z.T, s))
constraint = [cp.sum(z) == 1, z >= 0]
Ниже приведены мои выражения:
lmbd = cp.Variable()
A = np.random.rand(d, d)
A = np.dot(A.transpose(),A)
z = cp.Variable(d)
s = np.random.randn(d)
С нетерпением жду вашей помощи. Спасибо!
Комментарии:
1. Что такое lmbd ? Почему это переменная ? В этом нет никаких ограничений. И что вы подразумеваете под умножением? Матрица или поэлементное умножение?
2. в статье, над которой я работаю, lmbd указывается как самозвешенный параметр. Единственным ограничением является ограничение = [cp.сумма(z) == 1, z >= 0] . Цель, которую я пытаюсь решить, — это lmbd^2*z.T A z-lmbd z.T s. Я новичок в этой теме. Это все, что я знаю.
3. Спасибо вам за ваш ответ. Но мне также нужно найти оптимальное значение lmbd. Уравнение пытается найти оптимальные минимальные значения z и lmbd.
4. Ваша проблема не выпуклая, поэтому cvxopt не может ее решить. Вам придется найти другой решатель, такой как гуроби, или попытаться преобразовать проблему математически.