# [R] Fine tunning rgenoud

Paul Smith phhs80 at gmail.com
Wed Jul 4 01:13:49 CEST 2007

```On 7/4/07, Ravi Varadhan <rvaradhan at jhmi.edu> wrote:
> It should be easy enough to check that your solution is valid (i.e. a local
> minimum):  first, check to see if the solution satisfies all the
> constraints; secondly, check to see if it is an interior point (i.e. none of
> the constraints become equality); and finally, if the solution is an
> interior point, check to see whether the gradient there is close to zero.
> Note that if the solution is one of the vertices of the polyhedron, then the
> gradient may not be zero.

That is a very good idea, Ravi! Thanks!

Paul

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Paul Smith
> Sent: Tuesday, July 03, 2007 5:10 PM
> To: R-help
> Subject: Re: [R] Fine tunning rgenoud
>
> > 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: r-help-bounces at stat.math.ethz.ch
> > [mailto:r-help-bounces at stat.math.ethz.ch] 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?
> >
> >
> > Paul
> >
> > ----------------------------
> > library(rgenoud)
> >
> > v <- 0.90
> > O1 <- 10
> > O2 <- 20
> > O0 <- v*O1+(1-v)*O2
> >
> > myfunc <- function(x) {
> >   U0 <- x
> >   U1 <- x
> >   U2 <- x
> >   q0 <- x
> >   q1 <- x
> >   q2 <- x
> >   p <- x
> >
> >   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 at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help