首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何表示CVXR中二次超线性函数的和?

如何表示CVXR中二次超线性函数的和?
EN

Stack Overflow用户
提问于 2022-02-23 19:48:01
回答 1查看 43关注 0票数 0

我的目标函数是线性项上n次二次和。问题是这样的:

我知道这些n项的分母都是正的,并且是m<

EN

回答 1

Stack Overflow用户

发布于 2022-02-24 00:09:08

我怀疑这个函数是凸的,但是您可以尝试用CVXR实现它,如果不是,它会告诉您。

无论如何,我们可以使用一般的非线性优化器(如optim )来实现。定义一个函数ontof,将R^m映射到可行区域,然后我们可以如下所示实现它。尝试从多个起点,只是为了确保。

代码语言:javascript
复制
# test input
m <- 2
n <- 3
A <- matrix(1:(m*n), m, n)

ontof <- function(w) w*w / sum(w*w)
obj <- function(w) sum( sum(w*w) / colSums(A * w) )

res <- optim(1:m, function(x) obj(ontof(x)))

str(res)
## List of 5
##  $ par        : num [1:2] 1.37 1.55
##  $ value      : num 0.559
##  $ counts     : Named int [1:2] 39 NA
##   ..- attr(*, "names")= chr [1:2] "function" "gradient"
##  $ convergence: int 0
## $ message    : NULL

ontof(res$par) # solution
## [1] 0.4398606 0.5601394
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71243174

复制
相关文章

相似问题

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