At the beginning of the program, read the experiment parameters, which determine the algorithm, the problem, the number of runs, the measurement interval, and so on.
For each run, generate a global instance. All the instances run the same algorithm on the same problem but with different random generator seeds.
Each global instance owns an independent algorithm instance, an independent problem instance, and of course a variety of independent random generator instances (e.g., gaussian, cauchy, and uniform). All the global instances run in parallel.
An measure instance records the experimental results from all runs and outputs the statistics to two text files.