Выпуклая задача оптимизации, помеченная как невыпуклая - PullRequest
0 голосов
/ 11 января 2019

Я использую cvxpy (1.0.11) для решения задачи выпуклой оптимизации.

Моя выпуклая проблема помечена как невыпуклая, я думаю, потому что она не знает, что параметр alpha ограничен между [0, 1].

Я знаю, что из этой строки не получается ... loss = mse + (1-alpha) * lam * (penalty_1 + penalty_2) + alpha * lam * penalty_3

пока эта строка преуспевает ... loss = mse + lam * (penalty_1 + penalty_2) + lam * penalty_3

Сейчас гиперпараметры параметризованы таким образом. Если есть способ связать их, я не нашел его нигде в API

alpha = cvx.Parameter(nonneg=True)
alpha.value = 0.5
lam = cvx.Parameter(nonneg=True)
lam.value = 10**(2)

Как мне сказать cvxpy, что альфа - это число между [0, 1]?

1 Ответ

0 голосов
/ 13 января 2019

Я нашел решение, которое тривиально просто. Вместо установки альфы в качестве параметра просто установите его как обычный float.

alpha = 0.5
lam = cvx.Paramter(nonneg=True)
lam.value = 1e2
...