我想知道在R中使用函数optim
时是否可以为要优化的函数添加约束。
示例:
让我们说我想在约束条件下优化y = 10 * x + 5 * y + 4 * z x< = y< = z。
然后定义函数:
funk=function(param){
x=param[1]
y=param[2]
z=param[3]
fit= 10 * x + 5 * y + 4 * z
return(fit)
}
参数x,y和z的初始值都等于1.
optim(par=c(1,1,1), fn=funk, method = "")
是否可以添加与函数内部约束相对应的行" funk"例如说:
if (x > y | y > z) { # conditions are not respected
x= ifelse(x > y, y, x)
y= ifelse(y > z, z, y)
}
我的工作案例比这个功能更难。我知道我刚刚使用的示例很容易通过 lpSolveAPI 解决,但我不能用它来解决我的问题。