Esempio n. 1
0
        private List <Entity> binarizationValues(List <Entity> values, int paramId, int newSelectionId, int parameterPosition)
        {
            DataHelper    helper        = new DataHelper();
            List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", newSelectionId.ToString()), typeof(SelectionRow));

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

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

            foreach (Entity value in values)
            {
                valueStr.Add(((ValueParameter)value).Value);
            }
            EnumeratedParameter p = new EnumeratedParameter(valueStr);

            int index = 0;

            foreach (string value in valueStr)
            {
                int    i   = p.GetInt(value);
                string val = binarization(parameterPosition == i);
                listValues.Add(helper.addValueParameter(selectionRows[index].ID, paramId, val));
                index++;
            }
            DatabaseManager.SharedManager.insertMultipleEntities(listValues);

            return(listValues);
        }
        private void normalizeValues(List <Entity> values, IParameter p, int paramId, int newSelectionId, string prepType)
        {
            List <Entity> listValues    = new List <Entity>();
            DataHelper    helper        = new DataHelper();
            List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", newSelectionId.ToString()), typeof(SelectionRow));

            int index = 0;

            foreach (Entity value in values)
            {
                string val;
                switch (prepType)
                {
                case "Линейная нормализация 1 (к float)":
                    val = normalize(1, value, p);
                    break;

                case "Нелинейная нормализация 2 (к float)":
                    val = normalize(2, value, p);
                    break;

                case "нормализация 3 (к int)":
                    val = normalize(3, value, p);
                    break;

                default:
                    val = "";
                    break;
                }
                listValues.Add(helper.addValueParameter(selectionRows[index].ID, paramId, val));
                index++;
            }
            DatabaseManager.SharedManager.insertMultipleEntities(listValues);
        }
Esempio n. 3
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();
                }
            }
        }
        public List <string> getAppropriateValues(List <string> obtainedValues, int selectionId, int parameterId)
        {
            //
            //       float valueDec = Convert.ToSingle(value.Replace(".", ","));
            //Формируем выборку для заданного параметра
            List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", selectionId.ToString()), typeof(SelectionRow));

            List <float> valuesForCurrParameter = new List <float>();

            foreach (Entity selRow in selectionRows)
            {
                int           selectionRowId       = selRow.ID;
                List <Entity> valueForParamFromRow = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                           .addCondition("ParameterID", "=", parameterId.ToString())
                                                                           .addCondition("SelectionRowID", "=", selectionRowId.ToString()), typeof(ValueParameter));

                string numberStr = ((ValueParameter)valueForParamFromRow[0]).Value;
                float  number    = Convert.ToSingle(numberStr.Replace(".", ","));
                valuesForCurrParameter.Add(number);
            }
            valuesForCurrParameter.Sort();
            //находим в выборке соответсвующее значение для value (переданного аргумента) и присваиваем его appropriateValue
            float         step = 0;
            List <string> appropriateValues = new List <string>();

            for (int j = 0; j < obtainedValues.Count; j++)
            {
                float obtainedValue = Convert.ToSingle(obtainedValues[j].Replace(".", ","));

                float prev = valuesForCurrParameter[0];
                for (int i = 1; i < valuesForCurrParameter.Count; i++)
                {
                    float next = valuesForCurrParameter[i];
                    step = Math.Abs(next - prev);
                    if ((obtainedValue - prev) <= (step / 2))
                    {
                        appropriateValues.Add(prev.ToString());
                        break;
                    }
                    prev = next;
                }
                //проверка на выод за границу диапозона значений в выборке ???
                if (appropriateValues[j].Equals(""))
                {
                    float firstVal = valuesForCurrParameter[0];
                    float lastVal  = valuesForCurrParameter[valuesForCurrParameter.Count - 1];
                    if (obtainedValue >= lastVal)
                    {
                        appropriateValues[j] = lastVal.ToString();
                    }
                    else if (obtainedValue <= firstVal)
                    {
                        appropriateValues[j] = firstVal.ToString();
                    }
                }
            }
            return(appropriateValues);
        }
Esempio n. 5
0
        public SelectionRow addSelectionRow(int selectionId, int rowNumber)
        {
            SelectionRow entity = new SelectionRow();

            entity.SelectionID = selectionId;
            entity.Number      = rowNumber;
            return(entity);
        }
        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;
                    }
                }
            }
        }
