首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何求解CVXR中具有不同基数的指数项的目标函数?

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

Stack Overflow用户
提问于 2020-11-06 01:47:03
回答 1查看 149关注 0票数 1

我用CVXR来解一个凹的目标函数。决策变量(x)是一维的,目标函数是两个对数项之和,其中第二项为指数,不同的“a”和“b”(如a^xb^x),“ab”为常数。

我的全部目标是:

代码语言:javascript
复制
(-x*sum(ln(y))) + ln((1-x)/((a^(1-x))-(b^(1-x))))

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

当我在目标函数中添加第二个项(a^xb^x)时,我不断地得到

代码语言:javascript
复制
Error in a^(1 - x): non-numeric argument to binary operator

CVXR中有什么原子函数可以用来编码constant^x吗?这是我的代码:

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

发布于 2022-03-30 19:30:28

做点数学

代码语言:javascript
复制
2=e^log2
2^x=(e^log2)^x=e^(log2*x)

所以,你可以试试

代码语言:javascript
复制
denominator <- 1/(exp(log(a)*(1-x)) - exp(log(b)*(1-x)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64707768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档