Re: parallel NMinimize[]
- To: mathgroup at smc.vnet.net
- Subject: [mg50567] Re: parallel NMinimize[]
- From: "Mark Westwood [EPCC]" <markw at epcc.ed.ac.uk>
- Date: Fri, 10 Sep 2004 04:06:22 -0400 (EDT)
- Organization: Edinburgh University
- References: <chmova$a4j$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Robert, Forgive me if I've misunderstood your problem or differential evolution, but here's a suggestion. You want to search for the global minimum of a function on some domain ? Define a form of the NMinimize function you wish to evaluate which is parameterised in terms of p, where p = 1, 2, 3, ... is the number of the processor on which the function will run. For example, if your whole domain was [0,1) (yes, I know, very simple example, but work with me on this !), if you have P processors and let p be the identifier of the processor, then your function might be: NMinimize[ { f[x], (p-1)/P <= x < (p/P) }, {x}, Method -> "Differential Evolution" ] Use the parallel toolkit to send this function to each of the worker processors on your cluster. Each will then evaluate the function over 1/p of the whole domain. Bring the answers together and choose the global minimum from them. You'll have to figure out how each processor knows its own identity yourself, I don't have the parallel toolkit. I guess that this approach might break down at the boundaries between sub-domains, so you might want to send overlapping domains out to avoid that problem. I don't know what InitialPoints and SearchPoints are, but from the documentation I think that they are: InitialPoints - a guess of where to start searching, you would want to ensure that this was within the subdomain passed to each processor. SearchPoints - how many points within the domain to examine, more points -> more time, more accuracy and less chance of returning a local minimum. Hope this is of some use Regards Mark Westwood Edinburgh Parallel Computing Centre robert wrote: > dear all, > > I am trying to use NMinimize[f[x],x] from a windows based mathematica > to minimize the function f[x] which evaluates via RUN[] and rsh remote > shell > commands on a linux cluster. > this works fine so far. > > Now I would like to exploit the parallel capabilities of the linux > cluster. > > usually NMinimize[] calls f[x] for a single value x at one step. > the nature of NMinimize[f[x],x, Method->"DifferentialEvolution"] as I > understand it causes a whole population of x values to be evaluated > before > minimization progresses. > In order to profit from the cluster I would need NMinimize[] to > evaluate > f[] for the whole populatuion in a single call. > e.g. f[{x1,x2,x3,x4,....xn}] with n beeing the size of the actual > popolation such that NMinimize[] would call the function to be > minimized with a wole list of x values instead of calling it with just > a single value. this way the cluster could evaluate all the (time > expense) function calls in parallel and return a list of results > {f[x1],f[x2],f[x3], ... f[xn]} to NMinimize[] > > is there any chance to achieve this ? > > does anyone know what for the following "DifferentialEvolution" > options are used ? > > "InitialPoints" set of initial points > "SearchPoints" size of the population used for evolution > > note i dont ask for any parallel aktion of mathematica itself. > > thanks robert >