Esempio n. 7
0
        public AddTodoTaskPage(TodoList todoList) : base("AddTodoTaskPage")
        {
            Subscribe <NewTodoTaskEvent>(TodoTask);

            AddTitleRow("Title");

            AddHeaderRow("TodoList");

            var selectionList = new SelectionItemList <TodoList>();

            foreach (var serviceNode in ServiceNodeManager.Current.ServiceNodes)
            {
                var todo = TodoApp.Current.GetTodo(serviceNode);
                if (todo != null)
                {
                    foreach (var list in todo.TodoLists)
                    {
                        selectionList.Add(new SelectionItem <TodoList>(list, TodoApp.GetTodoListName(list)));
                    }
                }
            }

            _listSelection = AddSelectionRows(selectionList, todoList);
            _listSelection.SelectionChanged = SelectionChanged;

            Status.Add(T("ListStatus"), (sv) =>
            {
                return(_listSelection.Selection != null);
            });

            AddFooterRow();

            _editor = AddEditorRow("", "Text");
            _editor.SetDetailViewIcon(Icons.Pencil);

            FocusElement = _editor.Edit;

            Status.Add(_editor.Edit, T("TextStatus"), (sv, edit, newText, oldText) =>
            {
                return(!string.IsNullOrWhiteSpace(newText) && newText.Length >= 2);
            });


            AddSubmitRow("Submit", Submit);

            AddHeaderRow("Common.SubmitAccount");
            _submitAccount = AddRow(new SubmitAccountButtonRow <TodoListSubmitAccount>(null, this, SelectSubmitAccount));
            AddInfoRow("Common.SubmitAccountInfo");
            AddFooterRow();
            SelectionChanged(todoList);

            Status.Add(T("SubmitAccountStatus"), (sv) =>
            {
                return(_submitAccount.SubmitAccount != null);
            });
        }
Esempio n. 8
0
        public void deleteSelection(Entity selection)
        {
            List <Entity> listForDelete = new List <Entity>();

            int          templateId = ((Selection)selection).TaskTemplateID;
            TaskTemplate template   = ((TaskTemplate)services.DatabaseManager.SharedManager.entityById(templateId, typeof(TaskTemplate)));

            List <Entity> taskTemplates = TaskTemplate.where (new Query("TaskTemplate").addTypeQuery(TypeQuery.select)
                                                              .addCondition("TaskID", "=", template.TaskID.ToString()), typeof(TaskTemplate));
            List <Entity> selections = new List <Entity>();

            foreach (Entity entity in taskTemplates)
            {
                List <Entity> sels = TaskTemplate.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                         .addCondition("TaskTemplateId", "=", entity.ID.ToString())
                                                         .addCondition("Name", "=", ((Selection)selection).Name), typeof(Selection));
                if (sels.Count == 0)
                {
                    continue;
                }
                else
                {
                    listForDelete = listForDelete.Concat(sels).ToList();
                    selections    = selections.Concat(sels).ToList();
                }
            }

            foreach (Entity sel in selections)
            {
                List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("SelectionID", "=", sel.ID.ToString()), typeof(SelectionRow));
                listForDelete = listForDelete.Concat(selectionRows).ToList();
                for (int i = 0; i < selectionRows.Count; i++)
                {
                    List <Entity> values = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                 .addCondition("SelectionRowID", "=", selectionRows[i].ID.ToString()), typeof(ValueParameter));
                    listForDelete = listForDelete.Concat(values).ToList();
                }

                List <Entity> learnedSolverList = LearnedSolver.where (new Query("LearnedSolver").addTypeQuery(TypeQuery.select)
                                                                       .addCondition("SelectionID", "=", sel.ID.ToString()), typeof(LearnedSolver));
                listForDelete = listForDelete.Concat(learnedSolverList).ToList();
                foreach (Entity lSolver in learnedSolverList)
                {
                    List <Entity> learningQualityList = LearningQuality.where (new Query("LearningQuality").addTypeQuery(TypeQuery.select)
                                                                               .addCondition("LearnedSolverID", "=", lSolver.ID.ToString()), typeof(LearningQuality));
                    listForDelete = listForDelete.Concat(learningQualityList).ToList();
                }
            }

            DatabaseManager.SharedManager.deleteMultipleEntities(listForDelete);
        }
Esempio n. 9
0
        public List <List <Object> > getListValues(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> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", selectionId.ToString()), typeof(SelectionRow));

            List <List <Object> > values = new List <List <Object> >();

            int stepRow = 0;

            foreach (Entity selRow in selectionRows)
            {
                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));

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

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

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

                    default:
                        break;
                    }

                    stepParam++;
                }
                stepRow++;
            }

            return(values);
        }
