Paul, You had indicated in your previous email that you are having trouble finding a feasible starting value for constrOptim(). So, you basically need to solve a system of linear inequalities to obtain a starting point. Have you considered using linear programming? Either simplex() in the "boot" package or solveLP() in "linprog" would work. It seems to me that you could use any linear objective function in solveLP to obtain a feasible starting point. This is not the most efficient solution, but it might be worth a try.
I am aware of other methods for generating n-tuples that satisfy linear inequality constraints, but AFAIK those are not available in R. Best, Ravi. ---------------------------------------------------------------------------- ------- Ravi Varadhan, Ph.D. Assistant Professor, The Center on Aging and Health Division of Geriatric Medicine and Gerontology Johns Hopkins University Ph: (410) 502-2619 Fax: (410) 614-9625 Email: [EMAIL PROTECTED] Webpage: http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html ---------------------------------------------------------------------------- -------- -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Paul Smith Sent: Tuesday, July 03, 2007 4:10 PM To: R-help Subject: [R] Fine tunning rgenoud Dear All, I am trying to solve the following maximization problem, but I cannot have rgenoud giving me a reliable solution. Any ideas? Thanks in advance, Paul ---------------------------- library(rgenoud) v <- 0.90 O1 <- 10 O2 <- 20 O0 <- v*O1+(1-v)*O2 myfunc <- function(x) { U0 <- x[1] U1 <- x[2] U2 <- x[3] q0 <- x[4] q1 <- x[5] q2 <- x[6] p <- x[7] if (U0 < 0) return(-1e+200) else if (U1 < 0) return(-1e+200) else if (U2 < 0) return(-1e+200) else if ((U0-(U1+(O1-O0)*q1)) < 0) return(-1e+200) else if ((U0-(U2+(O2-O0)*q2)) < 0) return(-1e+200) else if ((U1-(U0+(O0-O1)*q0)) < 0) return(-1e+200) else if ((U1-(U2+(O2-O1)*q2)) < 0) return(-1e+200) else if((U2-(U0+(O0-O2)*q0)) < 0) return(-1e+200) else if((U2-(U1+(O1-O2)*q1)) < 0) return(-1e+200) else if(p < 0) return(-1e+200) else if(p > 1) return(-1e+200) else if(q0 < 0) return(-1e+200) else if(q1 < 0) return(-1e+200) else if(q2 < 0) return(-1e+200) else return(p*(sqrt(q0)-(O0*q0+U0))+(1-p)*(v*(sqrt(q1)-(O1*q1+U1))+(1-v)*(sqrt(q2 )-(O2*q2+U2)))) } genoud(myfunc,nvars=7,max=T,pop.size=6000,starting.values=runif(7),wait.gene rations=150,max.generations=300,boundary.enforcement=2) ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.