コード例 #1
0
        private void saveSolutions()
        {
            Selection selection = (Selection)Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                              .addCondition("Name", "=", SelectedSolution), typeof(Selection))[0];

            models.TaskTemplate template  = (models.TaskTemplate)models.TaskTemplate.getById(selection.TaskTemplateID, typeof(models.TaskTemplate));
            models.Parameter    parameter = (models.Parameter)models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                                      .addCondition("TaskTemplateID", "=", Convert.ToString(template.ID)), typeof(models.Parameter))[0];

            for (int i = 0; i < SolvingList.Count; i++)
            {
                var          item = SolvingList[i];
                SelectionRow sr   = new SelectionRow()
                {
                    SelectionID = selection.ID,
                    Number      = i
                };
                sr.save();
                List <string> values = new List <string>();
                values.AddRange(item.X.Select(x => x.Value));
                values.Add(outputValues[i]);
                foreach (string value in values)
                {
                    TaskSLAnswer vp = new TaskSLAnswer()
                    {
                        SelectionRowID  = sr.ID,
                        Value           = value,
                        ParameterID     = parameter.ID,
                        LearnedSolverID = this.SelectedLearning.LearnedSolver.ID
                    };
                    vp.save();
                }
            }
        }
コード例 #2
0
        public List <Entity> getNewParametersForBinarizationType(int oldSelectionId, int newTemplateId, int oldParamId)
        {
            models.Parameter oldParam      = ((models.Parameter)services.DatabaseManager.SharedManager.entityById(oldParamId, typeof(models.Parameter)));
            List <string>    classes       = getClasses(oldSelectionId, newTemplateId, oldParamId);
            List <Entity>    listNewParams = new List <Entity>(classes.Count);
            int index = 0;

            foreach (string cl in classes)
            {
                index++;
                models.Parameter parameter = new DataHelper().addParameter(cl, oldParam.Comment, newTemplateId, index, oldParam.IsOutput, TypeParameter.Int);
                listNewParams.Add(parameter);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(listNewParams);

            List <Entity> parameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                               .addCondition("TaskTemplateID", "=", newTemplateId.ToString()), typeof(models.Parameter));
            List <Entity> lst = new List <Entity>();

            foreach (Entity en in parameters)
            {
                if (classes.Contains(((models.Parameter)en).Name))
                {
                    lst.Add(en);
                }
            }
            return(lst);
        }
コード例 #3
0
        private TypeParameter getTypeParameter(string prepType, int paramId)
        {
            switch (prepType)
            {
            case "Линейная нормализация 1 (к float)":
                return(TypeParameter.Real);

            case "Нелинейная нормализация 2 (к float)":
                return(TypeParameter.Real);

            case "нормализация 3 (к int)":
                return(TypeParameter.Int);

            case "бинаризация":
                return(TypeParameter.Int);

            case "без предобработки":
                models.Parameter param = ((models.Parameter)services.DatabaseManager.SharedManager.entityById(paramId, typeof(models.Parameter)));
                TypeParameter    type  = param.Type;
                return(type);

            default:
                return(TypeParameter.Real);
            }
        }