Esempio n. 10
0
        public void deleteTask(Entity task)
        {
            List <Entity> listForDelete = new List <Entity>();

            listForDelete.Add(task);

            List <Entity> templates = TaskTemplate.where (new Query("TaskTemplate").addTypeQuery(TypeQuery.select)
                                                          .addCondition("TaskID", "=", task.ID.ToString()), typeof(TaskTemplate));

            listForDelete = listForDelete.Concat(templates).ToList();

            foreach (Entity template in templates)
            {
                List <Entity> parameters = models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                   .addCondition("TaskTemplateID", "=", template.ID.ToString()), typeof(models.Parameter));
                listForDelete = listForDelete.Concat(parameters).ToList();

                List <Entity> selections = Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                            .addCondition("TaskTemplateID", "=", template.ID.ToString()), typeof(Selection));
                listForDelete = listForDelete.Concat(selections).ToList();

                foreach (Entity selection in selections)
                {
                    List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                      .addCondition("SelectionID", "=", selection.ID.ToString()), typeof(SelectionRow));
                    listForDelete = listForDelete.Concat(selectionRows).ToList();

                    for (int i = 0; i < selectionRows.Count; i++)
                    {
                        List <Entity> values = ValueParameter.where (new Query("ValueParameter").addTypeQuery(TypeQuery.select)
                                                                     .addCondition("SelectionRowID", "=", selectionRows[i].ID.ToString()), typeof(ValueParameter));
                        listForDelete = listForDelete.Concat(values).ToList();
                    }

                    List <Entity> learnedSolverList = LearnedSolver.where (new Query("LearnedSolver").addTypeQuery(TypeQuery.select)
                                                                           .addCondition("SelectionID", "=", selection.ID.ToString()), typeof(LearnedSolver));
                    listForDelete = listForDelete.Concat(learnedSolverList).ToList();
                    foreach (Entity lSolver in learnedSolverList)
                    {
                        List <Entity> learningQualityList = LearningQuality.where (new Query("LearningQuality").addTypeQuery(TypeQuery.select)
                                                                                   .addCondition("LearnedSolverID", "=", lSolver.ID.ToString()), typeof(LearningQuality));
                        listForDelete = listForDelete.Concat(learningQualityList).ToList();
                    }
                }
            }

            DatabaseManager.SharedManager.deleteMultipleEntities(listForDelete);
        }
        private void processWithoutPreprocessing(List <Entity> values, int paramId, int newSelectionId)
        {
            DataHelper    helper        = new DataHelper();
            List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                              .addCondition("SelectionID", "=", newSelectionId.ToString()), typeof(SelectionRow));

            int           index      = 0;
            List <Entity> listValues = new List <Entity>();

            foreach (Entity value in values)
            {
                string val = withoutPreprocessing(value);
                listValues.Add(helper.addValueParameter(selectionRows[index].ID, paramId, val));
                index++;
            }
            DatabaseManager.SharedManager.insertMultipleEntities(listValues);
        }
Esempio n. 12
0
        public int addNewEntitiesForPreprocessing(string selectionName, int countRows, int taskTemplateId)
        {
            DataHelper helper = new DataHelper();

            string type        = "develop";
            int    selectionId = helper.addSelection(selectionName, taskTemplateId, countRows, type);

            List <Entity> listSelRow = new List <Entity>(countRows);

            for (int i = 0; i < countRows; i++)
            {
                SelectionRow entity = helper.addSelectionRow(selectionId, i + 1);
                listSelRow.Add(entity);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(listSelRow);

            return(selectionId);
        }
        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);
        }
