示例#1
0
        /// <summary>
        /// The create scenario.
        /// </summary>
        /// <param name="scenario">
        /// The scenario.
        /// </param>
        public void CreateScenario(Models.Scenario scenario)
        {
            using (var dbContext = new OpenAIEntities1())
            {
                Scenario entity = dbContext.Scenarios.Find(scenario.Id);
                if (entity == null)
                {
                    entity            = new Scenario();
                    entity.ScenarioId = scenario.Id;
                    dbContext.Scenarios.Add(entity);
                }

                entity.Name     = scenario.Name;
                entity.Contents = scenario.Contents;

                // Add the features
                DataTable table    = this.ParseCsv(scenario.Contents);
                int       position = 1;
                foreach (DataColumn column in table.Columns)
                {
                    if (entity.Features.Any(f => f.FeatureId == column.ColumnName))
                    {
                        continue;
                    }

                    var feature = new Feature();
                    feature.FeatureId  = column.ColumnName;
                    feature.ScenarioId = scenario.Id;
                    feature.Position   = position++;
                    entity.Features.Add(feature);
                }

                dbContext.SaveChanges();
            }
        }
示例#2
0
        /// <summary>
        /// The create inputs.
        /// </summary>
        /// <param name="scenarioId">
        /// The scenario id.
        /// </param>
        /// <param name="inputSetId">
        /// The input set id.
        /// </param>
        /// <param name="inputs">
        /// The inputs.
        /// </param>
        public PredictionSet CreateInputs(string scenarioId, string inputSetId, List <Models.Input> inputs)
        {
            if (inputs == null)
            {
                return(new PredictionSet());
            }

            using (var dbContext = new OpenAIEntities1())
            {
                InputSet inputSet =
                    dbContext.InputSets.FirstOrDefault(i => i.ScenarioId == scenarioId && i.InputSetId == inputSetId);
                if (inputSet == null)
                {
                    inputSet            = new InputSet();
                    inputSet.ScenarioId = scenarioId;
                    inputSet.InputSetId = inputSetId;
                    dbContext.InputSets.Add(inputSet);
                }

                Dictionary <string, Input> existing =
                    dbContext.Inputs.Where(i => i.ScenarioId == scenarioId && i.InputSetId == inputSetId)
                    .ToDictionary(i => i.FeatureId);

                foreach (Models.Input input in inputs)
                {
                    Input entity;
                    existing.TryGetValue(input.InputId, out entity);
                    if (entity == null)
                    {
                        entity = new Input();
                        dbContext.Inputs.Add(entity);
                        entity.ScenarioId = scenarioId;
                        entity.InputSetId = inputSetId;
                        entity.FeatureId  = input.InputId;
                    }

                    entity.Value = input.Value;
                }

                dbContext.SaveChanges();
            }

            return(this.Predict(scenarioId, inputSetId));
        }
示例#3
0
        public void CompleteInputSet(string scenarioId, string inputSetId)
        {
            using (var dbContext = new OpenAIEntities1())
            {
                Scenario entity = dbContext.Scenarios.Find(scenarioId);
                if (entity == null)
                {
                    throw new Exception(string.Format("Unable to find scenario for {0}", scenarioId));
                }

                List <Feature> features =
                    dbContext.Features.Where(f => f.ScenarioId == scenarioId).OrderBy(f => f.Position).ToList();
                Dictionary <string, Input> inputsById =
                    dbContext.Inputs.Where(i => i.ScenarioId == scenarioId && i.InputSetId == inputSetId)
                    .ToDictionary(i => i.FeatureId);

                var sortedInputs = new List <Input>();
                foreach (Feature feature in features)
                {
                    Input input;
                    if (inputsById.TryGetValue(feature.FeatureId, out input))
                    {
                        sortedInputs.Add(input);
                    }
                    else
                    {
                        sortedInputs.Add(new Input {
                            FeatureId = feature.FeatureId
                        });
                    }
                }

                var newData = string.Join(",", sortedInputs.Select(i => i.Value ?? "0"));
                entity.Contents = entity.Contents + Environment.NewLine + newData;
                dbContext.SaveChanges();
                this.Train(scenarioId);
            }
        }