[R] Increasing precision of rgenoud solutions

Paul Smith phhs80 at gmail.com
Thu May 10 20:15:49 CEST 2007


Thanks, Jasjeet, for your reply, but maybe I was not enough clear.

The analytical solution for the optimization problem is the pair

(sqrt(2)/2,sqrt(2)/2),

which, approximately, is

(0.707106781186548,0.707106781186548).

The solution provided by rgenoud, with

solution.tolerance=0.000000001

was

$par
[1] 0.7090278 0.7051806

which is not very precise comparing with the values of the
(analytical) solution. Is it possible to increase the degree of
closeness of the rgenoud solutions with the analytical ones?

Paul


On 5/10/07, Jasjeet Singh Sekhon <sekhon at berkeley.edu> wrote:
>
> Hi Paul,
>
> Solution.tolerance is the right way to increase precision.  In your
> example, extra precision *is* being obtained, but it is just not
> displayed because the number of digits which get printed is controlled
> by the options("digits") variable.  But the requested solution
> precision is in the object returned by genoud().
>
> For example, if I run
>
> a <- genoud(myfunc, nvars=2,
>      Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.000001)
>
> I get
>
> > a$par
> [1] 0.7062930 0.7079196
>
> But if I set options("digits"=12), and without rerunning anything I check
> a$par again, I observe that:
>
> > a$par
> [1] 0.706293049455 0.707919577559
>
> Cheers,
> Jas.
>
> =======================================
> Jasjeet S. Sekhon
>
> Associate Professor
> Survey Research Center
> UC Berkeley
>
> http://sekhon.berkeley.edu/
> V: 510-642-9974  F: 617-507-5524
> =======================================
>
>
> Paul Smith writes:
>  > Dear All
>  >
>  > I am using rgenoud to solve the following maximization problem:
>  >
>  > myfunc <- function(x) {
>  >   x1 <- x[1]
>  >   x2 <- x[2]
>  >   if (x1^2+x2^2 > 1)
>  >     return(-9999999)
>  >   else x1+x2
>  > }
>  >
>  > genoud(myfunc, nvars=2,
>  > Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.000001)
>  >
>  > How can one increase the precision of the solution
>  >
>  > $par
>  > [1] 0.7072442 0.7069694
>  >
>  > ?
>  >
>  > I have tried solution.tolerance but without a significant improvement.
>  >
>  > Any ideas?
>  >
>  > Thanks in advance,
>  >
>  > Paul
>  >
>  >
>



More information about the R-help mailing list