public SolverTree(models.Task task,
                   models.TaskSolver[] per,
                   models.TaskSolver[] desCART,
                   models.TaskSolver[] desC4_5,
                   models.TaskSolver[] wards,
                   models.TaskSolver[] convnets,
                   models.TaskSolver[] kohnets,
                   TaskTreeViewModel vm) : base("Решатели")
 {
     ParentTask = task.Name;
     Content    = new ObservableCollection <TreeSection>
     {
         new PerceptronTree(task, per, vm),
         new DecisionTreesCARTTree(task, desCART, vm),
         new DecisionTreesC4_5Tree(task, desC4_5, vm),
         new WardTree(task, wards, vm),
         new ConvNNTree(task, convnets, vm),
         new KohonenTree(task, kohnets, vm)
     };
     createSolverCommand = new ActionHandler(() =>
     {
         SolverCreationViewModel t = new SolverCreationViewModel(task);
         t.OnClose += (s, p) => vm.UpdateTaskTree();
         vm.SendRequestCreateView(t);
     }, o => true);
 }
Exemplo n.º 2
0
        public PerceptronInfoViewModel(models.Task task, models.TaskSolver solver)
        {
            TaskName = task.Name;
            Name     = solver.Name;

            PerceptronTopology topology = solver.Description as PerceptronTopology;

            Layers = new Layer[topology.GetLayersCount() - 1];
            var neurons = topology.GetNeuronsInLayersCount();
            var delays  = topology.HasLayersDelayWeight();
            var afs     = topology.GetActivationFunctionsNames();

            CountInputNeurons = Convert.ToInt32(topology.GetInputsCount());
            for (int i = 0; i < Layers.Length - 1; i++)
            {
                Layers[i] = new Layer
                {
                    Name             = String.Format("{0} слой", i + 1),
                    ActivateFunction = afs[i],
                    NeuronsCount     = neurons[i + 1],
                    HasW0            = delays[i]
                };
            }
            Layers[Layers.Length - 1] = new Layer
            {
                Name             = "Выходной слой",
                ActivateFunction = afs[Layers.Length - 1],
                NeuronsCount     = neurons[Layers.Length],
                HasW0            = delays[Layers.Length - 1]
            };
        }
        public void CreateSolver(string name, models.Task task)
        {
            int layers = 2 + HiddenLayers.Count;

            int[]    neurons = new int[layers];
            bool[]   delays  = new bool[layers - 1];
            string[] afs     = new string[layers - 1];

            neurons[0] = InputNeuronsCount;
            for (int i = 1; i < layers - 1; i++)
            {
                neurons[i] = HiddenLayers[i - 1].NeuronsCount;
            }
            neurons[layers - 1] = OutputLayer.NeuronsCount;

            for (int i = 0; i < layers - 2; i++)
            {
                delays[i] = HiddenLayers[i].IsUsingW0;
                afs[i]    = HiddenLayers[i].SelectedAF;
            }
            delays[layers - 2] = OutputLayer.IsUsingW0;
            afs[layers - 2]    = OutputLayer.SelectedAF;

            PerceptronTopology t = new PerceptronTopology(layers, neurons, delays, afs);

            TaskSolver ts = new TaskSolver()
            {
                Name        = name,
                TypeName    = "Perceptron",
                TaskID      = task.ID,
                Description = t
            };

            ts.save();
        }
Exemplo n.º 4
0
 public TaskTree(models.Task task,
                 models.Selection[] sel,
                 models.TaskSolver[] per,
                 models.TaskSolver[] desCART,
                 models.TaskSolver[] desC4_5,
                 models.TaskSolver[] wards,
                 models.TaskSolver[] convnets,
                 models.TaskSolver[] kohnets,
                 string[] solv,
                 TaskTreeViewModel vm)
 {
     Title   = task.Name;
     Content = new ObservableCollection <TreeSection>
     {
         new SelectionTree(task, sel, vm),
         new SolverTree(task, per, desCART, desC4_5, wards, convnets, kohnets, vm),
         new SolutionsTree(Title, solv, vm)
     };
     deleteCommand = new ActionHandler(
         () =>
     {
         new dms.services.preprocessing.DataHelper().deleteTask(task);
         vm.UpdateTaskTree();
     }, e => true);
     showInfoDialogCommand = new ActionHandler(() =>
     {
         TaskInfoViewModel t = new TaskInfoViewModel(task);
         vm.SendRequestCreateView(t);
     }, e => true);
     showPreprocessingCreationHandler = new ActionHandler(() =>
     {
         PreprocessingViewModel t = new PreprocessingViewModel(task, -1);
         vm.SendRequestCreateView(t);
     }, e => true);
 }
