[I previously asked my question on StackOverflow but this site may be more appropriate]In Matlab, I am currently using the MultiStart as an optimization algo in a parallel setup for a computer cluster. For example, this is my Matlab code:opts = optimoptions(@fmincon,'Algorithm','sqp','Use Parallel','Always'); %The options for the algo. The key here is the Use Parallel problem = createOptimProblem('fmincon','objective',... @(x) x.^2 + 4*sin(5*x),'x0',3,'lb',-5,'ub',5,'options',opts); %x is the variable I wish to min/maxms = MultiStart;[x,f] = run(ms,problem,20) %20 stands for the number of initial random variablesThis code works very well when I submit a batch job on the cluster for X processors.I am looking online for a similar algo that I could implement in parallel using Python and I am bit loss. Any similar algo is available for Python?UPDATEAs for my cluster requirements, multithreading is not acceptable. Usually I use mpi4py.
Python: Multistart optimization using parallel programming
optimization;matlab;python;parallel computing
From what I can tell, MultiStart is not an optimization algorithm per se, but a framework that runs a given optimization algorithm (in your code, SQP via fmincon) in parallel for a set of random starting points (i.e., a separate, independent, instance of fmincon for each starting point).  Since the instances do not need to communicate at all, this does not require MPI (the technical term is embarrassingly parallel), so you can use any job server to launch the instances, each on a separate node.Since Python is (if you so choose) much more low-level than Matlab, you can implement this yourself rather easily: Pick an implementation of a minimization algorithm (the closest thing to fmincon would be SciPy's scipy.optimize.minimize) and wrap it in a multiprocessing Pool; the module joblib seems to provide a convenient wrapper for this. If you run this on a cluster, you could try dispy.On a higher level, Coopr (an optimization modeling framework similar to AMPL) provides capabilities for Solving Multiple Instances in Parallel.