Я пытаюсь смоделировать точный эксперимент по поиску строк с использованием CVXPY.Минимизация функции журнала в cvxpy
objective = cvx.Minimize(func(x+s*grad(x)))
s = cvx.Variable()
constraints = [ s >= 0]
prob = cvx.Problem(objective, constraints)
obj = cvx.Minimize(prob)
приведенное выше уравнение мой входной целевой функции.
def func(x):
np.random.seed(1235813)
A = np.asmatrix(np.random.randint(-1,1, size=(n, m)))
b = np.asmatrix(np.random.randint(50,100,size=(m,1)))
c = np.asmatrix(np.random.randint(1,50,size=(n,1)))
fx = c.transpose()*x - sum(np.log((b - A.transpose()* x)))
return fx
Gradient Функция
def grad(x):
np.random.seed(1235813)
A = np.asmatrix(np.random.randint(-1,1, size=(n, m)))
b = np.asmatrix(np.random.randint(50,100,size=(m,1)))
c = np.asmatrix(np.random.randint(1,50,size=(n,1)))
gradient = A * (1.0/(b - A.transpose()*x)) + c
return gradient
Используя это, чтобы найти т «Размер шага» за счет минимизации объективных результатов функции в ошибки объекта «AddExpression» не имеет атрибута «войти».
Я новичок в CVXPY и оптимизации. Я был бы признателен, если бы кто-нибудь мог объяснить, как исправить ошибки.
Благодаря