[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