在optim中限制参数排名

时间:2016-05-08 06:47:16

标签: r mathematical-optimization

是否可以使用optim(par = init)优化函数,但参数向量总是按递增顺序限制?例如,允许c(1,2,8),但不允许c(1,2,0)

2 个答案:

答案 0 :(得分:2)

您可以使用可以处理线性约束的constrOptim(theta=c(..), f=.., grad=NULL, ui=matrix(c(-1,1,0, 0,-1,1), 2, byrow=TRUE), ci=c(0, 0))

{{1}}

答案 1 :(得分:0)

您必须在优化功能中包含此条件:

如果要最大化的功能是:

fn<-function(x,y,z){

  -x^2-(1+y)^2-(z-y)^2

}

您需要将其更改为:

fn<-function(x,y,z){
   if(x<y&&y<z){
      return(-x^2-(1+y)^2-(z-y)^2)
   }
   else{
      return(-Inf)
    }

}

现在您可以优化此功能。