Function counts using parallel Fmincon
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hello all,
I would like to use parallel fmincon. The function receivea an input vector X, generates a file name say Filei.txt (i.e. File1.txt, File2.txt, File3.txt,... at each iteration), runs a external program for the file, and will produce an out put y.
function y= f(X)
 % (1) 'count' is the function call number
 % (2) genera a file using X and count 
  name=strcat( 'File.' ,num2str(count),'.txt');
 % run an external program say C.exe which takes name as its input and return y
 % return y
I would like to use the parallel Fmincon to minimize this function. However, I know that I can not use persisten with parallel fmincon to generate the variable 'count'. Could you please suggest what should I do in this case?
0 comentarios
Respuestas (1)
  Walter Roberson
      
      
 el 31 de Ag. de 2017
        
      Editada: Walter Roberson
      
      
 el 31 de Ag. de 2017
  
      Each worker has its own copy of the persistent variable. So use the local persistent variable together with the worker number to construct the file name. For example
t = getCurrentTask(); worker_number = t.ID;
name = sprintf('File.%d_%06d.txt', worker_number, count);
Question: is it important that the file names be sequential? Or do they just have to be different ? If they just have to be different, then use tempname()
2 comentarios
  Walter Roberson
      
      
 el 31 de Ag. de 2017
				You can use persistent in something called by parfor.
N = 123;
T = zeros(1,N);
parfor K = 1 : N; T(K) = tryper(); end
T
length(unique(T))
function c = tryper
    persistent count
    if isempty(count); count = 0; end
    count = count + 1;
    t = getCurrentTask(); worker_number = t.ID;
    c = worker_number * 10000 + count;
end
Ver también
Categorías
				Más información sobre Parallel for-Loops (parfor) en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