Esempio n. 14
0
        private void addParameters(string filePath, char delimiter, ParameterCreationViewModel[] parameters,
                                   int selectionId, int taskTemplateId, bool isUsingExitingTemplate)
        {
            using (StreamReader sr = new StreamReader(filePath))
            {
                DataHelper helper  = new DataHelper();
                int        rowStep = 0;
                string     line    = sr.ReadLine();
                if (line != "" && HasHeader)
                {
                    line = sr.ReadLine();
                }
                int paramCount = parameters.Length;

                List <Entity>         listSelRow    = new List <Entity>(countRows);
                List <Entity>         listParams    = new List <Entity>(paramCount * countRows);
                List <ValueParameter> listValParams = new List <ValueParameter>(paramCount * countRows);
                while (line != "" && line != null)
                {
                    rowStep++;
                    SelectionRow entity = helper.addSelectionRow(selectionId, rowStep);
                    listSelRow.Add(entity);

                    string[] values = line.Split(delimiter);

                    int index = -1;
                    foreach (string value in values)
                    {
                        index++;
                        string        parameterName = parameters[index].Name;
                        string        comment       = parameters[index].Comment == null ? "" : parameters[index].Comment;
                        int           isOutput      = getIsOutput(parameters[index].KindOfParameter);
                        TypeParameter type          = getTypeParameter(parameters[index].Type);

                        if (rowStep == 1)
                        {
                            dms.models.Parameter parameter = helper.addParameter(parameterName, comment, taskTemplateId, index, isOutput, type);
                            listParams.Add(parameter);
                        }
                        listValParams.Add(helper.addValueParameter(entity.ID, -1 /*parameter.ID*/, value));
                    }

                    line = sr.ReadLine();
                }

                DatabaseManager.SharedManager.insertMultipleEntities(listSelRow);
                if (!isUsingExitingTemplate)
                {
                    DatabaseManager.SharedManager.insertMultipleEntities(listParams);
                }
                else
                {
                    listParams = dms.models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                             .addCondition("TaskTemplateID", "=", taskTemplateId.ToString()), typeof(dms.models.Parameter));
                }

                List <Entity> list     = new List <Entity>(countRows * paramCount);
                int           selRowId = 0;
                for (int i = 0; i < paramCount * countRows; i++)
                {
                    if (i % paramCount == 0)
                    {
                        selRowId = i == 0 ? listSelRow[0].ID : listSelRow[i / paramCount].ID;
                    }
                    int paramId = listParams[i % paramCount].ID;

                    ValueParameter param = listValParams[i];
                    param.ParameterID    = paramId;
                    param.SelectionRowID = selRowId;
                    list.Add(param);
                }
                DatabaseManager.SharedManager.insertMultipleEntities(list);
            }
        }
        private void learnSolver()
        {
            foreach (LearningModel learningModel in LearningList)
            {
                TaskTemplate taskTemplate = (TaskTemplate)TaskTemplate.where (new Query("TaskTemplate").addTypeQuery(TypeQuery.select)
                                                                              .addCondition("Name", "=", learningModel.SelectedPreprocessing), typeof(TaskTemplate))[0];
                Selection selection = (Selection)Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("TaskTemplateID", "=", taskTemplate.ID.ToString())
                                                                  .addCondition("Name", "=", learningModel.SelectedSelection), typeof(Selection))[0];
                int countRows = selection.RowCount;
                LearningScenario learningScenario = (LearningScenario)LearningScenario.where (new Query("LearningScenario").addTypeQuery(TypeQuery.select)
                                                                                              .addCondition("Name", "=", learningModel.SelectedScenario), typeof(LearningScenario))[0];

                List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("SelectionID", "=", selection.ID.ToString()), typeof(SelectionRow));
                List <Entity> parameters = dms.models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                       .addCondition("TaskTemplateID", "=", selection.TaskTemplateID.ToString()), typeof(dms.models.Parameter));
                int       stepRow    = 0;
                float[][] inputData  = new float[countRows][];
                float[]   outputData = new float[countRows];
                for (int i = 0; i < countRows; i++)
                {
                    inputData[i] = new float[parameters.Count - 1];
                }
                int outputParam = 0;
                for (int i = 0; i < parameters.Count; i++)
                {
                    if (((models.Parameter)parameters[i]).IsOutput == 1)
                    {
                        outputParam = parameters[i].ID;
                    }
                }

                string[][] vals  = Selection.valuesOfSelectionId(selection.ID);
                float[][]  fvals = new float[selection.RowCount][];
                for (int i = 0; i < selection.RowCount; i++)
                {
                    fvals[i] = new float[parameters.Count];
                    for (int j = 0; j < parameters.Count - 1; j++)
                    {
                        inputData[i][j] = float.Parse(vals[i][j].Replace(".", ","));
                    }
                    outputData[i] = float.Parse(vals[i][parameters.Count - 1].Replace(".", ","));
                }
                ISolver isolver = null;
                if (Solver.Description is PerceptronTopology)
                {
                    PerceptronTopology topology = Solver.Description as PerceptronTopology;
                    isolver = new PerceptronManaged(topology);
                }
                else if (Solver.Description is ConvNNTopology)
                {
                    ConvNNTopology topology = Solver.Description as ConvNNTopology;
                    isolver = new ConvNNManaged(topology);
                }
                else if (Solver.Description is WardNNTopology)
                {
                    WardNNTopology topology = Solver.Description as WardNNTopology;
                    isolver = new WardNNManaged(topology);
                }
                else if (Solver.Description is KohonenNNTopology)
                {
                    KohonenNNTopology topology = Solver.Description as KohonenNNTopology;
                    isolver = new KohonenManaged(topology);
                }
                else if (Solver.Description is TreeDescription)
                {
                    TreeDescription topology = Solver.Description as TreeDescription;
                    isolver = new DecisionTree(topology);
                }
                else if (Solver.Description is TreeDescriptionC4_5)
                {
                    TreeDescriptionC4_5 topology = Solver.Description as TreeDescriptionC4_5;
                    isolver = new DecisionTreeC4_5(topology);
                }
                else
                {
                    throw new EntryPointNotFoundException();
                }
                SeparationOfDataSet s  = new SeparationOfDataSet(isolver, learningScenario, inputData, outputData);
                LearnedSolver       ls = new LearnedSolver()
                {
                    SelectionID        = selection.ID,
                    LearningScenarioID = learningScenario.ID,
                    TaskSolverID       = Solver.ID,
                    Soul = s.separationAndLearn(selection.ID, outputParam)
                };
                ls.save();

                LearningQuality lq = new LearningQuality()
                {
                    LearnedSolverID = ls.ID,
                    MistakeTrain    = Convert.ToInt32(s.MistakeTrain),
                    MistakeTest     = Convert.ToInt32(s.MistakeTest),
                    ClosingError    = s.ClosingError
                };
                lq.save();
            }
            OnClose?.Invoke(this, null);
        }
