private static DistributionType create(string id, string displayName) { var distributionType = new DistributionType(id, displayName); _allDistributionTypes.Add(distributionType); return(distributionType); }
public AdvancedParameter Create(IParameter parameter, DistributionType distributionType) { var advancedParameter = _objectBaseFactory.Create <AdvancedParameter>(); //we don't care about the name, it should only be unique in the hiearchy advancedParameter.Name = _entityPathResolver.PathFor(parameter); advancedParameter.ParameterPath = advancedParameter.Name; var distributionMetaData = new ParameterDistributionMetaData { DistributionType = distributionType.Id, BuildingBlockType = buildingBlockTypeFrom(parameter), Mean = defaultMeanValueBasedOn(parameter.Value, distributionType), Deviation = defaultStdValueBasedOn(distributionType), Dimension = parameter.Dimension.Name, DefaultUnit = parameter.DisplayUnit.Name, ParameterName = "distribution" }; if (distributionType == DistributionTypes.Uniform) { distributionMetaData.MinValue = parameter.MinValue ?? parameter.Value / _defaultUniformFactor; //+ _defaultUniformFactor in case the default value is 0 distributionMetaData.MaxValue = parameter.MaxValue ?? (parameter.Value * _defaultUniformFactor + _defaultUniformFactor); } else { distributionMetaData.MinValue = parameter.MinValue; distributionMetaData.MinIsAllowed = parameter.MinIsAllowed; distributionMetaData.MaxValue = parameter.MaxValue; distributionMetaData.MaxIsAllowed = parameter.MaxIsAllowed; } advancedParameter.DistributedParameter = _parameterFactory.CreateFor(distributionMetaData); //should set the distribution parameter as visible since they will need to be edited advancedParameter.DistributedParameter.AllParameters().Each(x => { x.Visible = true; x.IsDefault = false; x.CanBeVaried = true; x.CanBeVariedInPopulation = false; }); return(advancedParameter); }
private double defaultMeanValueBasedOn(double value, DistributionType distributionType) { return(value); }
private double defaultStdValueBasedOn(DistributionType distributionType) { return(distributionType == DistributionTypes.LogNormal ? 1 : 0); }
public DistributedParameterValue(string parameterPath, double value, double percentile, double mean, double std, DistributionType distributionType) : base(parameterPath, value, percentile) { Mean = mean; Std = std; DistributionType = distributionType; }
public void UpdateFrom(IDistributionMetaData distributionMetaData) { Mean = distributionMetaData.Mean; Deviation = distributionMetaData.Deviation; Distribution = distributionMetaData.Distribution; }