Re: distributed processing ad multiThreading
Re: distributed processing ad multiThreading
- Subject: Re: distributed processing ad multiThreading
- From: Simon Stapleton <email@hidden>
- Date: Mon, 17 Sep 2001 15:32:04 +0100 (BST)
>
From: Robert S Goldsmith <email@hidden>
>
To: email@hidden
>
Subject: distributed processing ad multiThreading
First off, I've done some work on similar stuff (unfortunately all in
C++, and also, sadly, under an NDA so I can't donate any code), but
here's what I'd do:
Go as coarse-grained as you can.
I'd consider running parallel distributed simulations (for perhaps
hundreds or thousands of generations) and then 'cross-populate'
between those simulations. This should reduce the overhead
introduced by the distribution mechanism itself, and has the added
side effect in many simulations of reducing the impact of local
maxima being reached in one or more simulations, and generally
speeding up the reaching of optimal solutions. This side-effect
might well be useful in your case where you're running small
populations of (presumably complex) entities.
The cross-population could be triggered on either a fixed number of
generations, a fixed fitness level (difficult to work with), or, most
likely, a threshold of change in fitness level, probably averaged
over a number of generations (this is often the best way to proceed,
usually in conjunction with the first method - i.e. run for x
generations (as the first few generations often fluctuate wildly in
fitness or change very little) ).
So...
I'd have one controller and a number of 'workers'. Each worker
starts working until its change in fitness level between generations
reaches a threshold level. At this point it tells the controller its
reached the threshold level. When the controller has a number of
workers which have reached the threshold, it takes their
populations, 'cross-pollinates', and kickes them off again. Lather,
rinse, repeat.
That might possibly be very similar to the way a major financial
institution that I might possibly have worked for once might have
done their GA distribution over hypothetical networks of Solaris
boxes. But I couldn't say, obviously ;-)
Oddly enough, I'll be looking at a similar problem soon (non-convex
polygon layout on arbitrary sheets), and would be interested in
anything you've done in Objective-C (saves me having to wrap up
GALib).
Simon
--
If the answer isn't obvious, the question is a distraction. Go find
an easier question.