Parallel job bring me same random numbers

조회 수: 13 (최근 30일)
Dario Toledo
Dario Toledo 2017년 11월 20일
편집: Dario Toledo 2017년 11월 21일
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);

채택된 답변

Edric Ellis
Edric Ellis 2017년 11월 20일
편집: Edric Ellis 2017년 11월 20일
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
Dario Toledo
Dario Toledo 2017년 11월 20일
편집: Dario Toledo 2017년 11월 21일
Thank you, this actually works for me because of the nature of my script.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Multicore Processor Targets에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by