public static TempFilesHelper GetInstance()
 {
     if (instance == null)
     {
         instance = new TempFilesHelper();
     }
     return(instance);
 }
 public static TempFilesHelper GetInstance() {
   if (instance == null) {
     instance = new TempFilesHelper();
   }
   return instance;
 }
        private List <HLRunInfo> GenerateTasks(string filePath, int repetitions, int parallelism, bool printTmpPaths)
        {
            string           fileName = Path.GetFileName(filePath);
            List <HLRunInfo> tasks    = new List <HLRunInfo>();
            var optimizer             = Load <IOptimizer>(filePath);

            optimizer.Prepare();
            optimizer.Runs.Clear();
            if (optimizer == null)
            {
                throw new ArgumentException(String.Format("{0} does not contain an optimizer.", filePath));
            }
            var             listOfOptimizer = UnrollOptimizer(optimizer);
            TempFilesHelper tfh             = TempFilesHelper.GetInstance();

            int count = 0;

            for (int i = 0; i < repetitions; i++)
            {
                foreach (var opt in listOfOptimizer)
                {
                    var clone         = (IOptimizer)opt.Clone();
                    int coresRequired = 1;
                    if (parallelism != 0)
                    {
                        var cloneEngineAlgo = clone as EngineAlgorithm;
                        if (cloneEngineAlgo != null)
                        {
                            if (parallelism == 1 && !(cloneEngineAlgo.Engine is SequentialEngine.SequentialEngine))
                            {
                                cloneEngineAlgo.Engine = new SequentialEngine.SequentialEngine();
                            }
                            else
                            {
                                if (!(cloneEngineAlgo.Engine is ParallelEngine.ParallelEngine))
                                {
                                    cloneEngineAlgo.Engine = new ParallelEngine.ParallelEngine();
                                }
                                coresRequired = parallelism > 0 ? Math.Max(parallelism, Environment.ProcessorCount) : Environment.ProcessorCount;
                                (cloneEngineAlgo.Engine as ParallelEngine.ParallelEngine).DegreeOfParallelism = coresRequired;
                            }
                        }
                    }
                    else
                    {
                        coresRequired = clone as EngineAlgorithm != null && (clone as EngineAlgorithm).Engine as ParallelEngine.ParallelEngine != null
                                ? ((clone as EngineAlgorithm).Engine as ParallelEngine.ParallelEngine).DegreeOfParallelism
                                : 1;
                        coresRequired = coresRequired > 0 ? coresRequired : Environment.ProcessorCount;
                    }
                    var algo = clone as Algorithm;
                    if (algo != null)
                    {
                        var prob = algo.Problem as IParallelEvaluatorProblem;
                        if (prob != null)
                        {
                            prob.DegreeOfParallelismParameter.Value.Value = coresRequired;
                        }
                    }

                    string savePath = tfh.GetTempFileName();
                    if (printTmpPaths)
                    {
                        Helper.printToConsole(String.Format("Temporary save path: {0}", savePath), fileName);
                    }
                    tasks.Add(new HLRunInfo(++count, clone, filePath, coresRequired, savePath));
                }
            }
            return(tasks);
        }