private double createRandomValueFor(OriginData originData, RandomPopulationSettings populationSettings, string parameterName, out bool success)
        {
            var parameterRange = populationSettings.ParameterRange(parameterName);
            var parameter      = _individualModelTask.MeanOrganismParameter(originData, parameterName);

            return(tryCreateRandomValueFor(parameterRange, parameter, out success));
        }
Beispiel #2
0
        private double createDiseaseStateRandomParameterValueFor(OriginData originData, RandomPopulationSettings populationSettings, OriginDataParameter diseaseStateParameter, RandomGenerator randomGenerator, out bool success)
        {
            var parameterRange = populationSettings.ParameterRange(diseaseStateParameter.Name);
            var parameter      = originData.DiseaseState.Parameter(diseaseStateParameter.Name);

            return(tryCreateRandomValueFor(parameterRange, parameter, randomGenerator, out success));
        }
        private bool tryRandomize(Individual individual, RandomPopulationSettings populationSettings, IEnumerable <IParameter> allIndividualParameters)
        {
            try
            {
                var bodyWeightRange     = populationSettings.ParameterRange(CoreConstants.Parameter.MEAN_WEIGHT);
                var bodyWeightParameter = _individualModelTask.MeanOrganismParameter(individual.OriginData, CoreConstants.Parameter.MEAN_WEIGHT);
                _createIndividualAlgorithm.Randomize(individual, bodyWeightParameter, bodyWeightRange.MinValue, bodyWeightRange.MaxValue, allIndividualParameters);

                if (!individual.OriginData.SpeciesPopulation.IsHeightDependent)
                {
                    return(true);
                }

                //last: Check if the value for the bmi is in the interval
                var bmi      = individual.Organism.Parameter(CoreConstants.Parameter.BMI).Value;
                var bmiRange = populationSettings.ParameterRange(CoreConstants.Parameter.BMI);
                return(bmiRange.IsValueInRange(bmi));
            }
            catch (CannotCreateIndividualWithConstraintsException)
            {
                return(false);
            }
        }
        private double createDiscreteRandomValueFor(RandomPopulationSettings populationSettings, string parameterName, out bool success)
        {
            var parameterRange = populationSettings.ParameterRange(parameterName) as DiscreteParameterRange;

            success = true;

            if (parameterRange == null)
            {
                success = false;
                return(0);
            }

            if (parameterRange.IsConstant)
            {
                return(parameterRange.MinValue.Value);
            }

            return(_randomGenerator.NextInteger(parameterRange.MinValue.ConvertedTo <int>(), parameterRange.MaxValue.ConvertedTo <int>()));
        }