Optimizing FindMinimum for speed using intermediate calculations.
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1175] Optimizing FindMinimum for speed using intermediate calculations.
- From: Bill Harbaugh <harbaugh at students.wisc.edu>
- Date: Sat, 20 May 1995 04:23:30 -0400
- Organization: University of Wisconsin, Madison
Hello I am trying to maximize a likelihood function, using FindMinimum. This involves finding the parameters (x,y in my simplified example) that max (min, in my example) the sum of the values of a function applied to some data (ddist, in my example). My actual problem is very long and my question is about how to optimize my mma code for speed. This function involves some intermediate results (x1,y1 in my example) which vary across the x,y parameters but are constant across the d's. (In my actual problem, these intermediate results are found using NSolve, so I am specifying the functions using := rather than =). I am trying to only calculate these once for each iteration on x,y, and then apply the results to each of the d's in the list ddist. The code below shows how I do this without trying to optimize. ddist={1,2,3,4,5,6,7,8,9,10} x1:=x+1 y1:=y+2 l[d_]:=(x1*d)^2+(y1*d)^2 f=Apply[Plus, Map[l,ddist] ] FindMinimum[f,{x,{-1,1}},{y,{-1,1}}] This works, but it seems the following should be faster. Clear[l]; Clear[f]; l[d_]:=(x1*d)^2+(y1*d)^2 f={x1=x+1,y1=y+2,Apply[Plus, Map[l,ddist] ]} FindMinimum[f[[3]],{x,{-1,1}},{y,{-1,1}}] This also works, but timing results are inconclusive. I would appreciate suggestions on any other approaches that might speed this up. I am also asking mma support for help, and will forward their reply. Bill Harbaugh harbaugh at students.wisc.edu