1 / х нарушает правила DCP в CVXPY - PullRequest
0 голосов
/ 14 июня 2019

Я хочу решить задачу нелинейной оптимизации, используя cvxpy.Я получаю DCP Error при введении 1/x в ограничениях, где x - переменная.

Например, такой код приводит к DCP Error

import cvxpy

x = cvxpy.Variable(1)

obj = cvxpy.Maximize(x)
cst = [1/x >= 1]

prob = cvxpy.Problem(obj, cst)
opt_val = prob.solve()

Ожидаетсярезультат x=1.Также 1/x явно выпуклый, поэтому я не понимаю, в чем проблема ...

1 Ответ

0 голосов
/ 15 июня 2019

Я исправил проблему, добавив необязательный параметр в prob.solve ():

import cvxpy

x = cvxpy.Variable(1)

obj = cvxpy.Maximize(x)
cst = [1/x >= 1]

prob = cvxpy.Problem(obj, cst)
opt_val = prob.solve(qcp=True)
opt_val

Возвращает x = 1, как и ожидалось.

...