2016-05-08 7 views
1

Kann eine Funktion mit optim(par = init) optimiert werden, mit der Einschränkung, dass der Parametervektor immer in aufsteigender Reihenfolge ist? Zum Beispiel wäre c(1,2,8) erlaubt, aber c(1,2,0) wäre nicht erlaubt?Parameternummern in Optimieren einschränken

+2

, dass lineare Zwänge sind, die in 'constrOptim() behandelt werden kann'. Siehe auch CRAN TaskView https://cran.r-project.org/web/views/Optimization.html – jogo

+0

@jogo Toller Tipp, danke! – Hatshepsut

Antwort

2

können Sie constrOptim() verwenden, welche lineare Einschränkungen umgehen kann:

constrOptim(theta=c(..), f=.., grad=NULL, 
    ui=matrix(c(-1,1,0, 0,-1,1), 2, byrow=TRUE), ci=c(0, 0)) 
+0

Gibt es Gefahren bei der Verwendung des Nelder-Mead impliziert durch "grad = NULL" anstatt "BFGS" in "optim" zu verwenden, wie es für Otto_Ks Antwort möglich wäre? Es scheint, dass ich BFGS nicht verwenden kann, ohne einen Gradienten mit 'constrOptim' zu berechnen, aber ich kann unter 'optim'. – Hatshepsut

+0

Ich nehme an, die Gefahr ist geringer als in der Antwort von Otto_K (Manipulation der Zielfunktion zur Diskontinuität). BFGS ist eine Methode, um einen Proxy für den Hessian Schritt für Schritt aus Gradienten zu konstruieren. Ein Gradient kann pro endlichen Differenzen angenähert werden. – jogo

0

Sie haben diese Bedingung in der Optimierungsfunktion enthalten:

Wenn Ihre Funktion zu maximieren:

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

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

} 

Sie müssen es ändern:

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

} 

Jetzt können Sie Optimiere diese Funktion.

+0

Dies ist nicht mehr kontinuierlich und differenzierbar. Das kann Probleme verursachen. –

+0

Dies ist bei der Restriktionsoptimierung immer der Fall. Monte Carlo Optimierung kann jedoch helfen, dieses Problem zu vermeiden: Optim (par = init, Methode = "SANN") –

+0

Das ist eine dumme Aussage. Eine LP gilt als kontinuierlich und differenzierbar. Das Ziel und jede Einschränkung ist kontinuierlich und differenzierbar. –