Esempio n. 16
0
        private void learnSolver()
        {
            foreach (LearningModel learningModel in LearningList)
            {
                TaskTemplate taskTemplate = (TaskTemplate)TaskTemplate.where (new Query("TaskTemplate").addTypeQuery(TypeQuery.select)
                                                                              .addCondition("Name", "=", learningModel.SelectedPreprocessing), typeof(TaskTemplate))[0];
                Selection selection = (Selection)Selection.where (new Query("Selection").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("TaskTemplateID", "=", taskTemplate.ID.ToString())
                                                                  .addCondition("Name", "=", learningModel.SelectedSelection), typeof(Selection))[0];
                int countRows = selection.RowCount;
                LearningScenario learningScenario = (LearningScenario)LearningScenario.where (new Query("LearningScenario").addTypeQuery(TypeQuery.select)
                                                                                              .addCondition("Name", "=", learningModel.SelectedScenario), typeof(LearningScenario))[0];

                List <Entity> selectionRows = SelectionRow.where (new Query("SelectionRow").addTypeQuery(TypeQuery.select)
                                                                  .addCondition("SelectionID", "=", selection.ID.ToString()), typeof(SelectionRow));
                List <Entity> parameters = dms.models.Parameter.where (new Query("Parameter").addTypeQuery(TypeQuery.select)
                                                                       .addCondition("TaskTemplateID", "=", selection.TaskTemplateID.ToString()), typeof(dms.models.Parameter));
                int       stepRow    = 0;
                float[][] inputData  = new float[countRows][];
                float[]   outputData = new float[countRows];
                for (int i = 0; i < countRows; i++)
                {
                    inputData[i] = new float[parameters.Count - 1];
                }
                int outputParam = 0;
                foreach (Entity selRow in selectionRows)
                {
                    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));
                        if (((dms.models.Parameter)param).IsOutput == 1)
                        {
                            outputParam = param.ID;
                            string outputValue = ((ValueParameter)value[0]).Value;
                            float  outputFloat;
                            if (float.TryParse(outputValue, out outputFloat))
                            {
                                outputData[stepRow] = outputFloat;
                            }
                        }
                        else
                        {
                            inputData[stepRow][stepParam] = float.Parse(((ValueParameter)value[0]).Value, CultureInfo.InvariantCulture.NumberFormat);
                        }
                        stepParam++;
                    }
                    stepRow++;
                }
                ISolver isolver = null;
                if (Solver.Description is PerceptronTopology)
                {
                    PerceptronTopology topology = Solver.Description as PerceptronTopology;
                    isolver = new PerceptronManaged(topology);
                }
                else if (Solver.Description is ConvNNTopology)
                {
                    ConvNNTopology topology = Solver.Description as ConvNNTopology;
                    isolver = new ConvNNManaged(topology);
                }
                else if (Solver.Description is WardNNTopology)
                {
                    WardNNTopology topology = Solver.Description as WardNNTopology;
                    isolver = new WardNNManaged(topology);
                }
                else if (Solver.Description is TreeDescription)
                {
                    TreeDescription topology = Solver.Description as TreeDescription;
                    isolver = new DecisionTree(topology);
                }
                else
                {
                    throw new EntryPointNotFoundException();
                }
                SeparationOfDataSet s  = new SeparationOfDataSet(isolver, learningScenario, inputData, outputData);
                LearnedSolver       ls = new LearnedSolver()
                {
                    SelectionID        = selection.ID,
                    LearningScenarioID = learningScenario.ID,
                    TaskSolverID       = Solver.ID,
                    Soul = s.separationAndLearn(selection.ID, outputParam)
                };
                ls.save();

                LearningQuality lq = new LearningQuality()
                {
                    LearnedSolverID = ls.ID,
                    MistakeTrain    = Convert.ToInt32(s.MistakeTrain),
                    MistakeTest     = Convert.ToInt32(s.MistakeTest),
                    ClosingError    = s.ClosingError
                };
                lq.save();
            }
            OnClose?.Invoke(this, null);
        }
