[R] Increasing precision of rgenoud solutions

Jasjeet Singh Sekhon sekhon at berkeley.edu
Thu May 10 19:54:32 CEST 2007

```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?
>