Buenos días Alex, Yo tambien estoy generando problemas de programación lineal y utilizo los paquetes lpSolve y lpSolveAPI. Utilizo un número considerable de datos y no estoy teniendo problemas. Te paso los enlaces a estos dos paquetes:
http://cran.r-project.org/web/packages/lpSolve/lpSolve.pdf http://cran.r-project.org/web/packages/lpSolveAPI/lpSolveAPI.pdf Espero que te sirva. Un saludo. El día 25 de abril de 2015, 13:22, Alex J. Zambrano <[email protected]> escribió: > Hola a tod@s. > > Quisiera saber si conocen algún paquete además de boot que permita realizar > programación lineal con muchas restricciones. A continuación escribo el > codigo que estoy utilizando > > rm(list = ls()) > > #Función para generar las variables independientes > gen<-function(n,a=0,b=1){ > X<-matrix(0,ncol=3,nrow=n) > #Muestras distribuidas entre -1 y 1 cuyo radio sea menor que 1 > for(i in 1:n){ > m<-0 > while(m==0){ > U<-runif(3,min=-1,max=1) > R<-t(U)%*%U > if(R<=1){ > X[i,]<-U/sqrt(R) > m<-1 > } > } > } > #Transformación de muestras según la matriz correlación > V<-diag(rep(sqrt(1/3),3)) > C=matrix(c(1,0.03,-0.06,0.03,1,-0.28,-0.06,-0.28,1),ncol=3)#Matriz de > correlación > S<-V%*%C%*%V > B<-chol(solve(S)) > Z<-X%*%t(solve(B)) > #Transformación de muestras para rango 0 y 1 > Y<-(Z-min(Z))/(max(Z)-min(Z)) > #Transformación de muestras entre a y b > Y<-(b-a)*Y+a > return(Y) > } > > set.seed(25042015) > > #Prueba > X<-gen(10000,a=-10,b=10) > summary(X) > cor(X) > > #Caso laplace > library(VGAM)#Se debe cargar está librería independiente del boot (genera > problemas) > X<-gen(20,-10,10) > e<-rlaplace(20,location=0,scale=1) > Yest<-16+4*X[,1]+X[,2]+0.25*X[,3] # Valores a estimar 4, 1, 0.25 > Y<-Yest+e > > n<-length(Y) > p<-dim(X)[2] > r<-n*(n-1)/2 > H<-cbind(rep(1,n-1),-diag(1,n-1)) > for(i in 1:(n-2)){ > h<-cbind(matrix(0,n-1-i,i),rep(1,n-1-i),-diag(1,n-1-i)) > H<-rbind(H,h) > } > > library(boot) # Librería de programación > > #MINSADBED > a<-c(rep(0,p),rep(0,n),rep(1,r),rep(1,r)) > A31<-cbind(X,diag(1,n),matrix(0,n,r),matrix(0,n,r)) > A32<-cbind(matrix(0,r,p),H,-diag(r),diag(r)) > A3<-rbind(A31,A32) > b3<-c(Y,matrix(0,r,1)) > > > simplex(a,A3=A3,b3=b3) > > > #MINSADBAD > a<-c(rep(0,p),rep(0,n),rep(1,r),rep(1,r)) > A31<-cbind(X,diag(1,n),matrix(0,n,r),matrix(0,n,r)) > A32<-cbind(-X,diag(1,n),matrix(0,n,r),matrix(0,n,r)) > A33<-cbind(matrix(0,r,p),H,diag(r),-diag(r)) > A3<-rbind(A31,A32,A33) > b3<-c(Y,-Y,matrix(0,r,1)) > > simplex(a,A3=A3,b3=b3) > > > La idea es estimar unos parámetros de un modelo de regresión, utilizando > métodos de programación. La matriz X tiene cierta estructura de > correlación, y los errores en el modelo son no normales. > > Al realizar la solución por MINSADBED con la función simplex del paquete > boot, me arroja las estimaciones de Beta_1, Beta_2 y Beta_3 se encuentran > en la solución optima de los primeros tres valores. Pero noten que se tiene > una matriz de restricciones demasiado grande. > > Al realizar la solución por MINSADBAD las estimaciones de Beta_1, Beta_2 y > Beta_3 no se logran obtener debido a que es una solución no factible. > > Al realizar está misma en paquete de programación winqsb la solución si > logra obtener, pero construir esa matriz de restricciones es demasiado > engorroso y más aún si de desea realizar un proceso de simulación. > > Agradezco me puedan ayudar. > > Saludos. > > -- > Alex Johann Zambrano Carbonell > http://experienceinstatistics.blogspot.com/ > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > [email protected] > https://stat.ethz.ch/mailman/listinfo/r-help-es _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
