public void ScatterComps()
        {
            bool succeeded = false;
            int  attempts  = 0;

            if (_atPairs == null)
            {
                GenSimAgent agent = new GenSimAgent(_catPairs, _isDirRandomized, _isRopesRandomized);
                agent.IsTesting = _isTestingOn;
                agent.Shotter   = _isTestingOn ? new EngineShotsManager() : null;
                bool succeed = agent.ExecuteScatter();
                WAgent = agent;
            }
            else
            {
                while (attempts < MAXTRY && !succeeded)
                {
                    //for (int i = 0; i < 3; i++)
                    //{
                    //Thread t = new Thread(new ThreadStart(() =>
                    //{
                    GenSimAgent agent = _atPairs != null
                                            ? new GenSimAgent(_atPairs)
                                            : new GenSimAgent(_catPairs, _isDirRandomized, _isRopesRandomized);
                    agent.IsTesting = _isTestingOn;
                    agent.Shotter   = _isTestingOn ? new EngineShotsManager() : null;

                    agent.MAXTRY = MAXTRY;
                    if (agent.ExecuteScatter())
                    {
                        WAgent = agent;
                        WAgent.BestCTPPairs = WAgent.CATPairs;
                        succeeded           = true;
                    }
                    else
                    {
                        var fit = GenSimManager.GetFitness(agent);
                        if (fit < bestFitSoFar)
                        {
                            WAgent       = agent;
                            bestFitSoFar = fit;
                        }
                    }
                    //}
                    //));
                    //_cThreads.Add(t);
                    //t.Start();
                    //}
                    //while (true)
                    //{
                    //    foreach (Thread thread in _cThreads)
                    //    {
                    //        if (!thread.IsAlive)
                    //        {
                    //            _cThreads.Remove(thread);
                    //        }
                    //    }
                    //    if (_cThreads.Count != 0)
                    //    {
                    //        // wait
                    //        Thread.Sleep(100);
                    //    }
                    //    else
                    //    {
                    //        break;
                    //    }
                    //}
                    //attempts += 3;
                    attempts++;
                }
            }
        }