Я пытаюсь решить нелинейную задачу в R, модель определяется следующим образом:
![enter image description here](https://i.stack.imgur.com/TbWuL.png)
переменные являются векторами n элементови бета, и x - матрицы размерности nxk, где k - количество столбцов входного параметра x.
Я попытался решить проблему с помощью пакета CVXR.У меня не было проблем с реализацией целевой функции, переменной и первых ограничений.
n = length(output)
#variables
alpha = Variable(rows = n, name = "alpha")
beta = Variable(rows = n, cols = 3, name = "beta")
epsilon = Variable(rows = n, name = "epsilon")
gamma = Variable(rows = n, name = "gamma")
#objective
obj = Minimize(sum(epsilon^2))
constraints = list(
log(output) == gamma + epsilon,
gamma == alpha + beta[,1] * log(input[,1]) + beta[,2] * log(input[,2])+
beta[,3] * log(input[,3]),
beta >= 0
)
Код работал для этих ограничений.
Я изо всех сил пытался добавить последнее ограничение неравенства.Я попытался добавить его с помощью следующего кода:
constraints = list(
matrix(gamma,nrow = n,ncol = n) >= t(matrix(alpha,nrow = n,ncol = n)) +
t(matrix(beta[,1],nrow = n,ncol = n))*log(input[,1]) +
t(matrix(beta[,2],nrow = n,ncol = n))*log(input[,2]) +
t(matrix(beta[,3],nrow = n,ncol = n))*log(input[,3])
)
Но я получаю сообщение об ошибке «нет метода приведения этого класса S4 к вектору», поскольку переменные alpha, beta и gamma являются объектами S4, а нечисловые переменные.
Я не могу найти способ добавить последнее ограничение в коде.Есть ли способ сделать это с помощью пакета CVXR?Если нет, есть ли другой пакет R, который позволяет это сделать?