我有一个包含两个变量的函数f
,我想在约束x[1]+x[2]=1
下将其最小化。
在这里
f <- function(x){
y <- 4*sin(x[1])+3*cos(x[2])
return(y)
}
我在这里已经读到optim()
可以完成工作,但是如何包含约束?
答案 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))