Esempio n. 17
0
        public PurchasePage(ChainPage chainPage, List <ChainItem <PurchaseInfo> > purchases) : base("PurchasePage")
        {
            _chainPage = chainPage;

            AddTitleRow("Title");

            AddHeaderRow("Type");

            _type = AddSelectionRows(new SelectionItem <PurchaseTypes>[] {
                new SelectionItem <PurchaseTypes>(PurchaseTypes.Feature, Tr.Get("PurchaseTypes.Feature")),
                new SelectionItem <PurchaseTypes>(PurchaseTypes.Subscription, Tr.Get("PurchaseTypes.Subscription"))
            }, PurchaseTypes.Feature);

            AddFooterRow();

            AddHeaderRow("Ids");

            _purchaseId = AddEntryRow(null, "PurchaseId");
            _purchaseId.SetDetailViewIcon(Icons.CreditCardFront);
            _groupId = AddEntryRow(null, "GroupId");
            _groupId.SetDetailViewIcon(Icons.LayerGroup);

            AddFooterRow("IdsInfo");

            AddHeaderRow("Info");

            _description = AddEntryRow(null, "Description");
            _description.SetDetailViewIcon(Icons.AlignLeft);
            _price = AddEntryRow(null, "Price");
            _price.SetDetailViewIcon(Icons.MoneyBillAlt, 22);

            _duration = AddEntryRow(null, "Duration");
            _duration.SetDetailViewIcon(Icons.Stopwatch);

            AddFooterRow();

            Status.Add(_purchaseId.Edit, T("PurchaseIdStatus"), (sv, entry, newText, oldText) =>
            {
                if (int.TryParse(newText, out var id))
                {
                    foreach (var p in purchases)
                    {
                        if (p.Item.PurchaseItemId == id)
                        {
                            return(false);
                        }
                    }
                    return(true);
                }

                if (!newText.IsNullOrEmpty())
                {
                    entry.Text = oldText;
                }

                return(false);
            }).Add(_groupId.Edit, T("GroupIdStatus"), (sv, entry, newText, oldText) =>
            {
                if (short.TryParse(newText, out var id))
                {
                    foreach (var p in purchases)
                    {
                        if (p.Item.PurchaseGroupId == id && _type.Selection != p.Item.PurchaseType)
                        {
                            return(false);
                        }
                    }
                    return(true);
                }

                if (!newText.IsNullOrEmpty())
                {
                    entry.Text = oldText;
                }

                return(false);
            }).Add(_description.Edit, T("DescriptionStatus"), (sv, entry, newText, oldText) =>
            {
                return(!string.IsNullOrWhiteSpace(newText));
            }).Add(_price.Edit, T("PriceStatus"), StatusValidators.HeleusCoinValidator).
            Add(_duration.Edit, T("DurationStatus"), (sv, entry, newText, oldText) =>
            {
                if (_type.Selection == PurchaseTypes.Feature)
                {
                    if (!newText.IsNullOrEmpty())
                    {
                        entry.Text = oldText;
                    }
                    return(true);
                }

                return(StatusValidators.PositiveNumberValidator(sv, entry, newText, oldText));
            });

            _type.SelectionChanged = (item) =>
            {
                Status.ReValidate();
                return(Task.CompletedTask);
            };

            AddSubmitRow("Submit", Submit);
        }
