[R] temp seems ineffective in SANN (optim)
Ross Boylan
ross at biostat.ucsf.edu
Wed Feb 27 01:31:27 CET 2013
I am trying to control the behavior of the SANN method in optim (R
2.14.1) via control$temp. In my toy tests it works; in my real use, it
doesn't.
As far as I can tell my code with different temp values is loaded; I
even traced into the function that calls optim and verified temp had the
value I had set.
Could the fact that I have NaN's coming back from the objective function
be a factor? Here are the results I've gotten from 20 iterations with
temp varying from 2 to 9. The first column is the value of the
objective function, and the rest are the parameter values (the objective
function is augmented to leave a trace). The rows represent SANN's
different guesses, in sequence.
> history9
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -3507.346 -4.500000 1.00000000 1.00000000 1.0000000 0.69314718
[2,] -3828.071 -3.942424 0.03090623 0.30739233 1.7062554 -0.01814918
[3,] -4007.624 -3.126794 1.79592189 1.41855332 1.2060574 1.54479512
[4,] NaN -4.064653 -0.25017279 1.30476170 0.2559306 -0.31140650
[5,] -4222.272 -3.058714 -0.93063613 -0.54296159 0.8287307 1.92103676
[6,] NaN -3.833080 1.00721123 1.66564249 0.7923725 -0.04967723
[7,] NaN -5.050322 -0.45545409 0.83209653 1.4976764 -0.47211795
[8,] NaN -3.717588 0.62400594 0.73424007 0.1359730 1.62073131
[9,] NaN -6.078701 0.10000219 0.36961894 0.2633589 0.67651053
[10,] NaN -3.404865 2.92992664 1.45204623 0.2020535 1.49936000
[11,] NaN -3.387337 2.17682158 0.06994319 1.1717615 0.68526889
[12,] NaN -4.534316 0.88676089 1.34499190 0.9148238 0.98417597
[13,] NaN -4.445174 1.06230896 1.51960345 0.4651780 1.14127715
[14,] -3784.848 -4.007890 0.77866330 1.01243770 1.1957120 1.33305656
[15,] NaN -3.707500 1.30038651 1.30480610 0.6210218 0.81355299
[16,] -3730.219 -4.155193 0.76779830 1.06686987 1.0546294 1.45601474
[17,] -3524.462 -5.074722 1.21296408 0.59787431 0.9228195 1.07755859
[18,] -3588.086 -5.146427 1.28721218 0.74634447 1.1107613 0.63009540
[19,] -3715.411 -4.501889 0.72491408 0.75046935 0.8476556 1.64229603
[20,] -3711.158 -4.813507 0.88125227 1.10291836 0.1452430 0.07181056
[,7] [,8] [,9] [,10]
[1,] 0.00000000 0.5493061 -4.500000 4.000000
[2,] -1.33969887 2.6881171 -5.797714 4.712738
[3,] 1.10373337 1.5164159 -4.666298 4.551507
[4,] 0.36425367 0.5755519 -3.558595 3.811114
[5,] -0.77555882 0.4863321 -5.060481 4.987640
[6,] -1.14686363 0.5164433 -4.759286 3.650409
[7,] -0.43179263 1.1326352 -4.611431 3.920483
[8,] 1.67696259 0.8754158 -4.352415 3.095768
[9,] 1.10927659 0.5779504 -4.952128 4.649442
[10,] -0.67478207 2.8174240 -4.704395 2.986569
[11,] 0.45878472 0.6479467 -4.122482 2.934156
[12,] -0.04871212 0.9457826 -4.617438 4.377056
[13,] -0.01321339 0.3833625 -4.591240 4.729049
[14,] -0.49075803 0.3322742 -3.971298 4.357731
[15,] 0.16922427 0.4820518 -4.683029 3.875409
[16,] -0.18047923 -0.4957090 -4.492014 4.317694
[17,] -0.28481705 0.1923373 -4.288773 3.956130
[18,] 0.12102775 -0.2332984 -4.981987 4.301450
[19,] 0.15961575 1.1644561 -4.459003 3.777286
[20,] -0.24130528 0.6126422 -4.075133 3.628426
> sum(is.nan(history9[,1]))
[1] 10
> max(abs(history9-history5), na.rm=TRUE)
[1] 9.094947e-13
# historyN has a temp of N
BTW the values of the objective function have their sign reversed to
make it a maximization problem.
Ross Boylan
More information about the R-help
mailing list