public PopulationCreator(Arguments arguments, int popSize, bool goConvolutionMod, SelectionConfig selectionConfig, SelectionStatus selectionStatus)
        {
            _arguments       = arguments;
            _convolutionMode = goConvolutionMod;
            _selectionConfig = selectionConfig;
            _selectionStatus = selectionStatus;
            _arguments       = arguments;
            _populationSize  = popSize;

            _csharpCompiler = new CsharpCompiler();
            _randomProvider = new RandomProvider(selectionConfig.Operators, selectionConfig.MaxConstantsCount, _arguments.Rows);


            Individual = new Individual[_populationSize];

            if (goConvolutionMod)
            {
                _populationSize = _selectionConfig.MaxConstantsCount * 3 - 3;
            }
            else
            {
                _selectionProvider = new MixSelection(Individual, _selectionStatus.Log, _randomProvider, _selectionConfig.Operators)
                {
                    MutationChance = _selectionConfig.MutationChance,
                    GrowSpeed      = _selectionConfig.GrowSpeed,
                }
            };

            GenotypeKids = new string[_populationSize];
        }
        //private readonly FormMainUi _mainForm;

        public CreatePopulation(List <List <double> > points, int popSize, bool goConvolutionMod)
        {
            _points         = points;
            _argumentsCount = points[0].Count - 1;
            _csharpCompiler = new CsharpCompiler();
            Log             = new Log
            {
                Preparation    = new List <string>(),
                Simplification = new List <string>(),
                CompileErrors  = new List <CompileError>(),
            };
            _randomProvider = new RandomProvider(Operators, _maxLeafs, _argumentsCount);

            _populationSize = popSize;
            _maxLeafs       = MaxConstantsCount;
            Individual      = new Individual[popSize];

            if (goConvolutionMod)
            {
                popSize = _maxLeafs * 3 - 3;
            }
            else
            {
                _selectionProvider = new MixSelection(Individual, Log, _randomProvider, Operators)
                {
                    MutationChance = MutationChance,
                    GrowSpeed      = GrowSpeed,
                }
            };

            GenotypeKids     = new string[popSize];
            _convolutionMode = goConvolutionMod;
        }