Ejemplo n.º 1
0
        public SelectionResult Select(Dictionary <string, string> jsonModelsToIds, List <int> sequence)
        {
            List <string>          errors = new List <string>();
            List <IHsmModelHolder> models = new List <IHsmModelHolder>();

            foreach (KeyValuePair <string, string> entry in jsonModelsToIds)
            {
                IHsmModel  model     = _jsonModelFactory.CreateModel(entry.Value);
                IValidator validator = _validatorFactory.CreateModelValidator(model);
                validator.Validate();
                if (validator.HasErrors())
                {
                    errors.AddRange(validator.GetErrors());
                    continue;
                }
                else
                {
                    models.Add(new HsmModelHolder(entry.Key, model));
                }
            }

            if (errors.Count > 0)
            {
                return(SelectionResult.Failure(errors));
            }

            IModelSelector  modelSelector = _modelSelectorFactory.CreateModelSelector(_modelSelectorType, _selectionCriterionType);
            IHsmModelHolder selectedModel = modelSelector.Select(sequence, models);

            return(SelectionResult.Success(selectedModel.Name));
        }
Ejemplo n.º 2
0
        public GenerationResult Generate(String jsonModel, int length)
        {
            IHsmModel  model     = _jsonModelFactory.CreateModel(jsonModel);
            IValidator validator = _validatorFactory.CreateModelValidator(model);

            validator.Validate();

            if (validator.HasErrors())
            {
                GenerationResult.Failure(validator.GetErrors());
            }

            IGenerator generator = _generatorFactory.CreateModelGenerator(model, _pseudoRandomNumberGenerator);

            return(GenerationResult.Success(generator.Generate(length)));
        }
Ejemplo n.º 3
0
        public EvaluationResult Evaluate(string jsonModel, List <int> sequence)
        {
            IHsmModel  model     = _jsonModelFactory.CreateModel(jsonModel);
            IValidator validator = _validatorFactory.CreateModelValidator(model);

            validator.Validate();

            if (validator.HasErrors())
            {
                return(EvaluationResult.Failure(validator.GetErrors()));
            }

            IProbabilityCalculator probabilityCalculator = _probabilityCalculatorFactory.CreateProbabilityCalculator(model, sequence);

            return(EvaluationResult.Success(probabilityCalculator.Calculate()));
        }
Ejemplo n.º 4
0
        public IValidator CreateModelValidator(IHsmModel model)
        {
            switch (model.Type)
            {
            case ModelType.HsmFergusonModel:
            {
                return(new HsmFergusonModelValidator((HsmFergusonModel)model));
            }

            case ModelType.HsmQpModel:
            {
                return(new HsmQpModelValidator((HsmQpModel)model));
            }

            default:
            {
                throw new NotImplementedException("ModelType is not supported");
            }
            }
        }
Ejemplo n.º 5
0
        public IProbabilityCalculator CreateProbabilityCalculator(IHsmModel model, List <int> sequence)
        {
            switch (model.Type)
            {
            case ModelType.HsmFergusonModel:
            {
                return(new HsmFergusonProbabilityCalculator((HsmFergusonModel)model, sequence));
            }

            case ModelType.HsmQpModel:
            {
                return(new HsmQpProbabilityCalculator((HsmQpModel)model, sequence));
            }

            default:
            {
                throw new NotImplementedException("ModelType is not supported");
            }
            }
        }
Ejemplo n.º 6
0
        public IGenerator CreateModelGenerator(IHsmModel model,
                                               IPseudoRandomNumberGenerator pRnGenerator)
        {
            switch (model.Type)
            {
            case ModelType.HsmFergusonModel:
            {
                return(new HsmFergusonModelGenerator((HsmFergusonModel)model, pRnGenerator));
            }

            case ModelType.HsmQpModel:
            {
                return(new HsmQpModelGenerator((HsmQpModel)model, pRnGenerator));
            }

            default:
            {
                throw new NotImplementedException("ModelType is not supported");
            }
            }
        }
Ejemplo n.º 7
0
 public HsmModelHolder(string name, IHsmModel model)
 {
     this.Name  = name;
     this.Model = model;
 }