コード例 #4
0
 public ArchiveParameter(models.Parameter par)
 {
     this.ID       = par.ID;
     this.Name     = par.Name;
     this.Index    = par.Index;
     this.Type     = par.Type;
     this.Comment  = par.Comment;
     this.IsOutput = par.IsOutput;
 }
        private void updateTable(int taskTemplateId)
        {
            //рисуем заголовки
            List <Entity> parameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                               .addCondition("TaskTemplateID", "=", taskTemplateId.ToString()), typeof(models.Parameter));

            originalColumns = new string[parameters.Count];
            for (int i = 0; i < parameters.Count; i++)
            {
                models.Parameter parameter = (models.Parameter)parameters[i];
                originalColumns[i] = parameter.Name;
            }
            //рисуем содержимое
            int rows = 100;

            if (CountRows < 100)
            {
                rows = CountRows;
            }
            originalData = new string[rows][];
            for (int i = 0; i < rows; i++)
            {
                originalData[i] = new string[parameters.Count];
            }
            List <Entity> sels = Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                  .addCondition("TaskTemplateID", "=", taskTemplateId.ToString())
                                                  .addCondition("Name", "=", SelectionName), typeof(Selection));

            if (sels.Count != 0)
            {
                List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("SelectionID", "=", sels[0].ID.ToString()), typeof(SelectionRow));

                int stepRow = 0;
                foreach (Entity selRow in selectionRows)
                {
                    List <Entity> valueParam     = new List <Entity>();
                    int           selectionRowId = selRow.ID;
                    int           stepParam      = 0;
                    foreach (Entity param in parameters)
                    {
                        int           paramId = param.ID;
                        List <Entity> value   = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                      .addCondition("ParameterID", "=", paramId.ToString()).
                                                                      addCondition("SelectionRowID", "=", selectionRowId.ToString()), typeof(ValueParameter));
                        originalData[stepRow][stepParam] = ((ValueParameter)value[0]).Value;
                        stepParam++;
                    }
                    stepRow++;
                    if (stepRow >= rows)
                    {
                        break;
                    }
                }
            }
        }
コード例 #6
0
        public List <string> getClasses(int oldSelectionId, int newTemplateId, int oldParamId)
        {
            models.Parameter oldParam         = ((models.Parameter)services.DatabaseManager.SharedManager.entityById(oldParamId, typeof(models.Parameter)));
            List <Entity>    oldSelectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                    .addCondition("SelectionID", "=", oldSelectionId.ToString()), typeof(SelectionRow));

            List <string> oldValuesForOldParamId = new List <string>();

            foreach (Entity selRow in oldSelectionRows)
            {
                int           selectionRowId = selRow.ID;
                List <Entity> value          = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                     .addCondition("ParameterID", "=", oldParamId.ToString()).
                                                                     addCondition("SelectionRowID", "=", selectionRowId.ToString()), typeof(ValueParameter));
                oldValuesForOldParamId.Add(((ValueParameter)value[0]).Value);
            }

            EnumeratedParameter p       = new EnumeratedParameter(oldValuesForOldParamId);
            List <string>       classes = p.getClasses();

            return(classes);
        }
コード例 #7
0
        private void updateTable(int taskTemplateId)
        {
            //рисуем заголовки
            List <Entity> parameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                               .addCondition("TaskTemplateID", "=", taskTemplateId.ToString()), typeof(models.Parameter));

            originalColumns = new string[parameters.Count];
            for (int i = 0; i < parameters.Count; i++)
            {
                models.Parameter parameter = (models.Parameter)parameters[i];
                originalColumns[i] = parameter.Name;
            }
            //рисуем содержимое
            List <Entity> sels = Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                  .addCondition("TaskTemplateID", "=", taskTemplateId.ToString())
                                                  .addCondition("Name", "=", SelectionName), typeof(Selection));

            if (sels.Count != 0)
            {
                originalData = Selection.valuesOfSelectionId(sels[0].ID);
                updatePage();
            }
        }
