CVXPY не удается найти подходящий интервал для деления пополам

#python #optimization #cvxpy

#python #оптимизация #cvxpy

Вопрос:

У меня простая проблема оптимизации, и я использую CVXPY для ее решения. Вот код:

 import cvxpy as cp
import numpy as np

x = cp.Variable()
concave_fn = cp.log(cp.log(1 cp.exp(x)))
constraints = [x <= 2]
problem = cp.Problem(cp.Maximize(concave_fn), constraints)
assert problem.is_dqcp()
problem.solve(qcp=True, verbose=True)
  

Однако это выдает следующую ошибку:

 SolverError: Unable to find suitable interval for bisection.
  

Я понятия не имею, в чем источник этой ошибки.

Комментарии:

1. Дикое предположение: помогает ли это установить нижнюю границу для x? Или нижняя граница по умолчанию равна 0 (я не знаю cvxpy)? Или явно укажите границы переменной, а не записывайте ее как ограничение.

2. @DanielJunglas Спасибо за ваш комментарий. Нет, он выдает ту же ошибку после добавления нижней границы.

3. Проблема, которую вы опубликовали, находится немного за пределами рулевой рубки cvxpy. Более стандартный способ выразить это maximize log_sum_exp(cp.hstack([0, x])) подлежит x <= 2 . Это не будет включать деление пополам.