Я пытаюсь решить проблему, которая включает \sqrt{w^t \Sigma w}
в целевой функции.Для вычисления w^t \Sigma w
я использую функцию quad_form
.Как мне взять его квадратный корень?
Когда в коде я пытаюсь написать
risk = sqrt(quad_form(w, E))
Я получаю ошибку правила DCP, но я почти уверен, что она выпуклая, учитывая другие ограничения, которые у меня есть.Таким образом, вопрос не в математике, а в фактической реализации выпуклой программы.
Проблема, которую я пытаюсь решить,
ret = mu.T*w
risk = sqrt(quad_form(w, E))
gamma.value = distr.pdf(distr.ppf(alpha)) / (1 - alpha)
minimizer = Minimize(-ret + risk * gamma) #cvxpy.sqrt(risk) * gamma)
constraints = [w >= 0,
b.T * log(w) >= k]
prob = Problem(minimizer, constraints)
prob.solve(solver='ECOS_BB',verbose=True)