robertfeldt / BlackBoxOptim.jl

Black-box optimization for Julia
Other
439 stars 56 forks source link

Parallel schemes: master-worker and multi-master with Borg #154

Open jdossgollin opened 4 years ago

jdossgollin commented 4 years ago

I hope this is an appropriate place to ask this question.

I am looking to use your implementation of the Borg algorithm on a fairly complicated problem. I'm curious how difficult it would be to set up the parallelization schemes outlined by Hadka 2015 (see below) here. If it's feasible and straightforward, I'll do my best to contribute, although Julia is still fairly new to me and I'm not at all familiar with its toolkit for parallel computing. If it's not feasible or not within the scope of this project, that's also useful for me.

Thanks in advance for any guidance!

Hadka, D., & Reed, P. (2015). Large-scale parallelization of the Borg multiobjective evolutionary algorithm to enhance the management of complex environmental systems. Environmental Modelling & Software, 69, 353–369. https://doi.org/10.1016/j.envsoft.2014.10.014

I am happy to provide a PDF if the paywall is an issue to anyone

bienpierre commented 4 years ago

Hello,

Does Borg_moea implemented with BlackBoxOptim.jl is parallel ?

Here, it is optimized with NThreads=Threads.nthreads()-1.

jdossgollin commented 4 years ago

Thanks @bienpierre, there are many different parallelization schemes that could be implemented. Per discussion with @alyst, who I've already bothered, this does indeed implement an asynchronous master-worker. However, this is using threads so it cannot easily be scaled to many cores. I've taken a look at https://docs.julialang.org/en/v1/manual/distributed-computing/ and there seem to be several options that might work but I don't know which, if any, would be appropriate for this package.