コード例 #1
0
        private static DistributionType create(string id, string displayName)
        {
            var distributionType = new DistributionType(id, displayName);

            _allDistributionTypes.Add(distributionType);
            return(distributionType);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 private double defaultMeanValueBasedOn(double value, DistributionType distributionType)
 {
     return(value);
 }
コード例 #4
0
 private double defaultStdValueBasedOn(DistributionType distributionType)
 {
     return(distributionType == DistributionTypes.LogNormal ? 1 : 0);
 }
コード例 #5
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;
 }
コード例 #6
0
 public void UpdateFrom(IDistributionMetaData distributionMetaData)
 {
     Mean         = distributionMetaData.Mean;
     Deviation    = distributionMetaData.Deviation;
     Distribution = distributionMetaData.Distribution;
 }