r-如何求解CVXR中具有不同基数的指数项的目标函数



我正在使用CVXR来求解凹目标函数。决策变量(x(是一维的,目标函数是两个对数项的总和,其中第二项是以"ab"为不同基数的指数项(例如,a^xb^x(;"ab"是常数。

我的全部目标函数是:

(-x*sum(ln(y))) + ln((1-x)/((a^(1-x))-(b^(1-x))))

其中CCD_ 9是给定的数据的1-D矢量。

当我把具有(a^xb^x(的第二项加到目标函数时,我一直得到

Error in a^(1 - x): non-numeric argument to binary operator

CVXR中是否有任何原子函数可以用于编码constant^x?这是我的代码:

library(CVXR)
a <- 7
b <- 0.3
M=1000
x_i # is a given vector of 1-D data
x <- Variable(1)
nominator <- (1-x)
denominator <- (1/((a^(1-x))-(b^(1-x))))
obj <- (-xsum(log(x_i)) + Mlog(nominator/denominator)) # change M to the length of X_i later
constr <- list(x>0)
prob <- Problem(Maximize(obj), constr)
result <- solve(prob)
alpha_hat <- result$getValue(x)

请告诉我我做错了什么。我感谢你事先的帮助。

做一些数学

2=e^log2
2^x=(e^log2)^x=e^(log2*x)

所以,你可以试试

denominator <- 1/(exp(log(a)*(1-x)) - exp(log(b)*(1-x)))

最新更新