Exemplo n.º 1
0
 // Запуск мониторинга
 private void c_RunMonitoringMenu_Click(object sender, EventArgs e)
 {
     if (!m_MainNeuralNet.GetTrainNet)
     {
         MessageBox.Show("Neural network not trained, train it in monitoring tools.");
         return;
     }
     if (!m_Monitoring.GetRun)
     {
         m_Monitoring.RunMonitoring();
         GraphicsForObjects.DrawingStatusMonitoring(p_MonitoringStatusPanel, m_Monitoring.GetRun);
     }
 }
        // Запуск обучения и вывод результатов
        private void StartLearning()
        {
            try
            {
                object o_Errors = m_MainNet.TeacherTraining(i_InputCount, i_OutputCount, s_InputTrainDataFile, s_OutputTrainDataFile);

                c_GraphPerfErrors.Invoke((Action) delegate
                {
                    t_TrainingLog.Text += "Training completed successfully";
                    t_TrainingLog.Text += Environment.NewLine;
                    t_TrainingLog.Text += "Average learning error: " + ((object[])o_Errors)[0].ToString();
                    t_Error.Text        = ((object[])o_Errors)[0].ToString();
                    // Построение графиков
                    double[] d_PerfErrors = (double[])(((object[])o_Errors)[1]);
                    double[,] d_AbsErrors = (double[, ])(((object[])o_Errors)[2]);

                    // Построение первого графика
                    c_GraphPerfErrors.Series["Values"].Points.Clear();
                    bool b_Test = false;
                    for (int i = 5; i < d_PerfErrors.Length; i++)
                    {
                        if (d_PerfErrors[i] < 0.1 || b_Test)
                        {
                            c_GraphPerfErrors.Series["Values"].Points.AddXY(i, d_PerfErrors[i]);
                            b_Test = true;
                        }
                    }
                    // Построение второго графика
                    c_GraphAbsErrors.Series["Delay time, ms"].Points.Clear();
                    c_GraphAbsErrors.Series["Average transfer speed, bps"].Points.Clear();
                    for (int i = 0; i < d_AbsErrors.GetUpperBound(1) + 1; i++)
                    {
                        c_GraphAbsErrors.Series["Delay time, ms"].Points.AddXY(i, d_AbsErrors[0, i]);
                    }
                    for (int i = 0; i < d_AbsErrors.GetUpperBound(1) + 1; i++)
                    {
                        c_GraphAbsErrors.Series["Average transfer speed, bps"].Points.AddXY(i, d_AbsErrors[1, i]);
                    }
                });
                // Запускаем мониторинг, если он был остановлен
                if (b_RunMonitoring)
                {
                    m_Monitoring.RunMonitoring();
                }
            }
            catch (Exception e_Ex)
            {
                MessageBox.Show("Error code: " + Math.Abs(e_Ex.GetHashCode()) + ". Contact Support.");
            }
            b_Run = false;
        }