コード例 #8
0
        public Dictionary <List <Entity>, IParameter> executePreprocessing(int newSelectionId, int oldSelectionId, int oldParamId, string prepType, int parameterPosition, int newParamId)
        {
            models.Parameter oldParam = ((models.Parameter)DatabaseManager.SharedManager.entityById(oldParamId, typeof(models.Parameter)));
            TypeParameter    type;

            switch (prepType)
            {
            case "Линейная нормализация 1 (к float)":
                type = TypeParameter.Real;
                break;

            case "Нелинейная нормализация 2 (к float)":
                type = TypeParameter.Real;
                break;

            case "нормализация 3 (к int)":
                type = TypeParameter.Int;
                break;

            case "бинаризация":
                type = TypeParameter.Int;
                break;

            case "без предобработки":
                type = oldParam.Type;
                break;

            default:
                type = TypeParameter.Real;
                break;
            }

            List <string> values     = new List <string>();
            List <Entity> valueParam = new List <Entity>();

            List <Entity> oldSelectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                 .addCondition("SelectionID", "=", oldSelectionId.ToString()), typeof(SelectionRow));

            int index = 0;

            foreach (Entity entity in oldSelectionRows)
            {
                int           selectionRowId = entity.ID;
                List <Entity> list           = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                     .addCondition("ParameterID", "=", oldParamId.ToString()).
                                                                     addCondition("SelectionRowID", "=", selectionRowId.ToString()), typeof(ValueParameter));
                valueParam = valueParam.Concat(list).ToList();
                values.Add(((ValueParameter)valueParam[index]).Value);
                index++;
            }

            List <Entity> valuesForParameter = new List <Entity>();

            IParameter p = null;

            switch (prepType)
            {
            case "Линейная нормализация 1 (к float)":
            case "Нелинейная нормализация 2 (к float)":
            case "нормализация 3 (к int)":
                if (oldParam.Type == TypeParameter.Real)
                {
                    p = new RealParameter(values);
                    valuesForParameter = normalizeValues(valueParam, p, newParamId, newSelectionId, prepType);
                }
                else if (oldParam.Type == TypeParameter.Int)
                {
                    p = new IntegerParameter(values);
                    valuesForParameter = normalizeValues(valueParam, p, newParamId, newSelectionId, prepType);
                }
                else if (oldParam.Type == TypeParameter.Enum)
                {
                    p = new EnumeratedParameter(values);
                    valuesForParameter = normalizeValues(valueParam, p, newParamId, newSelectionId, prepType);
                }
                break;

            case "бинаризация":
                valuesForParameter = binarizationValues(valueParam, newParamId, newSelectionId, parameterPosition);
                break;

            case "без предобработки":
                valuesForParameter = processWithoutPreprocessing(valueParam, newParamId, newSelectionId);
                break;
            }
            Dictionary <List <Entity>, IParameter> res = new Dictionary <List <Entity>, IParameter>();

            res.Add(valuesForParameter, p);
            return(res);
        }
コード例 #9
0
        public Object[][] getValues(int selectionId)
        {
            Selection     selection      = ((Selection)dms.services.DatabaseManager.SharedManager.entityById(selectionId, typeof(Selection)));
            int           taskTemplateId = selection.ID;
            List <Entity> parameters     = dms.models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                       .addCondition("TaskTemplateID", "=", taskTemplateId.ToString()), typeof(dms.models.Parameter));
            List <Entity> inputParams  = new List <Entity>();
            List <Entity> outputParams = new List <Entity>();

            foreach (Entity param in parameters)
            {
                models.Parameter p = (models.Parameter)param;
                if (p.IsOutput == 0)
                {
                    inputParams.Add(param);
                }
                else
                {
                    outputParams.Add(param);
                }
            }

            List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", selectionId.ToString()), typeof(SelectionRow));

            Object[][] valuesX = new Object[selectionRows.Count][];
            Object[][] valuesY = new Object[selectionRows.Count][];

            int stepRow = 0;

            foreach (Entity selRow in selectionRows)
            {
                for (int i = 0; i < 2; i++)
                {
                    if (i == 0)
                    {
                        valuesX[stepRow] = new Object[inputParams.Count];
                        parameters       = inputParams;
                    }
                    else
                    {
                        valuesY[stepRow] = new Object[outputParams.Count];
                        parameters       = outputParams;
                    }

                    int selectionRowId = selRow.ID;
                    int stepParam      = 0;
                    foreach (Entity param in parameters)
                    {
                        TypeParameter type = ((dms.models.Parameter)param).Type;

                        int           paramId = param.ID;
                        List <Entity> value   = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                      .addCondition("ParameterID", "=", paramId.ToString()).
                                                                      addCondition("SelectionRowID", "=", selectionRowId.ToString()), typeof(ValueParameter));
                        if (i == 0)
                        {
                            switch (type)
                            {
                            case TypeParameter.Real:
                                valuesX[stepRow][stepParam] = Convert.ToDouble((((ValueParameter)value[0]).Value).Replace(".", ","));
                                break;

                            case TypeParameter.Int:
                                valuesX[stepRow][stepParam] = Convert.ToInt32(((ValueParameter)value[0]).Value);
                                break;

                            case TypeParameter.Enum:
                                valuesX[stepRow][stepParam] = ((ValueParameter)value[0]).Value;
                                break;

                            default:
                                break;
                            }
                        }
                        else
                        {
                            switch (type)
                            {
                            case TypeParameter.Real:
                                valuesY[stepRow][stepParam] = Convert.ToDouble((((ValueParameter)value[0]).Value).Replace(".", ","));
                                break;

                            case TypeParameter.Int:
                                valuesY[stepRow][stepParam] = Convert.ToInt32(((ValueParameter)value[0]).Value);
                                break;

                            case TypeParameter.Enum:
                                valuesY[stepRow][stepParam] = ((ValueParameter)value[0]).Value;
                                break;

                            default:
                                break;
                            }
                        }
                        stepParam++;
                    }
                }
                stepRow++;
            }

            return(null);//values;
        }
