Parallel job bring me same random numbers
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dario Toledo
le 20 Nov 2017
Modifié(e) : Dario Toledo
le 21 Nov 2017
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);
0 commentaires
Réponse acceptée
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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multicore Processor Targets dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!