有约束的R优化

时间:2020-06-10 11:40:10

标签: r optimization

我有一个包含两个变量的函数f,我想在约束x[1]+x[2]=1下将其最小化。 在这里

f <- function(x){
y <- 4*sin(x[1])+3*cos(x[2])
return(y) 
}

我在这里已经读到optim()可以完成工作,但是如何包含约束?

1 个答案:

答案 0 :(得分:1)

添加约束x[1] + x[2] = 1后,该函数将成为单变量函数,您可以将其重写为以下内容:

f <- function(x){
  4*sin(x) + 3*cos(1-x)
}

optimize()可用于一维优化。

opt <- optimize(0, c(0, 10))
opt

# $minimum
# [1] 4.468871
# 
# $objective
# [1] -6.722745

curve(f, 0, 10)
with(opt, points(minimum, objective, col = "red", pch = 16))