//public double[][] MainProcess() //{ // for (int i = 0; i < NumPattern; i++) // { // ANNModel.OutInputLayer = ArrPattern[i]; // DblActual_Forecast[1][i] = ANNModel.FeedforwardTraining(); // } // DblActual_Forecast[0] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[0]); // DblActual_Forecast[1] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[1]); // return DblActual_Forecast; //} public double[][] MainProcessTrend() { double[] dblTempForecast; for (int i = 0; i < NumPattern; i++) { ANNModel.OutInputLayer = ArrPattern[i]; dblTempForecast = ANNModel.FeedforwardTraining(); //Xử lý kết quả dự đoán từ 3 node về xu hướng xác định if (dblTempForecast[0] > dblTempForecast[1] && dblTempForecast[0] > dblTempForecast[2]) { DblActual_Forecast[1][i] = -1;// DOWNTREND } else if ((dblTempForecast[1] > dblTempForecast[2] && dblTempForecast[1] > dblTempForecast[0])) { DblActual_Forecast[1][i] = 0;// NOTREND } else { DblActual_Forecast[1][i] = 1;// UPTREND } } //DblActual_Forecast[0] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[0]); //DblActual_Forecast[1] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[1]); return(DblActual_Forecast); }
/// <summary> /// Deserilization of run condition /// </summary> /// <param name="p"></param> public void ActivatePanel(ANNModel model) { //prepare graphs PrepareGraphs(model); //update model updateChartData(model.ActualV, model.PredictedV); this.zedModel.RestoreScale(zedModel.GraphPane); }
/// <summary> /// Deserilization of run condition /// </summary> /// <param name="p"></param> public void ActivatePanel(ActiveModelData data, ANNModel model) { SetParameters(data); //clear previous data if exist lossFunction.Clear(); evalFunciton.Clear(); actualData.Clear(); predictedData.Clear(); //prepare graphs PrepareGraphs(model); //update loss and eval for (int i = 0; i < model.LossData.Count; i++) { updateChartFitness(i, model.LossData[i], model.EvalData[i], false); } //update mdoel updateChartData(model.ActualT, model.PredictedT); zedFitness.RestoreScale(zedFitness.GraphPane); this.zedModel.RestoreScale(zedModel.GraphPane); }
public void Show() { var page1 = new WizardPage(); page1.hasBackButton = false; page1.hasCancelButton = true; page1.hasNextButton = true; page1.hasFinishButton = false; page1.cancelAction = () => { page1.Close(); }; page1.Title = "Neural Network Model Wizard"; page1.HeaderTitle = "Step 1 - Model Management"; page1.HeaderDescription = "Select an Action"; page1.FooterText = "Click 'Next' to Continue."; var dl = c.GetDefaultContainer(); dl.Width = Width; dl.CreateAndAddLabelRow2("Select an action:"); dl.CreateAndAddEmptySpace(); dl.CreateAndAddEmptySpace(); var rl = new RadioButtonList { Orientation = Orientation.Vertical }; rl.Spacing = new Size(10, 10); rl.Items.Add("Create and Train a New Model"); rl.Items.Add("Load an Existing Model"); rl.SelectedIndex = 0; page1.nextAction = () => { switch (rl.SelectedIndex) { case 0: CurrentModel = new ANNModel(); Application.Instance.Invoke(() => DisplayPage_LoadData()); break; case 1: CurrentModel = new ANNModel(); Application.Instance.Invoke(() => DisplayPage_LoadModel()); break; } page1.Close(); }; dl.CreateAndAddControlRow(rl); var scrollable = new Scrollable { Content = dl, Border = BorderType.None, Size = new Size(Width, Height), ExpandContentHeight = true }; page1.Init(Width, Height); page1.Topmost = false; page1.ContentContainer.Add(scrollable); page1.Show(); }
void Init() { nf = SimObject.FlowSheet.FlowsheetOptions.NumberFormat; su = SimObject.FlowSheet.FlowsheetOptions.SelectedUnitSystem; CurrentModel = new ANNModel(); }
/// <summary> /// Initi props for charts /// </summary> public void PrepareGraphs(ANNModel model) { //clear prev. state zedModel.GraphPane.CurveList.Clear(); // // predictedData = new LineItem("Predicted", null, null, Color.Blue, ZedGraph.SymbolType.None, 1); predictedData.Symbol.Fill = new Fill(Color.Blue); predictedData.Symbol.Size = 1; // actualData = new LineItem("Actual", null, null, Color.Red, ZedGraph.SymbolType.None, 1); actualData.Symbol.Fill = new Fill(Color.Red); actualData.Symbol.Size = 1; // if (model.OutputDim == 1) { predictedData = new LineItem("Predicted", null, null, Color.Blue, ZedGraph.SymbolType.None, 1); predictedData.Symbol.Fill = new Fill(Color.Blue); predictedData.Symbol.Size = 1; // actualData = new LineItem("Actual", null, null, Color.Red, ZedGraph.SymbolType.None, 1); actualData.Symbol.Fill = new Fill(Color.Red); actualData.Symbol.Size = 1; zedModel.GraphPane.YAxis.Scale.MaxAuto = true; zedModel.GraphPane.YAxis.Scale.MinAuto = true; zedModel.GraphPane.YAxis.MajorGrid.IsVisible = false; zedModel.GraphPane.XAxis.MajorGrid.IsVisible = false; zedModel.GraphPane.YAxis.Scale.MajorStepAuto = true; zedModel.GraphPane.YAxis.Scale.MinorStepAuto = true; zedModel.GraphPane.XAxis.Scale.MajorStep = 1; zedModel.GraphPane.XAxis.Scale.MinorStep = 0; } else { Classes = model.Classes; max = model.Classes.Count - 1; predictedData = new LineItem("Predicted", null, null, Color.Red, ZedGraph.SymbolType.Circle, 0); predictedData.Symbol.Fill = new Fill(Color.Red); predictedData.Symbol.Size = 5; actualData = new LineItem("Actual", null, null, Color.Blue, ZedGraph.SymbolType.Diamond, 0); actualData.Symbol.Border = new Border(Color.Blue, 0.5f); actualData.Symbol.Fill = new Fill(Color.Blue); actualData.Symbol.Size = 4; zedModel.GraphPane.YAxis.ScaleFormatEvent += YAxis_ScaleFormatEvent; //zedModel.GraphPane.XAxis.Scale.Min = 0; zedModel.GraphPane.YAxis.Scale.Min = -0.1; zedModel.GraphPane.YAxis.Scale.Max = max + 0.2; zedModel.GraphPane.YAxis.MajorGrid.DashOff = 0; zedModel.GraphPane.YAxis.MajorGrid.IsVisible = true; zedModel.GraphPane.XAxis.MajorGrid.DashOff = 0; zedModel.GraphPane.XAxis.MajorGrid.IsVisible = false; zedModel.GraphPane.YAxis.Scale.MajorStep = 1; zedModel.GraphPane.YAxis.Scale.MinorStep = 1; zedModel.GraphPane.XAxis.Scale.MajorStep = 1; zedModel.GraphPane.XAxis.Scale.MinorStep = 1; } zedModel.GraphPane.Title.Text = "ANN Iteration Simulation"; zedModel.GraphPane.XAxis.Title.Text = "Samples"; zedModel.GraphPane.YAxis.Title.Text = model.Label; zedModel.GraphPane.YAxis.MajorGrid.IsZeroLine = false; zedModel.GraphPane.CurveList.Add(actualData); zedModel.GraphPane.CurveList.Add(predictedData); }
public void Reset(ANNModel model) { ResetChart(); PrepareGraphs(model); }
public void Reset(ANNModel model) { ResetChart(); PrepareGraphs(model); SetParameters(ActiveModelData.GetDefaults()); }
public void Run(ANNModel model, ActiveModelData setData, Action <int, float, float, (List <List <float> >, List <List <float> >, List <List <float> >), (List <List <float> >, List <List <float> >, List <List <float> >)> report, CancellationToken token)
//public void LoadDataSet(double[][] trainingSet) //{ // NumPattern = trainingSet.Length; // ArrActual = new double[NumPattern][]; // ArrPredict = new double[NumPattern][]; // ArrPattern = new double[NumPattern][]; // for (int i = 0; i < NumPattern; i++) // { // ArrActual[i] = trainingSet[i][ANNParameterBUS.InputNode]; // ArrPattern[i] = new double[ANNParameterBUS.InputNode]; // for (int j = 0; j < ANNParameterBUS.InputNode; j++) // { // ArrPattern[i][j] = trainingSet[i][j]; // } // } // ANNModel = new ANNModelBUS(); //} //public void Main() //{ // //Khởi tạo bộ trọng số ngẫu nhiên cho mô hình // ANNModel.InitialWeight(); // TSCFDCostFunction(); // int loop = 1; // bool bContinue = true; // MeasureBUS measureBUS = new MeasureBUS(); // while (bContinue) // { // for (int i = 0; i < NumPattern; i++) // { // ANNModel.OutInputLayer = ArrPattern[i]; // ArrPredict[i] = ANNModel.FeedforwardTraining(); // } // Error = measureBUS.NMSE(ArrActual, ArrPredict); // if (Error <= 0.01 || loop >= ANNParameterBUS.MaxEpoch) // { // bContinue = false; // ANNModel.SaveModelFile(); // //ghi nhận độ lỗi và số vòng lặp của quá trình train // ANNModel.SaveError_MaxLoop(Error, loop); // } // else // { // for (int i = 0; i < NumPattern; i++) // { // ANNModel.OutInputLayer = ArrPattern[i]; // ANNModel.FeedforwardTraining(); // ANNModel.ErrorBackpropagationTraining(ArrDesiredValue[i]); // } // } // loop++; // } //} public void Main(int measureType) { //Khởi tạo bộ trọng số ngẫu nhiên cho mô hình ANNModel.InitialWeight(); //TSCFDCostFunction(); int loop = 1; bool bContinue = true; MeasureBUS measureBUS = new MeasureBUS(); while (bContinue) { for (int i = 0; i < NumPattern; i++) { ANNModel.OutInputLayer = ArrPattern[i]; ArrPredicts[i] = ANNModel.FeedforwardTraining(); } switch (measureType) { case MSE: Convert2CaculateErrorMeasure(); Error = measureBUS.MSE(ArrTempActuals, ArrTempPredicts); break; case NMSE: Convert2CaculateErrorMeasure(); Error = measureBUS.NMSE(ArrTempActuals, ArrTempPredicts); break; case RMSE: Convert2CaculateErrorMeasure(); Error = measureBUS.RMSE(ArrTempActuals, ArrTempPredicts); break; case SIGN: Convert2CaculateErrorMeasure(); Error = measureBUS.Sign(ArrTempActuals, ArrTempPredicts); break; } bool bResult = CompareError_Accurancy(Error, ANNParameterBUS.Accuracy, measureType); if (bResult == true || loop >= ANNParameterBUS.MaxEpoch) { bContinue = false; ANNModel.SaveModelFile(); //ghi nhận độ lỗi và số vòng lặp của quá trình train ANNModel.SaveError_MaxLoop(Error, loop); } else { for (int i = 0; i < NumPattern; i++) { ANNModel.OutInputLayer = ArrPattern[i]; ANNModel.FeedforwardTraining(); ANNModel.ErrorBackpropagationTraining(ArrActuals[i]); } } loop++; } }