Я использовал библиотеку CVXPY в Python, пытаясь решить конкретную проблему оптимизации.
import cvxpy as cp
import numpy as np
from scipy.stats import norm
(...)
a = cp.Variable([10, 1])
obj = cp.Maximize(sum(norm.logcdf(A @ a, scale=sigma)))
constraints = [a >= np.zeros([10, 1]), a <= np.ones([10, 1])]
prob = cp.Problem(objective=obj, constraints=constraints)
prob.solve()
Здесь A - это конкретная матрица numpy, а сигма - это конкретный скаляр. Когда я пытаюсь решить вопрос, пакет выдает ошибку, указанную ниже.
Traceback (most recent call last):
File "~\anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-23-c554382c1c69>", line 19, in <module>
obj = cp.Maximize(sum(norm.logcdf(A @ a, scale=sigma)))
File "~\anaconda3/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py", line 1848, in logcdf
cond1 = self._open_support_mask(x, *args) & (scale > 0)
File "~\anaconda3/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py", line 901, in _open_support_mask
return (a < x) & (x < b)
File "~\anaconda3/lib/python3.7/site-packages/cvxpy/expressions/expression.py", line 597, in __gt__
raise NotImplementedError("Strict inequalities are not allowed.")
NotImplementedError: Strict inequalities are not allowed.
Но сама проблема не содержит строгого неравенства ... Похоже, пакет SCIPY конфликтует с CVXPY, но понятия не имею, как решить ...
a
, нельзя использовать в функциях NumPy или SciPy. Вы должны построить свою функцию цели и ограничения, используя атомы CVXPY. - person Akshay Agrawal   schedule 30.05.2020