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)); }
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>())); }