コード例 #10
0
        public void Create()
        {
            if (PerformedTemplate != null)
            {
                for (int i = 0; i < PerformedTemplateList.Count(); i++)
                {
                    if (PerformedTemplateList[i].Equals(PerformedTemplate.Name))
                    {
                        PerformedTemplate.Id = PerformedTemplateIdList[i];
                        break;
                    }
                }
            }
            if (BaseTemplate != null)
            {
                for (int i = 0; i < BaseTemplateList.Count(); i++)
                {
                    if (BaseTemplateList[i].Equals(BaseTemplate.Name))
                    {
                        BaseTemplate.Id = BaseTemplateIdList[i];
                        break;
                    }
                }

                List <Entity> ps = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                           .addCondition("TaskTemplateID", "=", BaseTemplate.Id.ToString()), typeof(models.Parameter));
                for (int i = 0; i < PreprocessingParameters.Count(); i++)
                {
                    PreprocessingParameters[i].ParameterId   = ps[i].ID;
                    PreprocessingParameters[i].ParameterName = ((models.Parameter)ps[i]).Name;
                }

                List <Entity> selections = Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                            .addCondition("TaskTemplateID", "=", BaseTemplate.Id.ToString()), typeof(Selection));

                int newTaskTemplateId;
                PreprocessingTemplate pp = new PreprocessingTemplate();
                if (IsUsingExitingTemplate)
                {
                    newTaskTemplateId = TemplateId;
                }
                else
                {
                    pp.PreprocessingName = PreprocessingName;
                    pp.BaseTemplate      = BaseTemplate;
                    string templateName = (NewTemplateName == null || NewTemplateName == "") ? "New Preprocessing Template" : NewTemplateName;
                    newTaskTemplateId = new DataHelper().addTaskTemplate(templateName, Task.ID, pp);
                }

                List <PreprocessingParameterViewModel> preprocessingParametersTemp = new List <PreprocessingParameterViewModel>();
                List <string>    types      = new List <string>();
                List <Parameter> parameters = new List <Parameter>();
                List <services.preprocessing.normalization.IParameter> listOfIParameters = new List <services.preprocessing.normalization.IParameter>();
                List <int> paramIds = new List <int>();
                foreach (Entity sel in selections)
                {
                    int newSelectionId = PreprocessingManager.PrepManager.addNewEntitiesForPreprocessing(
                        ((Selection)sel).Name, ((Selection)sel).RowCount, Task.ID, newTaskTemplateId);
                    int oldSelectionId = sel.ID;
                    foreach (PreprocessingParameterViewModel prepParam in PreprocessingParameters)
                    {
                        string prepType   = prepParam.Type;
                        int    oldParamId = prepParam.ParameterId;

                        if ("бинаризация".Equals(prepType))
                        {
                            bool          canCreate     = true;
                            List <Entity> newParameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                                  .addCondition("TaskTemplateID", "=", newTaskTemplateId.ToString()), typeof(models.Parameter));
                            List <Entity> newAddedParameters = new List <Entity>();
                            List <string> classes            = PreprocessingManager.PrepManager.getClasses(oldSelectionId, newTaskTemplateId, oldParamId);
                            foreach (Entity entity in newParameters)
                            {
                                //TypeParameter type = getTypeParameter(prepType, oldParamId);
                                if (classes.Contains(((models.Parameter)entity).Name))
                                //(((models.Parameter)entity).Name.Equals(prepParam.ParameterName)) && ((models.Parameter)entity).Type.Equals(type)) ?????
                                {
                                    newAddedParameters.Add(entity);
                                    canCreate = false;
                                }
                            }
                            if (canCreate)
                            {
                                newParameters = PreprocessingManager.PrepManager.getNewParametersForBinarizationType(oldSelectionId, newTaskTemplateId, oldParamId);
                            }
                            else
                            {
                                newParameters = newAddedParameters;
                            }

                            int i = 0;
                            foreach (Entity entity in newParameters)
                            {
                                PreprocessingParameterViewModel ppVM = new PreprocessingParameterViewModel();
                                ppVM.Position      = i + 1;
                                ppVM.ParameterId   = entity.ID;
                                ppVM.ParameterName = ((models.Parameter)entity).Name;
                                ppVM.Type          = "бинаризация";
                                if (canCreate)
                                {
                                    preprocessingParametersTemp.Add(ppVM);
                                    types.Add("бинаризация");
                                    parameters.Add(new view_models.Parameter(ppVM.ParameterName, ppVM.Type, ((models.Parameter)entity).Comment, entity.ID));
                                }

                                i++;
                                services.preprocessing.normalization.IParameter p = PreprocessingManager.PrepManager.executePreprocessing(newSelectionId, oldSelectionId, oldParamId, prepType, i - 1, entity.ID);
                                continue;
                            }
                        }
                        else
                        {
                            models.Parameter oldParam = ((models.Parameter)services.DatabaseManager.SharedManager.entityById(oldParamId, typeof(models.Parameter)));

                            TypeParameter type          = getTypeParameter(prepType, oldParamId);
                            bool          canCreate     = true;
                            int           newParamId    = -1;
                            List <Entity> newParameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                                  .addCondition("TaskTemplateID", "=", newTaskTemplateId.ToString()), typeof(models.Parameter));
                            foreach (Entity entity in newParameters)
                            {
                                if (((models.Parameter)entity).Name.Equals(prepParam.ParameterName) && ((models.Parameter)entity).Type.Equals(type))
                                {
                                    newParamId = entity.ID;
                                    canCreate  = false;
                                    break;
                                }
                            }
                            if (canCreate)
                            {
                                newParamId = new DataHelper().addOneParameter(prepParam.ParameterName, oldParam.Comment, newTaskTemplateId, prepParam.Position,
                                                                              oldParam.IsOutput, type);
                                PreprocessingParameterViewModel ppVM = new PreprocessingParameterViewModel();
                                ppVM.ParameterName = prepParam.ParameterName;
                                ppVM.Position      = prepParam.Position;
                                ppVM.Type          = prepParam.Type;
                                ppVM.ParameterId   = newParamId;

                                parameters.Add(new view_models.Parameter(prepParam.ParameterName, prepParam.Type, oldParam.Comment, newParamId));
                                types.Add(prepType);
                                preprocessingParametersTemp.Add(ppVM);
                            }

                            services.preprocessing.normalization.IParameter p = PreprocessingManager.PrepManager.executePreprocessing(newSelectionId, oldSelectionId, oldParamId, prepType, prepParam.Position, newParamId);
                            listOfIParameters.Add(p);
                            paramIds.Add(newParamId);
                        }
                    }
                    SerializableList list = new SerializableList();
                    list.selectionId    = newSelectionId;
                    list.parameterIds   = paramIds;
                    list.prepParameters = listOfIParameters;
                    pp.info.Add(list);
                }
                if (parameters != null && types != null)
                {
                    pp.parameters = parameters;
                    pp.types      = types;
                    PreprocessingManager.PrepManager.updateTaskTemplate(newTaskTemplateId, pp);
                }
                if (preprocessingParametersTemp != null)
                {
                    PreprocessingParameters = preprocessingParametersTemp.ToArray();
                }
            }

            OnClose?.Invoke(this, null);
        }