Esempio n. 18
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);
        }
Esempio n. 19
0
 public SelectionRowChangeEvent(SelectionRow row, global::System.Data.DataRowAction action)
 {
     this.eventRow    = row;
     this.eventAction = action;
 }
Esempio n. 20
0
        public TodoTaskPage(TodoList todoList, TodoTask task) : base("TodoTaskPage")
        {
            Subscribe <NewTodoTaskEvent>(TodoItem);
            Subscribe <TodoTaskStatusEvent>(TodoItemStatus);

            _todoList = todoList;
            _task     = task;

            AddTitleRow("Title");

            AddHeaderRow("StatusHeader");

            var statusItems = new SelectionItemList <TodoTaskStatusTypes>
            {
                new SelectionItem <TodoTaskStatusTypes>(TodoTaskStatusTypes.Open, Tr.Get("ItemStatusTypes.Open")),
                new SelectionItem <TodoTaskStatusTypes>(TodoTaskStatusTypes.Closed, Tr.Get("ItemStatusTypes.Closed"))
            };

            _status = AddSelectionRows(statusItems, task.Status);
            _status.SelectionChanged = StatusChanged;

            _statusButton           = AddSubmitButtonRow("SubmitStatus", StatusButton);
            _statusButton.RowStyle  = Theme.SubmitButton;
            _statusButton.IsEnabled = false;

            _status.Buttons[0].SetDetailViewIcon(Icons.Circle);
            _status.Buttons[1].SetDetailViewIcon(Icons.CircleCheck);

            foreach (var b in _status.Buttons)
            {
                Status.AddBusyView(b);
            }
            Status.AddBusyView(_statusButton);

            AddFooterRow();

            if (task.Status == TodoTaskStatusTypes.Open)
            {
                AddHeaderRow("ItemHeader");

                _text = AddEditorRow(task.Text, "Text");
                _text.SetDetailViewIcon(Icons.Pencil);
                _text.Edit.TextChanged += Edit_TextChanged;

                _textButton           = AddSubmitButtonRow("SubmitText", Submit);
                _textButton.RowStyle  = Theme.SubmitButton;
                _textButton.IsEnabled = false;

                Status.AddBusyView(_text.Edit);
                Status.AddBusyView(_textButton);

                AddFooterRow();
            }

            _history = AddHeaderRow("HistoryHeader");
            AddFooterRow();

            _transactionInfo = AddHeaderRow("TransactionInfo");
            AddFooterRow();

            AddHeaderRow("Common.SubmitAccount");
            _submitAccount = AddRow(new SubmitAccountButtonRow <GroupSubmitAccount>(this, () => todoList.ServiceNode.GetSubmitAccounts <GroupSubmitAccount>(todoList.Index), todoList.ListId.ToString()));
            AddInfoRow("Common.SubmitAccountInfo");
            AddFooterRow();

            AddHeaderRow("DeleteHeader");

            var delete = AddButtonRow("SubmitDelete", Delete);

            delete.RowStyle = Theme.CancelButton;
            delete.SetDetailViewIcon(Icons.TrashAlt);

            Status.AddBusyView(delete);

            AddFooterRow();

            _ = BuildHistory();
        }
