/// <summary>
        /// Construct the complexity regulation strategy with the provided regulation parameters.
        /// </summary>
        public DefaultComplexityRegulationStrategy(ComplexityCeilingType ceilingType, double ceilingValue)
        {
            _ceilingType = ceilingType;
            _complexityCeiling = ceilingValue;

            // For relative complexity ceiling we await the first call to DetermineMode() before setting the threshold
            // relative to the population mean complexity. Indicate this with -1.0.
            if(ComplexityCeilingType.Relative ==  ceilingType) {
                _complexityCeilingCurrent = -1.0;
            } else {
                _complexityCeilingCurrent = ceilingValue;
            }

            _currentMode = ComplexityRegulationMode.Complexifying;
        }
        /// <summary>
        /// Construct the complexity regulation strategy with the provided regulation parameters.
        /// </summary>
        public DefaultComplexityRegulationStrategy(ComplexityCeilingType ceilingType, double ceilingValue)
        {
            _ceilingType       = ceilingType;
            _complexityCeiling = ceilingValue;

            // For relative complexity ceiling we await the first call to DetermineMode() before setting the threshold
            // relative to the population mean complexity. Indicate this with -1.0.
            if (ComplexityCeilingType.Relative == ceilingType)
            {
                _complexityCeilingCurrent = -1.0;
            }
            else
            {
                _complexityCeilingCurrent = ceilingValue;
            }

            _currentMode = ComplexityRegulationMode.Complexifying;
        }