On 7/3/07, Ravi Varadhan <[EMAIL PROTECTED]> wrote: > 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.
Thanks, Ravi. I had already conceived the solution that you suggest, actually using "lpSolve". I am able to get a solution for my problem with constrOptim, but I am not enough confident that the solution is right. That is why I am trying to get a solution with rgenoud, but unsuccessfully until now. Paul > -----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.