Esempio n. 21
0
        public InvitationPage(ServiceNode serviceNode, long todoListId, long accountId = 0) : base("InvitationPage")
        {
            Subscribe <TodoListInvitationSentEvent>(InvitationResult);

            EnableStatus();

            AddTitleRow("Title");

            var todo = TodoApp.Current.GetTodo(serviceNode);

            if (todo.TodoLists.Count == 0)
            {
                AddInfoRow("NoLists");
                return;
            }

            AddHeaderRow("List");

            TodoList @default      = null;
            var      listSelection = new SelectionItemList <TodoList>();

            foreach (var list in todo.TodoLists)
            {
                listSelection.Add(new SelectionItem <TodoList>(list, TodoApp.GetTodoListName(list)));
                if (list.ListId == todoListId)
                {
                    @default = list;
                }
            }

            _listSelection = AddSelectionRows(listSelection, @default);
            _listSelection.SelectionChanged = SelectionChanged;

            Status.Add(T("ListStatus"), (sv) => {
                return(_listSelection.Selection != null);
            });

            AddFooterRow();

            AddHeaderRow("AccountId");

            _accountId = AddEntryRow(accountId > 0 ? accountId.ToString() : null, "AccountId");
            Status.Add(_accountId.Edit, T("AccountStatus"), (sv, edit, n, o) =>
            {
                var valid = StatusValidators.PositiveNumberValidator(sv, edit, n, o);
                if (_profile != null)
                {
                    _profile.IsEnabled = valid;
                    if (valid)
                    {
                        _profile.AccountId = long.Parse(n);
                    }
                    else
                    {
                        _profile.AccountId = 0;
                    }
                }
                return(valid);
            });

            _profile           = AddRow(new ProfileButtonRow(0, Profile));
            _profile.IsEnabled = accountId > 0;
            Status.AddBusyView(_profile);

            AddFooterRow();

            AddIndex       = AddSubmitRow("Submit", Submit);
            AddIndexBefore = true;

            _password = AddPasswordRow("", "Password");
            Status.Add(_password.Edit, T("PasswordStatus"), (sv, edit, newtext, oldtext) => true);

            AddIndex       = null;
            AddIndexBefore = false;

            AddHeaderRow("Common.SubmitAccount");
            _submitAccount = AddRow(new SubmitAccountButtonRow <GroupSubmitAccount>(null, this, SelectSubmitAccount));
            AddInfoRow("Common.SubmitAccountInfo");
            AddFooterRow();

            Status.Add(T("SubmitAccountStatus"), (sv) =>
            {
                return(_submitAccount.SubmitAccount != null);
            });

            SelectionChanged(@default);
        }
Esempio n. 22
0
        public RegisterPage() : base("RegisterPage")
        {
            EnableStatus();

            Subscribe <CoreAccountRegisterEvent>(AccountRegistered);

            AddTitleRow("Title");

            AddHeaderRow("NewAccount");

            _name = AddEntryRow("", "Name");
            _name.SetDetailViewIcon(Icons.Pencil);
            _password1 = AddPasswordRow("", "Password1");
            var password2 = AddPasswordRow("", "Password2");

            Status.Add(_password1.Edit, T("PasswordStatus", WalletApp.MinPasswordLength), (sv, entry, newText, oldText) =>
            {
                var pw1 = _password1.Edit.Text;
                var pw2 = password2.Edit.Text;

                return(WalletApp.IsValidPassword(pw1) && WalletApp.IsValidPassword(pw2) && pw1 == pw2);
            }).
            AddBusyView(password2);

            AddFooterRow();


            AddHeaderRow();

            AddLinkRow("Common.DataLicence", Tr.Get("Link.DataLicence"));
            var _agree = AddSwitchRow("Agree", Tr.Get("Common.DataLicence"));

            AddFooterRow();

            Status.

            Add(_agree.Switch, T("AgreeStatus", Tr.Get("Common.DataLicence")), StatusValidators.IsToggled);

            password2.Edit.TextChanged += (sender, e) =>
            {
                Status.ReValidate();
            };

            AddSubmitRow("Register", Register);

            AddHeaderRow("SignatureKeyInfo");

            _selectionRow = AddSelectionRows(new SelectionItemList <AuthorizeType>
            {
                new SelectionItem <AuthorizeType>(AuthorizeType.Random, Tr.Get("AuthorizeType.Random")),
                new SelectionItem <AuthorizeType>(AuthorizeType.Passphrase, Tr.Get("AuthorizeType.Passphrase"))
            }, AuthorizeType.Random);
            _selectionRow.SelectionChanged = SecretTypeChanged;

            AddSeparatorRow();

            _keyRow = AddEditorRow("", "SignatureKey");
            _keyRow.SetDetailViewIcon(Icons.Key);

            Status.Add(_keyRow.Edit, T("AuthorizeAccountPage.KeyStatus"), (sv, edit, newText, oldText) =>
            {
                return(StatusValidators.HexValidator(64, sv, edit, newText, oldText));
            });

            AddInfoRow("AuthorizeAccountPage.SignatureKeyInfo");

            AddFooterRow();

            AddHeaderRow();
            AddLinkRow("Common.TermsOfUse", Tr.Get("Link.TermsOfUse"));
            AddLinkRow("Common.Privacy", Tr.Get("Link.Privacy"));
            AddFooterRow();

            IsBusy = true;
            Update();
        }
Esempio n. 23
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;
        }