首页 > 解决方案 > 如何解决在CVXR中具有不同基数的指数项的目标函数?

问题描述

CVXR用来解决凹目标函数。决策变量 ( x) 是一维的,目标函数是 2 个对数项的总和,其中第二项是具有不同基数的“<code>a 和b”(例如 , a^x)的指数b^x;“<code>a 和b”是常量。

我的完整目标函数是:

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

其中y是给定的一维数据向量。

a^x当我将具有 (和)的第二项添加b^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)

请告诉我我做错了什么。我提前感谢您的帮助。

标签: roptimizationexponentialconvexcvxr

解决方案


推荐阅读