我正在尝试使用R中的CVXR
包对凸优化问题进行编码,并且在实际上可行的情况下,努力将目标函数重新构造为凸形。
这是我对问题的数学表述。请原谅我混合使用矩阵和常规符号,但是在下面的 F 中是收益矩阵。
因此,它基本上是封装在带有约束的最小二乘法优化中的因子基准。我希望这可以作为凸优化问题来解决,因为我正在使外部函数的平方误差的总和最小化,但到目前为止,内部Beta已被证明是有问题的。
以下是对此进行可重复编码的尝试:
library(CVXR)
# number of inner beta variables
IB <- 4
# number of outer beta variables
OB <- 3
n <- 102
Y <- rnorm(n-2,mean=1,sd=2)
# F Matrix
F.mat <- matrix(rnorm(n * IB),ncol=IB)
# establish variables for optimization
InnerBetas <- Variable(IB)
OuterBetas <- Variable(OB)
# Set up objective function
OB_IB.obj <- Minimize(sum((Y - (OuterBetas[1] * (F.mat %*% InnerBetas)[1:100] +
OuterBetas[2] * (F.mat %*% InnerBetas)[2:101] +
OuterBetas[3] * (F.mat %*% InnerBetas)[3:102]))^2))
#> Error in OuterBetas[1] * (F.mat %*% InnerBetas)[1:100]:
#> Cannot multiply elementwise AFFINE and AFFINE
如果我为内部或外部beta插入数字并为其他beta进行优化,则它起作用,但是当我尝试制定此目标函数时,您会看到上面的错误。有没有办法表述它是凸的?