Parallel job bring me same random numbers

The outputof my jobs depend of random numbers, I have the following script and i need to compare the result but i can't because they return the same.
Here is my code:
clear all;
clc;
thread1= batch('DiferentialEvo');
thread2= batch('DiferentialEvo')
wait(thread1);
wait(thread2)
load(thread1);
thread1Pg=Pg_best;
thread1pf=Pgf_best;
delete(thread1);
load(thread2);
thread2Pg=Pg_best;
thread2pf=Pgf_best;
delete(thread2);

 Réponse acceptée

Edric Ellis
Edric Ellis le 20 Nov 2017
Modifié(e) : Edric Ellis le 20 Nov 2017
Parallel Computing Toolbox deliberately sets the random number state of workers such that the each task of a job starts from a known state - i.e. Task 1 of every job starts from a particular state, and Task 2 of every job starts from another particular state etc. See this doc page for more.
So, in conclusion, the simplest approach is simply to place
rng('shuffle')
inside your script - but be warned that this approach is fragile (as mentioned in the doc page referenced above) because it is based on the time at which the code executes.
For a more robust approach, you need to pass in the random seed to your task, and set up the random state from that.

1 commentaire

Dario Toledo
Dario Toledo le 20 Nov 2017
Modifié(e) : Dario Toledo le 21 Nov 2017
Thank you, this actually works for me because of the nature of my script.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Third-Party Cluster Configuration dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by