Probably I included too much at once in my bug report. I can live with an unfulfilled wishlist and thank you for thinking about it. The "badly-behaved" function is just an example to demonstrate the bug I reported. I think it is a bug if optim returns (without any warning) an unmatching pair of par and value: f(par) != value. And it is easily fixed.
Andreas Prof Brian Ripley wrote: > [Sorry for the belated reply: this came in just as I was leaving for a > trip.] > > I've checked the original source, and the C code in optim does > accurately reflect the published algorithm. > > Since your example is a discontinuous function, I don't see why you > expect CG to work on it. John Nash reports on his extensive > experience that method 3 is the worst, and I don't think we should let > a single 2D example of a badly-behaved function override that. > > Note that no other optim method copes with the discontiuity here: had > your reported that it would have been clear that the problem was with > the example. > > On Fri, 21 Apr 2006, [EMAIL PROTECTED] wrote: > >> Dear R team, >> >> when using optim with method "CG" I got the wrong $value for the >> reported $par. >> >> Example: >> f<-function(p) { >> if (!all(p>-.7)) return(2) >> if (!all(p<.7)) return(2) >> sin((p[1])^2)*sin(p[2]) >> } >> optim(c(0.1,-0.1),f,method="CG",control=list(trace=0,type=1)) >> $par 19280.68 -10622.32 >> $value -0.2346207 # should be 2! >> >> optim(c(0.1,-0.1),f,method="CG",control=list(trace=0,type=2)) >> $par 3834.021 -2718.958 >> $value -0.0009983175 # should be 2! >> >> Fix: >> --- optim.c (Revision 37878) >> +++ optim.c (Arbeitskopie) >> @@ -970,7 +970,8 @@ >> if (!accpoint) { >> steplength *= stepredn; >> if (trace) Rprintf("*"); >> - } >> + } else >> + *Fmin = f; >> } >> } while (!(count == n || accpoint)); >> if (count < n) { >> >> After fix: >> optim(c(0.1,-0.1),f,method="CG",control=list(trace=0,type=1)) >> $par 0.6993467 -0.4900145 >> $value -0.2211150 >> optim(c(0.1,-0.1),f,method="CG",control=list(trace=0,type=2)) >> $par 3834.021 -2718.958 >> $value 2 >> >> Wishlist: > [wishlist deleted] -- Andreas Westfeld, 0432 01CC F511 9E2B 0B57 5993 0B22 98F8 4AD8 EEEA <[EMAIL PROTECTED]> http://www.inf.tu-dresden.de/~aw4 TU Dresden Fakultät Informatik, Institut für Systemarchitektur Datenschutz und Datensicherheit, Tel. +49-351-463-37918 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel