Ich habe einen Vektor von ganzen Zahlen als Eingabewerte (Werte für optim par Start)Set Constraints in einer Matrix - OPTIM in R
my.data.var <- c(10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25,
10,0.25,0.25,0.25,0.25,0.25)
Optimierungsproblem ist eine min. Problem.
Die Fehlerfunktion berechnet Summe der Quadratwurzel diff in Werte zwischen zwei Matrizen (Gegebene Werte Matrix vs Berechnete Matrix)
- Die berechnete Matrix ist die eine, die oben ganzzahligen Vektor verwendet.
Daher wird in der Fehlerfunktion I stapeln den ganzzahligen Vektor in eine Matrix alsmy.data.var.mat <- matrix(my.data.var,nrow = 4,ncol = 6,byrow = TRUE)
der Einschränkung, dass ich, dass colSum(my.data.var.mat) <=1
Optim als
sols<-optim(my.data.var,Error.func,method="L-BFGS-B",upper=c(Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1),
lower=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
definiert ist, einzuführen, müssen
Fehler Funktion ist definiert als
Error.func <- function(my.data.var){
my.data.var.mat <- matrix(my.data.var,nrow = ncol(my.data.matrix.prod),ncol = ncol(my.data.matrix.inj)+1,byrow = TRUE)
Calc.Qjk.Value <- Qjk.Cal.func(my.data.timet0,my.data.qo,my.data.matrix.time,
my.data.matrix.inj, my.data.matrix.prod,my.data.var,my.data.var.mat)
diff.values <- my.data.matrix.prod-Calc.Qjk.Value #FIND DIFFERENCE BETWEEN CAL. MATRIX AND ORIGINAL MATRIX
Error <- ((colSums ((diff.values^2), na.rm = FALSE, dims = 1))/nrow(my.data.matrix.inj))^0.5 #sum of square root of the diff
Error_total <- sum(Error,na.rm=FALSE)/ncol(my.data.matrix.prod) # total avg error
Error_total
}
Datensatz Gegeben: my.data.matrix.prod
, my.data.timet0, my.data.qo, my.data.matrix.time, my.data.matrix.inj
Also, meine Frage ist, wie und wo soll ich die Matrix col Summe Einschränkung einführen? Oder anders ausgedrückt: Wie würde OPTIM den ganzzahligen Vektor unter der Matrix-Col-Summen-Einschränkung variieren?
@ZheyuanLi: thnks. Ich hoffe, ich bekomme einen Rat! – Modi
@ZheyuanLi: Versuche mein Glück mit "nloptr". Mal schauen! – Modi
@ZheyuanLi: Gelöst es. Anstatt Optim zu verwenden, habe ich nloptr solver verwendet. Es berücksichtigt Ungleichheitsbeschränkungen. Schau mal hier ..http: //stackoverflow.com/questions/37951719/multiple-inequality-constraints-minimization-with-r-nloptr-package – Modi