Optim()在函数中设置约束以进行优化

时间:2017-07-20 11:43:19

标签: r optimization constraints

我想知道在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 解决,但我不能用它来解决我的问题。

0 个答案:

没有答案