예제 #1
0
        public Hyperparameters Copy(Hyperparameters individ, string source, string destination)
        {
            Hyperparameters H = individ.Clone();

            var algorithmBranches = H.getNodesByparentID(H.getNodeByName("committee")[0].ID);

            List <Hyperparameters> hs = new List <Hyperparameters>();

            for (int j = 0; j < algorithmBranches.Count; j++)
            {
                var h = new Hyperparameters(H.toJSON(algorithmBranches[j].ID), form1);
                var new_save_folder = destination + "\\" + h.getValueByName("model_name") + "\\";
                //новые пути прописываются в h.json автоматически, если передать объект Hyperparameters по ссылке, а не по значению
                Algorithm.CopyFiles(h, h.getValueByName("save_folder"), new_save_folder);
                hs.Add(h);
            }

            //удаление старых записей
            for (int i = 0; i < algorithmBranches.Count; i++)
            {
                H.deleteBranch(algorithmBranches[i].ID);
            }

            //приращение новых записей к узлу  "committee"
            for (int i = 0; i < algorithmBranches.Count; i++)
            {
                H.addBranch(hs[i], hs[i].nodes[0].name(), H.getNodeByName("committee")[0].ID);
            }

            H.setValueByName("report_path", destination);
            H = H.Clone();
            File.WriteAllText(destination + "\\h.json", H.toJSON(0), System.Text.Encoding.Default);

            return(H);
        }
예제 #2
0
        private void newLog()
        {
            logPath = h.getValueByName("log_path") + DateTime.Now.ToString().Replace(':', '-') + '-' + DateTime.Now.Millisecond.ToString() + ".txt";
            string[] logs;
            try
            {
                logs = System.IO.Directory.GetFiles(h.getValueByName("log_path"));
            }
            catch (System.IO.DirectoryNotFoundException e)
            {
                System.IO.Directory.CreateDirectory(h.getValueByName("log_path"));
                logs = new string[0];
            }

            if (logs.Length > maxlogFilesCount)
            {
                System.IO.FileInfo[] logFilesInfo = new FileInfo[logs.Length];
                for (int i = 0; i < logs.Length; i++)
                {
                    logFilesInfo[i] = new FileInfo(logs[i]);
                }

                for (int i = 0; i < logs.Length; i++)
                {
                    var youngest    = logFilesInfo[i];
                    int youngestInd = i;
                    for (int j = i; j < logs.Length; j++)
                    {
                        if (youngest.CreationTime < logFilesInfo[j].CreationTime)
                        {
                            youngest    = logFilesInfo[j];
                            youngestInd = j;
                        }
                    }
                    var temp = logFilesInfo[i];
                    logFilesInfo[i]           = logFilesInfo[youngestInd];
                    logFilesInfo[youngestInd] = temp;
                }
                for (int i = maxlogFilesCount; i < logs.Length; i++)
                {
                    logFilesInfo[i].Delete();
                }
            }
        }
예제 #3
0
        public void train()
        {
            trainingResponse = "";

            h.setValueByName("state", "обучение..");

            if (h.getValueByName("input_file") == null)
            {
                log("файл датасета не задан");
            }
            File.WriteAllText(h.getValueByName("json_file_path"), h.toJSON(0), System.Text.Encoding.Default);
            args = "--json_file_path " + '"' + h.getValueByName("json_file_path") + '"';

            trainingResponse = Task.Run(() => form1.I.executePythonScript(getValueByName("train_script_path"), args)).Result;

            try
            {
                trainingResponse = trainingResponse.Substring(trainingResponse.IndexOf('{'));
                Hyperparameters responseH = new Hyperparameters(trainingResponse, form1);
                //   var avg = responseH.getValueByName("AVG");
                //   if (avg != null)
                //       h.setValueByName("AVG", avg);

                h.setValueByName("state", "обучение завершено");
                log(responseH.getValueByName("response"));

                string[] predictionsCSV = null;
                //попытка прочитать данные из файла, полученного из скрипта
                try
                {
                    predictionsCSV = File.ReadAllLines(h.getValueByName("predictions_file_path"));
                }
                catch { }
                //если данные имеются, то определить показатели точности прогнозирования
                if (predictionsCSV != null)
                {
                    try
                    {
                        getAccAndStdDev(predictionsCSV);
                    }
                    catch
                    {
                        log("Не удалось прочитать файл с тестовым прогнозом", Color.Red);
                        h.setValueByName("state", "Не удалось прочитать файл с тестовым прогнозом");
                    }
                }
                else
                {
                    log("Не удалось прочитать файл с тестовым прогнозом", Color.Red);
                    h.setValueByName("state", "Не удалось прочитать файл с тестовым прогнозом");
                }
            }
            catch
            {
                log("Не удалось спарсить RESPONSE");

                h.setValueByName("AVG", "-1");
                h.setValueByName("accuracy", "0");
                h.setValueByName("stdDev", "0");

                h.setValueByName("state", "ошибка при обучении");
            }
            // return "обучение алгоритма " + name + "заверешно.";
        }
예제 #4
0
        public Infrastructure(MainForm form1)
        {
            this.form1 = form1;
            h          = new Hyperparameters(form1, "Infrastructure");

            form1.logBox.Text += (Environment.MachineName);
            if (Environment.MachineName == "DESKTOP-B3G20T0")
            {
                form1.logBox.Font = new System.Drawing.Font(form1.logBox.Font.FontFamily, 8);
            }
            form1.collectLogWhileItFreezed = new List <logItem>();

            /////////    чтене файла конфигурации    ///////////////////////
            var configLines = File.ReadAllLines("CONFIG.txt");

            bool is_newPC = true;

            for (int i = 0; i < configLines.Length; i++)
            {
                //параметры конфигурации начинаются со строки содержащей имя компа
                if (configLines[i].Contains(Environment.MachineName))
                {
                    is_newPC = false;
                    for (int j = i + 1; j < configLines.Length; j++)
                    {
                        //параметры конфигурации заканчиваются, когда встречается пустая строка
                        if (configLines[j] != "")
                        {
                            try
                            {
                                h.add(configLines[j]);
                            }
                            catch { }
                        }
                        else
                        {
                            break;
                        }
                    }
                    break;
                }
            }
            ////////////////////////////////////////////////////////

            if (is_newPC | h.getValueByName("mode") == null)
            {
                showModeSelector();
            }
            else
            {
                newLog();
            }
            // ИНИЦИАЛИЗАЦИЯ ГЛАВНОЙ ФОРМЫ



            DpiFix();
            form1.WindowState = FormWindowState.Minimized;

            if (logPath != null)
            {
                form1.vis = new MultiParameterVisualizer(form1.picBox, form1);

                mode = h.getValueByName("mode");
                if (mode != "Агент")
                {
                    startAgentManager();
                    form1.log("");
                    //  agentManagerView = new AgentManagerView(agentManager);
                    //   agentManagerView.Show();
                }
                form1.pathPrefix = h.getValueByName("path_prefix");

                form1.log("");
                form1.WindowState = FormWindowState.Maximized;
            }
            else
            {
            }
        }