[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?
 > 
 > Thanks in advance,
 > 
 > Paul
 > 
 >



More information about the R-help mailing list