Exemplo n.º 5
0
        private void importTask(ArchiveTask archTask)
        {
            models.Task task = new models.Task(archTask);
            task.save();
            List <Entity> temps = new List <Entity>();

            foreach (ArchiveTemplate archTemp in archTask.Templates)
            {
                TaskTemplate temp = new TaskTemplate(archTemp);
                temp.TaskID = task.ID;
                temps.Add(temp);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(temps);
            foreach (ArchiveTemplate archTemp in archTask.Templates)
            {
                archTemp.ID = temps[archTask.Templates.IndexOf(archTemp)].ID;
                importSelectionsAndParameters(archTemp);
            }
            List <Entity> solvers = new List <Entity>();

            foreach (ArchiveTaskSolver archSolv in archTask.Solvers)
            {
                TaskSolver solv = new TaskSolver(archSolv);
                solv.TaskID = task.ID;
                solvers.Add(solv);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(solvers);
            foreach (ArchiveTaskSolver archSolv in archTask.Solvers)
            {
                archSolv.ID = solvers[archTask.Solvers.IndexOf(archSolv)].ID;
            }
        }
        public KohonenInfoViewModel(models.Task task, models.TaskSolver solver)
        {
            this.task  = task;
            taskSolver = solver;

            KohonenNNTopology t = solver.Description as KohonenNNTopology;

            Inputs           = Convert.ToInt32(t.GetInputsCount());
            Outputs          = Convert.ToInt32(t.GetOutputsCount());
            Width            = t.GetLayerWidth();
            Height           = t.GetLayerHeight();
            Metric           = t.GetMetric();
            ClassInitializer = t.GetClassInitializer();
            ClassEps         = t.GetClassEps();
            Name             = solver.Name;
            TaskName         = task.Name;
            TileGraphs       = new ObservableCollection <TileGraphViewModel>();
            SizeOfTile       = 10;
            paramNames       = new string[] { };
            data             = new List <Tuple <int2d, double> >[] { };

            addHandler = new ActionHandler(
                () =>
            {
                TileGraphs.Add(new TileGraphViewModel(Width, Height, SizeOfTile)
                {
                    DeleteCallback = DeleteGraph,
                    ParameterNames = paramNames,
                    Data           = data
                });
            },
                (e) => true);
        }
Exemplo n.º 7
0
 public CreateSolutionViewModel(string taskName)
 {
     canSave = true;
     Task    = (models.Task)models.Task.where (new Query("Task").addTypeQuery(TypeQuery.select)
                                               .addCondition("Name", "=", taskName), typeof(models.Task))[0];
     createHandler = new ActionHandler(createSolution, e => CanSave());
     TaskName      = taskName;
     TemplateName  = Templates[0];
 }
Exemplo n.º 8
0
 public DecisionTreesCARTTree(models.Task task, models.TaskSolver[] trees,
                              TaskTreeViewModel vm) : base("Деревья решений CART", trees.Select(x => x.Name).ToArray())
 {
     Content = new ObservableCollection <TreeSection>();
     for (int i = 0; i < trees.Length; i++)
     {
         Content.Add(new SolverLeaf(task, trees[i], "DecisionTreeCART", vm));
     }
 }
 public KohonenTree(models.Task task, models.TaskSolver[] koh_nets,
                    TaskTreeViewModel vm) : base("Сети Кохонена", koh_nets.Select(x => x.Name).ToArray())
 {
     Content = new ObservableCollection <TreeSection>();
     for (int i = 0; i < koh_nets.Length; i++)
     {
         Content.Add(new SolverLeaf(task, koh_nets[i], "Сеть Кохонена", vm));
     }
 }
Exemplo n.º 10
0
 public WardTree(models.Task task, models.TaskSolver[] wards,
                 TaskTreeViewModel vm) : base("Сети Ворда", wards.Select(x => x.Name).ToArray())
 {
     Content = new ObservableCollection <TreeSection>();
     for (int i = 0; i < wards.Length; i++)
     {
         Content.Add(new SolverLeaf(task, wards[i], "Нейронная сеть Ворда", vm));
     }
 }
 public LearnSolverViewModel(models.Task task, TaskSolver taskSolver)
 {
     TaskName     = task.Name;
     SolverName   = taskSolver.Name;
     solver       = taskSolver;
     LearningList = new ObservableCollection <LearningModel>();
     addHandler   = new ActionHandler(() => Add(new LearningModel(this, task, taskSolver)), e => true);
     learnHandler = new ActionHandler(learnSolver, e => LearningList.All(lm => lm.CanSolve));
 }
Exemplo n.º 12
0
        public void CreateSolver(string name, models.Task task)
        {
            InputLayer input = new InputLayer
            {
                NeuronsCount      = InputNeuronsCount,
                ForwardConnection = InputLayerAC
            };
            var layers = new List <WardLayer>();

            for (int i = 0; i < HiddenLayers.Count; i++)
            {
                var groups = new List <NeuronsGroup>();
                for (int j = 0; j < HiddenLayers[i].Groups.Count; j++)
                {
                    groups.Add(new NeuronsGroup
                    {
                        NeuronsCount       = HiddenLayers[i].Groups[j].NeuronsCount,
                        ActivationFunction = HiddenLayers[i].Groups[j].SelectedAF,
                        HasDelay           = HiddenLayers[i].Groups[j].IsUsingW0
                    });
                }
                layers.Add(new WardLayer
                {
                    ForwardConnection = HiddenLayers[i].AC,
                    Groups            = groups
                });
            }

            var groupsOutput = new List <NeuronsGroup>();

            for (int j = 0; j < OutputLayer.Groups.Count; j++)
            {
                groupsOutput.Add(new NeuronsGroup
                {
                    NeuronsCount       = OutputLayer.Groups[j].NeuronsCount,
                    ActivationFunction = OutputLayer.Groups[j].SelectedAF,
                    HasDelay           = OutputLayer.Groups[j].IsUsingW0
                });
            }
            layers.Add(new WardLayer
            {
                ForwardConnection = OutputLayer.AC,
                Groups            = groupsOutput
            });

            WardNNTopology wnn = new WardNNTopology(input, layers);

            TaskSolver ts = new TaskSolver()
            {
                Name        = name,
                TypeName    = "WardNN",
                TaskID      = task.ID,
                Description = wnn
            };

            ts.save();
        }
Exemplo n.º 13
0
 public PerceptronTree(models.Task task, models.TaskSolver[] perceptrons,
                       TaskTreeViewModel vm) : base("Персептроны", perceptrons.Select(x => x.Name).ToArray())
 {
     Content = new ObservableCollection <TreeSection>();
     for (int i = 0; i < perceptrons.Length; i++)
     {
         Content.Add(new SolverLeaf(task, perceptrons[i], "Персептрон", vm));
     }
 }
Exemplo n.º 14
0
 public ConvNNTree(models.Task task, models.TaskSolver[] convs,
                   TaskTreeViewModel vm) : base("Сверточные НС", convs.Select(x => x.Name).ToArray())
 {
     Content = new ObservableCollection <TreeSection>();
     for (int i = 0; i < convs.Length; i++)
     {
         Content.Add(new SolverLeaf(task, convs[i], "Сверточная нейронная сеть", vm));
     }
 }
        public DecisionTreeC4_5InfoViewModel(models.Task task, models.TaskSolver solver)
        {
            TaskName = task.Name;
            Name     = solver.Name;

            TreeDescriptionC4_5 td = solver.Description as TreeDescriptionC4_5;

            MaxTreeDepth = td.MaxDepth;
        }
Exemplo n.º 16
0
        public SolveViewModel(models.Task task, models.TaskSolver solver)
        {
            TaskID      = task.ID;
            SolvingList = new ObservableCollection <SolvingInstance>();
            SolverName  = solver.Name;
            TaskName    = task.Name;
            List <LearningInfo>         learningList   = new List <LearningInfo>();
            List <models.LearnedSolver> learnedSolvers = models.LearnedSolver.learnedSolversOfTaskSolverID(solver.ID);

            foreach (models.LearnedSolver learnedSolver in learnedSolvers)
            {
                models.Selection selection = (models.Selection)models.Selection.getById(learnedSolver.SelectionID, typeof(models.Selection));
                List <models.LearningQuality> qualities  = models.LearningQuality.qualitiesOfSolverId(learnedSolver.ID);
                models.LearningScenario       scenario   = (models.LearningScenario)models.LearningScenario.getById(learnedSolver.LearningScenarioID, typeof(models.LearningScenario));
                models.TaskTemplate           template   = (models.TaskTemplate)models.TaskTemplate.getById(selection.TaskTemplateID, typeof(models.TaskTemplate));
                models.LearningQuality        quality    = (qualities != null && qualities.Count > 0) ? qualities[0] : null;
                List <models.Parameter>       parameters = models.Parameter.parametersOfTaskTemplateId(template.ID);
                int outputParam = 0;
                foreach (models.Parameter param in parameters)
                {
                    if (param.IsOutput == 1)
                    {
                        outputParam = param.ID;
                        break;
                    }
                }
                learningList.Add(new LearningInfo
                {
                    SelectionID          = selection.ID,
                    ParameterID          = outputParam,
                    SelectionName        = selection.Name,
                    LearningScenarioName = scenario.Name,
                    PreprocessingName    = template.Name,
                    TestMistake          = (quality != null) ? quality.MistakeTest : 0,
                    TrainMistake         = (quality != null) ? quality.MistakeTrain : 0,
                    ClosingError         = Convert.ToSingle((quality != null) ? quality.ClosingError : 0),
                    TaskTemplate         = template,
                    LearnedSolver        = learnedSolver
                });
            }
            LearningList = learningList.ToArray();
            addHandler   = new ActionHandler(() =>
            {
                SolvingList.Add(new SolvingInstance(this, this.SelectedLearning.TaskTemplate));
                solveHandler.RaiseCanExecuteChanged();
                saveHandler.RaiseCanExecuteChanged();
                SelectedSolution = Solutions[0];
                NotifyPropertyChanged("SelectedSolution");
                NotifyPropertyChanged("Solutions");
            }, e => SelectedLearning != null);

            solveHandler = new ActionHandler(Solve, e => SolvingList.Count > 0);
            saveHandler  = new ActionHandler(saveSolutions, e => SolvingList.Count > 0);

            SelectedSolution = Solutions[0];
        }
Exemplo n.º 17
0
 public SolverLeaf(models.Task task, models.TaskSolver solver, string solverType,
                   TaskTreeViewModel vm) : base(solver.Name)
 {
     parentTask             = task;
     this.solverType        = solverType;
     this.solver            = solver;
     showSolverInfoHandler  = new ActionHandler(() => vm.SendRequestCreateView(CreateSolverInfoViewModel()), e => true);
     showSolveDialogHandler = new ActionHandler(() => vm.SendRequestCreateView(new SolveViewModel(parentTask, solver)), e => true);
     showLearnDialogHandler = new ActionHandler(() => vm.SendRequestCreateView(new LearnSolverViewModel(parentTask, solver)), e => true);
 }
Exemplo n.º 18
0
 public SolverCreationViewModel(models.Task task)
 {
     parentTask    = task;
     TaskName      = task.Name;
     SolverName    = "Решатель 1";
     SolverTypes   = SolverParameterFactory.Types;
     SelectedType  = SolverTypes[0];
     createHandler = new ActionHandler(CreateSolver, o => Parameters.CanCreateSolver(SolverName, parentTask));
     cancelHandler = new ActionHandler(() => OnClose?.Invoke(this, null), o => true);
 }
Exemplo n.º 19
0
 public void CreateTask()
 {
     if (this.taskName == "")
     {
         return;
     }
     models.Task newTask = new models.Task();
     newTask.Name = this.taskName;
     newTask.save();
     taskCreate.Invoke(true);
     OnClose?.Invoke(this, null);
 }
Exemplo n.º 20
0
        public TaskInfoViewModel(models.Task task)
        {
            TaskName = task.Name;
            List <Entity> taskTemplates = TaskTemplate.where (new Query("TaskTemplate").addTypeQuery(TypeQuery.select)
                                                              .addCondition("TaskID", "=", task.ID.ToString()), typeof(TaskTemplate));

            List <TaskTemplate> prepTemplates = new List <TaskTemplate>();

            Templates = new TemplateViewModel[taskTemplates.Count];
            int step = 0;

            if (taskTemplates.Count != 0)
            {
                foreach (Entity template in taskTemplates)
                {
                    if (((TaskTemplate)template).PreprocessingParameters != null)
                    {
                        prepTemplates.Add((TaskTemplate)template);
                        // really?
                        Templates[step] = new TemplateViewModel(((TaskTemplate)template).ID, step);
                        step++;
                    }
                    else
                    {
                        Templates[step] = new TemplateViewModel(((TaskTemplate)template).ID, step);
                        step++;
                    }
                }
                PreprocessingList = new Preprocessing[prepTemplates.Count];

                int index = 0;
                foreach (TaskTemplate template in prepTemplates)
                {
                    PreprocessingViewModel.PreprocessingTemplate pp =
                        (PreprocessingViewModel.PreprocessingTemplate)template.PreprocessingParameters;
                    List <Parameter>            parameters = pp.parameters;
                    List <string>               types      = pp.types;
                    Tuple <Parameter, string>[] tuple      = new Tuple <Parameter, string> [parameters.Count];
                    for (int i = 0; i < parameters.Count; i++)
                    {//???
                        tuple[i] = new Tuple <Parameter, string>(parameters[i], types[i]);
                    }
                    PreprocessingList[index] = new Preprocessing(pp.PreprocessingName, pp.BaseTemplate.Name, template.Name, tuple, template.ID);

                    index++;
                }
                SelectedTemplate = Templates[0];
            }

            moreHandler = new ActionHandler(() => OnShowPreprocessingDetails?.Invoke(new PreprocessingViewModel(task, SelectedPreprocessing.PerformedTemplateId)), o => SelectedPreprocessing != null);
        }
        public ConvNNInfoViewModel(models.Task task, models.TaskSolver solver)
        {
            TaskName = task.Name;
            Name     = solver.Name;

            var t = solver.Description as ConvNNTopology;

            InputDimention = String.Format("{0}x{1}x{2}", t.GetInputWidth(), t.GetInputHeigth(), t.GetInputDepth());

            ilayers = t.GetLayers().ToArray();
            var volumes = t.GetVolumeDimentions();

            Layers = new ConvNNLayer[ilayers.Length];
            for (int i = 0; i < ilayers.Length; i++)
            {
                if (ilayers[i] is FullyConnectedLayer)
                {
                    Layers[i] = new ConvNNLayer
                    {
                        Number = i + 1,
                        Type   = "FC",
                        Width  = volumes[i].Width,
                        Height = volumes[i].Heigth,
                        Depth  = volumes[i].Depth
                    };
                }
                else if (ilayers[i] is ConvolutionLayer)
                {
                    Layers[i] = new ConvNNLayer
                    {
                        Number = i + 1,
                        Type   = "Conv",
                        Width  = volumes[i].Width,
                        Height = volumes[i].Heigth,
                        Depth  = volumes[i].Depth
                    };
                }
                else if (ilayers[i] is PoolingLayer)
                {
                    Layers[i] = new ConvNNLayer
                    {
                        Number = i + 1,
                        Type   = "Pool",
                        Width  = volumes[i].Width,
                        Height = volumes[i].Heigth,
                        Depth  = volumes[i].Depth
                    };
                }
            }
        }
 public LearningModel(LearnSolverViewModel main, models.Task task, TaskSolver taskSolver)
 {
     CurTaskSolver         = taskSolver;
     Task                  = task;
     deleteHandler         = new ActionHandler(() => main.Delete(this), e => true);
     Selections            = Selections;
     SelectedSelection     = Selections[0];
     SelectedScenario      = LearningScenarios[0];
     Preprocessings        = Preprocessings;
     selectedPreprocessing = Preprocessings[0];
     Number                = -1;
     LearningScenarioID    = -1;
     SelectionID           = -1;
     CanSolve              = true;
 }
        public void CreateSolver(string name, models.Task task)
        {
            KohonenNNTopology t = new KohonenNNTopology(Inputs, Outputs,
                                                        Width, Height, float.Parse(ClassEps),
                                                        SelectedInitializer, SelectedMetric);
            TaskSolver solver = new TaskSolver()
            {
                Name        = name,
                TaskID      = task.ID,
                Description = t,
                TypeName    = "KohonenNet"
            };

            solver.save();
        }
        public void CreateSolver(string name, models.Task task)
        {
            int depth = MaxTreeDepth;

            //WARNING!!!
            //Here must be selected task template
            //and number of inputs and outputs in it.
            TreeDescription td = new TreeDescription(Inputs, Outputs, depth);

            TaskSolver ts = new TaskSolver()
            {
                Name        = name,
                TypeName    = "DecisionTreeCART",
                TaskID      = task.ID,
                Description = td
            };

            ts.save();
        }
Exemplo n.º 25
0
        public void CreateSolver(string name, models.Task task)
        {
            var layers = new List <ILayer>();

            foreach (ConvNNLayerViewModel layerVM in Layers)
            {
                layers.Add(layerVM.LayerParameters.LayerModel);
            }

            var        t  = new ConvNNTopology(InputWidth, InputHeight, InputDepth, layers);
            TaskSolver ts = new TaskSolver()
            {
                Name        = name,
                TypeName    = "ConvNN",
                TaskID      = task.ID,
                Description = t
            };

            ts.save();
        }
Exemplo n.º 26
0
        public SelectionTree(models.Task task, models.Selection[] selections,
                             TaskTreeViewModel vm) : base("Выборки")
        {
            createSelection = new ActionHandler(() =>
            {
                SelectionCreationViewModel t = new SelectionCreationViewModel(task.ID, vm);
                vm.SendRequestCreateView(t);
            }, e => true);

            ParentTask = task.Name;
            Content    = new ObservableCollection <TreeSection>();
            for (int i = 0; i < selections.Length; i++)
            {
                int          templateId = selections[i].TaskTemplateID;
                TaskTemplate template   = ((TaskTemplate)dms.services.DatabaseManager.SharedManager.
                                           entityById(templateId, typeof(TaskTemplate)));
                if (template.PreprocessingParameters == null)
                {
                    Content.Add(new SelectionLeaf(task, selections[i], vm));
                }
            }
        }
Exemplo n.º 27
0
 public SelectionLeaf(models.Task task, models.Selection selection, TaskTreeViewModel vm)
 {
     Title         = selection.Name;
     parentTask    = task.Name;
     deleteHandler = new ActionHandler(
         () =>
     {
         new dms.services.preprocessing.DataHelper().deleteSelection(selection);
         vm.UpdateTaskTree();
     }, e => true);
     showSelectionInfoHandler = new ActionHandler(
         () =>
     {
         SelectionInfoViewModel t = new SelectionInfoViewModel(task.ID, selection.ID);
         vm.SendRequestCreateView(t);
     }, e => true);
     showSelectionLearnHandler = new ActionHandler(
         () =>
     {
         var t = new SelectionLearnStatisticViewModel(selection, task.Name);
         vm.SendRequestCreateView(t);
     }, e => true);
 }
Exemplo n.º 28
0
        public async Task <IActionResult> AddTask(int userId, string taskText)
        {
            if (!IsUserAuthenticated(userId))
            {
                return(BadRequest());
            }

            var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId);

            var newTask = new models.Task()
            {
                TaskText = taskText,
                IsDone   = false,
                User     = user
            };

            await _context.Tasks.AddAsync(newTask);

            _context.SaveChanges();

            var toDoTasks = await _context.Tasks.Where(x => x.IsDone == false && x.User.Id == userId).ToListAsync();

            return(StatusCode(201, toDoTasks));
        }
Exemplo n.º 29
0
 public ArchiveTask(models.Task task)
 {
     this.ID   = task.ID;
     this.Name = task.Name;
 }
 public bool CanCreateSolver(string name, models.Task task)
 {
     return(true);
 }