// Запуск мониторинга 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; }