是否可以使用optim(par = init)
优化函数,但参数向量总是按递增顺序限制?例如,允许c(1,2,8)
,但不允许c(1,2,0)
?
答案 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)
}
}
现在您可以优化此功能。